示例#1
0
        public void Complete()
        {
            if (!IsExecutionContextActive)
            {
                throw new ExecutionException(NotActiveMessage);
            }

            _completeCalled = true;

            if (_keepAliveDaemon != null)
            {
                _keepAliveDaemon.Stop();
            }

            var completeRequest = new TaskExecutionCompleteRequest(new TaskId(_taskExecutionInstance.ApplicationName, _taskExecutionInstance.TaskName),
                                                                   _taskExecutionInstance.TaskExecutionId,
                                                                   _taskExecutionInstance.ExecutionTokenId);

            completeRequest.Failed = _executionHasFailed;


            var response = _taskExecutionRepository.Complete(completeRequest);

            _taskExecutionInstance.CompletedAt = response.CompletedAt;
        }
        public async Task <TaskExecutionCompleteResponse> CompleteAsync(TaskExecutionCompleteRequest completeRequest)
        {
            await SetCompletedDateOnTaskExecutionAsync(completeRequest.TaskId, completeRequest.TaskExecutionId).ConfigureAwait(false);
            await RegisterEventAsync(completeRequest.TaskId, completeRequest.TaskExecutionId, EventType.End, null).ConfigureAwait(false);

            return(await ReturnExecutionTokenAsync(completeRequest).ConfigureAwait(false));
        }
        private async Task RequestAndReturnTokenWithTimeOverrideModeAsync(TaskExecutionRepository sut)
        {
            for (int i = 0; i < 100; i++)
            {
                var firstStartRequest = CreateOverrideStartRequest();

                var firstStartResponse = await sut.StartAsync(firstStartRequest);

                if (firstStartResponse.GrantStatus == GrantStatus.Granted)
                {
                    var firstCompleteRequest  = new TaskExecutionCompleteRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName), firstStartResponse.TaskExecutionId, firstStartResponse.ExecutionTokenId);
                    var firstCompleteResponse = await sut.CompleteAsync(firstCompleteRequest);
                }
            }
        }
        private void RequestAndReturnTokenWithTimeOverrideMode(object sutObj)
        {
            var sut = (TaskExecutionRepository)sutObj;

            for (int i = 0; i < 100; i++)
            {
                var firstStartRequest = CreateOverrideStartRequest();

                var firstStartResponse = sut.Start(firstStartRequest);

                if (firstStartResponse.GrantStatus == GrantStatus.Granted)
                {
                    var firstCompleteRequest  = new TaskExecutionCompleteRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName), firstStartResponse.TaskExecutionId, firstStartResponse.ExecutionTokenId);
                    var firstCompleteResponse = sut.Complete(firstCompleteRequest);
                }
            }
        }
        private async Task <TaskExecutionCompleteResponse> ReturnExecutionTokenAsync(TaskExecutionCompleteRequest taskExecutionCompleteRequest)
        {
            var taskDefinition = await _taskRepository.EnsureTaskDefinitionAsync(taskExecutionCompleteRequest.TaskId).ConfigureAwait(false);

            var tokenRequest = new TokenRequest()
            {
                TaskId           = taskExecutionCompleteRequest.TaskId,
                TaskDefinitionId = taskDefinition.TaskDefinitionId,
                TaskExecutionId  = taskExecutionCompleteRequest.TaskExecutionId
            };

            await _executionTokenRepository.ReturnExecutionTokenAsync(tokenRequest, taskExecutionCompleteRequest.ExecutionTokenId).ConfigureAwait(false);

            var response = new TaskExecutionCompleteResponse();

            response.CompletedAt = DateTime.UtcNow;
            return(response);
        }
        private TaskExecutionCompleteResponse ReturnExecutionToken(TaskExecutionCompleteRequest taskExecutionCompleteRequest)
        {
            var taskDefinition = _taskRepository.EnsureTaskDefinition(taskExecutionCompleteRequest.TaskId);

            var tokenRequest = new TokenRequest()
            {
                TaskId           = taskExecutionCompleteRequest.TaskId,
                TaskDefinitionId = taskDefinition.TaskDefinitionId,
                TaskExecutionId  = taskExecutionCompleteRequest.TaskExecutionId
            };

            _executionTokenRepository.ReturnExecutionToken(tokenRequest, taskExecutionCompleteRequest.ExecutionTokenId);

            var response = new TaskExecutionCompleteResponse();

            response.CompletedAt = DateTime.UtcNow;
            return(response);
        }
