public void When_FailedDateRangeBlocksExistInTargetPeriodAndNumberIsGreaterThanBlocksLimit_ThenReturnOldestBlocksUpToCountLimit()
        {
            // ARRANGE
            var now            = DateTime.UtcNow;
            var taskExecution1 = _executionHelper.InsertOverrideTaskExecution(_taskDefinitionId, new TimeSpan(0, 1, 0), now.AddMinutes(-32), now.AddMinutes(-1));
            var block1         = _blocksHelper.InsertDateRangeBlock(_taskDefinitionId, now.AddMinutes(-2), now.AddMinutes(-1));
            var block2         = _blocksHelper.InsertDateRangeBlock(_taskDefinitionId, now.AddMinutes(-12), now.AddMinutes(-11));
            var block3         = _blocksHelper.InsertDateRangeBlock(_taskDefinitionId, now.AddMinutes(-22), now.AddMinutes(-21));
            var block4         = _blocksHelper.InsertDateRangeBlock(_taskDefinitionId, now.AddMinutes(-32), now.AddMinutes(-31));

            _blocksHelper.InsertBlockExecution(taskExecution1, block1, now.AddMinutes(-2), now.AddMinutes(-2), now.AddMinutes(-1), BlockExecutionStatus.Failed);
            _blocksHelper.InsertBlockExecution(taskExecution1, block2, now.AddMinutes(-12), now.AddMinutes(-12), now.AddMinutes(-11), BlockExecutionStatus.Failed);
            _blocksHelper.InsertBlockExecution(taskExecution1, block3, now.AddMinutes(-22), now.AddMinutes(-22), now.AddMinutes(-21), BlockExecutionStatus.Failed);
            _blocksHelper.InsertBlockExecution(taskExecution1, block4, now.AddMinutes(-32), now.AddMinutes(-32), now.AddMinutes(-31), BlockExecutionStatus.Completed);

            int blockCountLimit = 2;

            var request = new FindFailedBlocksRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName),
                                                      "1",
                                                      BlockType.DateRange,
                                                      DateTime.UtcNow.AddMinutes(-200),
                                                      DateTime.UtcNow,
                                                      blockCountLimit,
                                                      3);

            // ACT
            var sut          = CreateSut();
            var failedBlocks = sut.FindFailedRangeBlocks(request);

            // ASSERT
            Assert.AreEqual(blockCountLimit, failedBlocks.Count);
            Assert.IsTrue(failedBlocks.Any(x => x.RangeBlockId == block2.ToString()));
            Assert.IsTrue(failedBlocks.Any(x => x.RangeBlockId == block3.ToString()));
        }
        public void When_FailedDateRangeBlocksExistInTargetPeriodAndNumberIsLessThanBlocksLimit_ThenReturnAllFailedBlocks()
        {
            // ARRANGE
            var now            = DateTime.UtcNow;
            var taskExecution1 = _executionHelper.InsertOverrideTaskExecution(_taskDefinitionId, new TimeSpan(0, 1, 0), now.AddMinutes(-12), now.AddMinutes(-1));
            var block1         = _blocksHelper.InsertDateRangeBlock(_taskDefinitionId, now.AddMinutes(-2), now.AddMinutes(-1));
            var block2         = _blocksHelper.InsertDateRangeBlock(_taskDefinitionId, now.AddMinutes(-12), now.AddMinutes(-11));

            _blocksHelper.InsertBlockExecution(taskExecution1, block1, now.AddMinutes(-2), now.AddMinutes(-2), now.AddMinutes(-1), BlockExecutionStatus.Failed);
            _blocksHelper.InsertBlockExecution(taskExecution1, block2, now.AddMinutes(-12), now.AddMinutes(-12), now.AddMinutes(-11), BlockExecutionStatus.Completed);

            var request = new FindFailedBlocksRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName),
                                                      "1",
                                                      BlockType.DateRange,
                                                      DateTime.UtcNow.AddMinutes(-20),
                                                      DateTime.UtcNow,
                                                      2,
                                                      3);

            // ACT
            var sut          = CreateSut();
            var failedBlocks = sut.FindFailedRangeBlocks(request);

            // ASSERT
            Assert.AreEqual(1, failedBlocks.Count);
            Assert.AreEqual(block1.ToString(), failedBlocks[0].RangeBlockId);
        }
        public void When_FailedObjectBlocksExistOutsideTargetPeriod_ThenReturnNoBlocks()
        {
            // ARRANGE
            var now            = DateTime.UtcNow;
            var taskExecution1 = _executionHelper.InsertOverrideTaskExecution(_taskDefinitionId, new TimeSpan(0, 1, 0), now.AddMinutes(-212), now.AddMinutes(-200));
            var block1         = _blocksHelper.InsertObjectBlock(_taskDefinitionId, now.AddMinutes(-200), Guid.NewGuid().ToString());
            var block2         = _blocksHelper.InsertObjectBlock(_taskDefinitionId, now.AddMinutes(-212), Guid.NewGuid().ToString());

            _blocksHelper.InsertBlockExecution(taskExecution1, block1, now.AddMinutes(-200), now.AddMinutes(-200), now.AddMinutes(-201), BlockExecutionStatus.Failed);
            _blocksHelper.InsertBlockExecution(taskExecution1, block2, now.AddMinutes(-212), now.AddMinutes(-212), now.AddMinutes(-211), BlockExecutionStatus.Completed);

            var request = new FindFailedBlocksRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName),
                                                      "1",
                                                      BlockType.Object,
                                                      DateTime.UtcNow.AddMinutes(-20),
                                                      DateTime.UtcNow,
                                                      2,
                                                      3);

            // ACT
            var sut          = CreateSut();
            var failedBlocks = sut.FindFailedObjectBlocks <string>(request);

            // ASSERT
            Assert.AreEqual(0, failedBlocks.Count);
        }