示例#7
0
        private async Task RequestAndReturnTokenWithKeepAliveModeAsync(Tuple <int, TaskExecutionRepository> tuple)
        {
            var sut = tuple.Item2;

            for (int i = 0; i < 100; i++)
            {
                var firstStartRequest = CreateKeepAliveStartRequest();

                var firstStartResponse = await sut.StartAsync(firstStartRequest);

                var executionHelper = new ExecutionsHelper();
                executionHelper.SetKeepAlive(firstStartResponse.TaskExecutionId);

                if (firstStartResponse.GrantStatus == GrantStatus.Granted)
                {
                    var firstCompleteRequest  = new TaskExecutionCompleteRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName), firstStartResponse.TaskExecutionId, firstStartResponse.ExecutionTokenId);
                    var firstCompleteResponse = await sut.CompleteAsync(firstCompleteRequest);
                }
            }
        }
        public async Task CompleteAsync()
        {
            if (IsExecutionContextActive)
            {
                _completeCalled = true;

                if (_keepAliveDaemon != null)
                {
                    _keepAliveDaemon.Stop();
                }

                var completeRequest = new TaskExecutionCompleteRequest(new TaskId(_taskExecutionInstance.ApplicationName, _taskExecutionInstance.TaskName),
                                                                       _taskExecutionInstance.TaskExecutionId,
                                                                       _taskExecutionInstance.ExecutionTokenId);
                completeRequest.Failed = _executionHasFailed;


                var response = await _taskExecutionRepository.CompleteAsync(completeRequest).ConfigureAwait(false);

                _taskExecutionInstance.CompletedAt = response.CompletedAt;
            }
        }
        public void If_KeepAliveMode_TwoSequentialTasksAndOneTokenAndIsAvailable_ThenIsGrantFirstTaskAndThenGrantTheOther()
        {
            // ARRANGE
            var executionHelper  = new ExecutionsHelper();
            var taskDefinitionId = executionHelper.InsertTask(TestConstants.ApplicationName, TestConstants.TaskName);

            executionHelper.InsertAvailableExecutionToken(taskDefinitionId);

            var firstStartRequest  = CreateKeepAliveStartRequest();
            var secondStartRequest = CreateKeepAliveStartRequest();

            // ACT
            var sut = CreateSut();
            var firstStartResponse    = sut.Start(firstStartRequest);
            var firstCompleteRequest  = new TaskExecutionCompleteRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName), firstStartResponse.TaskExecutionId, firstStartResponse.ExecutionTokenId);
            var firstCompleteResponse = sut.Complete(firstCompleteRequest);

            var secondStartResponse = sut.Start(secondStartRequest);

            // ASSERT
            Assert.AreEqual(GrantStatus.Granted, firstStartResponse.GrantStatus);
            Assert.AreEqual(GrantStatus.Granted, secondStartResponse.GrantStatus);
        }
        private void RequestAndReturnTokenWithKeepAliveMode(object state)
        {
            var tuple = (Tuple<int, TaskExecutionRepository>)state;
            var sut = tuple.Item2;
            for (int i = 0; i < 100; i++)
            {
                var firstStartRequest = CreateKeepAliveStartRequest();

                var firstStartResponse = sut.Start(firstStartRequest);

                var executionHelper = new ExecutionsHelper();
                executionHelper.SetKeepAlive(firstStartResponse.TaskExecutionId);

                if (firstStartResponse.GrantStatus == GrantStatus.Granted)
                {
                    var firstCompleteRequest = new TaskExecutionCompleteRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName), firstStartResponse.TaskExecutionId, firstStartResponse.ExecutionTokenId);
                    var firstCompleteResponse = sut.Complete(firstCompleteRequest);
                }
            }
        }
        public void If_KeepAliveMode_TwoSequentialTasksAndOneTokenAndIsAvailable_ThenIsGrantFirstTaskAndThenGrantTheOther()
        {
            // ARRANGE
            var executionHelper = new ExecutionsHelper();
            var taskDefinitionId = executionHelper.InsertTask(TestConstants.ApplicationName, TestConstants.TaskName);
            executionHelper.InsertAvailableExecutionToken(taskDefinitionId);

            var firstStartRequest = CreateKeepAliveStartRequest();
            var secondStartRequest = CreateKeepAliveStartRequest();

            // ACT
            var sut = CreateSut();
            var firstStartResponse = sut.Start(firstStartRequest);
            var firstCompleteRequest = new TaskExecutionCompleteRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName), firstStartResponse.TaskExecutionId, firstStartResponse.ExecutionTokenId);
            var firstCompleteResponse = sut.Complete(firstCompleteRequest);

            var secondStartResponse = sut.Start(secondStartRequest);

            // ASSERT
            Assert.AreEqual(GrantStatus.Granted, firstStartResponse.GrantStatus);
            Assert.AreEqual(GrantStatus.Granted, secondStartResponse.GrantStatus);
        }
 public TaskExecutionCompleteResponse Complete(TaskExecutionCompleteRequest completeRequest)
 {
     SetCompletedDateOnTaskExecution(completeRequest.TaskId, completeRequest.TaskExecutionId);
     RegisterEvent(completeRequest.TaskId, completeRequest.TaskExecutionId, EventType.End, null);
     return ReturnExecutionToken(completeRequest);
 }
        private TaskExecutionCompleteResponse ReturnExecutionToken(TaskExecutionCompleteRequest taskExecutionCompleteRequest)
        {
            var taskDefinition = _taskRepository.EnsureTaskDefinition(taskExecutionCompleteRequest.TaskId);

            var tokenRequest = new TokenRequest()
            {
                TaskId = taskExecutionCompleteRequest.TaskId,
                TaskDefinitionId = taskDefinition.TaskDefinitionId,
                TaskExecutionId = taskExecutionCompleteRequest.TaskExecutionId
            };

            _executionTokenRepository.ReturnExecutionToken(tokenRequest, taskExecutionCompleteRequest.ExecutionTokenId);

            var response = new TaskExecutionCompleteResponse();
            response.CompletedAt = DateTime.UtcNow;
            return response;
        }
        private void RequestAndReturnTokenWithTimeOverrideMode(object sutObj)
        {
            var sut = (TaskExecutionRepository)sutObj;
            for (int i = 0; i < 100; i++)
            {
                var firstStartRequest = CreateOverrideStartRequest();

                var firstStartResponse = sut.Start(firstStartRequest);

                if (firstStartResponse.GrantStatus == GrantStatus.Granted)
                {
                    var firstCompleteRequest = new TaskExecutionCompleteRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName), firstStartResponse.TaskExecutionId, firstStartResponse.ExecutionTokenId);
                    var firstCompleteResponse = sut.Complete(firstCompleteRequest);
                }
            }
        }
 public TaskExecutionCompleteResponse Complete(TaskExecutionCompleteRequest completeRequest)
 {
     SetCompletedDateOnTaskExecution(completeRequest.TaskId, completeRequest.TaskExecutionId);
     RegisterEvent(completeRequest.TaskId, completeRequest.TaskExecutionId, EventType.End, null);
     return(ReturnExecutionToken(completeRequest));
 }