Example #4
0
        public async Task When_FailedNumericRangeBlocksExistOutsideTargetPeriod_ThenReturnNoBlocks()
        {
            // ARRANGE
            var now            = DateTime.UtcNow;
            var taskExecution1 = _executionHelper.InsertOverrideTaskExecution(_taskDefinitionId, new TimeSpan(0, 1, 0), now.AddMinutes(-212), now.AddMinutes(-200));
            var block1         = _blocksHelper.InsertNumericRangeBlock(_taskDefinitionId, 1, 2, now.AddMinutes(-200));
            var block2         = _blocksHelper.InsertNumericRangeBlock(_taskDefinitionId, 3, 4, now.AddMinutes(-212));

            _blocksHelper.InsertBlockExecution(taskExecution1, block1, now.AddMinutes(-200), now.AddMinutes(-200), now.AddMinutes(-201), BlockExecutionStatus.Failed);
            _blocksHelper.InsertBlockExecution(taskExecution1, block2, now.AddMinutes(-212), now.AddMinutes(-212), now.AddMinutes(-211), BlockExecutionStatus.Completed);

            var request = new FindFailedBlocksRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName),
                                                      "1",
                                                      BlockType.NumericRange,
                                                      DateTime.UtcNow.AddMinutes(-20),
                                                      DateTime.UtcNow,
                                                      2,
                                                      3);

            // ACT
            var sut          = CreateSut();
            var failedBlocks = await sut.FindFailedRangeBlocksAsync(request);

            // ASSERT
            Assert.Equal(0, failedBlocks.Count);
        }
Example #5
0
        private List <IObjectBlockContext <T> > GetFailedObjectBlocks <T>(ObjectBlockRequest <T> blockRequest, int blockCountLimit)
        {
            var failedBlockRequest = new FindFailedBlocksRequest(new TaskId(blockRequest.ApplicationName, blockRequest.TaskName),
                                                                 blockRequest.TaskExecutionId,
                                                                 blockRequest.BlockType,
                                                                 DateTime.UtcNow - blockRequest.FailedTaskDetectionRange,
                                                                 DateTime.UtcNow,
                                                                 blockCountLimit,
                                                                 blockRequest.FailedTaskRetryLimit
                                                                 );

            var failedBlocks = _blockRepository.FindFailedObjectBlocks <T>(failedBlockRequest);

            return(CreateObjectBlockContexts <T>(blockRequest, failedBlocks));
        }
Example #6
0
        private IList <ProtoListBlock> GetFailedListBlocks(ListBlockRequest blockRequest, int blockCountLimit)
        {
            var failedBlockRequest = new FindFailedBlocksRequest(new TaskId(blockRequest.ApplicationName, blockRequest.TaskName),
                                                                 blockRequest.TaskExecutionId,
                                                                 blockRequest.BlockType,
                                                                 DateTime.UtcNow - blockRequest.FailedTaskDetectionRange,
                                                                 DateTime.UtcNow,
                                                                 blockCountLimit,
                                                                 blockRequest.FailedTaskRetryLimit
                                                                 );

            var failedBlocks = _blockRepository.FindFailedListBlocks(failedBlockRequest);

            return(failedBlocks);
        }
Example #7
0
        private async Task <List <IObjectBlockContext <T> > > GetFailedObjectBlocksAsync <T>(ObjectBlockRequest <T> blockRequest, int blockCountLimit)
        {
            var failedBlockRequest = new FindFailedBlocksRequest(new TaskId(blockRequest.ApplicationName, blockRequest.TaskName),
                                                                 blockRequest.TaskExecutionId,
                                                                 blockRequest.BlockType,
                                                                 DateTime.UtcNow - blockRequest.FailedTaskDetectionRange,
                                                                 DateTime.UtcNow,
                                                                 blockCountLimit,
                                                                 blockRequest.FailedTaskRetryLimit
                                                                 );

            var failedBlocks = await _blockRepository.FindFailedObjectBlocksAsync <T>(failedBlockRequest).ConfigureAwait(false);

            return(await CreateObjectBlockContextsAsync <T>(blockRequest, failedBlocks).ConfigureAwait(false));
        }
Example #8
0
        private async Task <IList <ProtoListBlock> > GetFailedListBlocksAsync(ListBlockRequest blockRequest, int blockCountLimit)
        {
            var failedBlockRequest = new FindFailedBlocksRequest(new TaskId(blockRequest.ApplicationName, blockRequest.TaskName),
                                                                 blockRequest.TaskExecutionId,
                                                                 blockRequest.BlockType,
                                                                 DateTime.UtcNow - blockRequest.FailedTaskDetectionRange,
                                                                 DateTime.UtcNow,
                                                                 blockCountLimit,
                                                                 blockRequest.FailedTaskRetryLimit
                                                                 );

            var failedBlocks = await _blockRepository.FindFailedListBlocksAsync(failedBlockRequest).ConfigureAwait(false);

            return(failedBlocks);
        }