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); }
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 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; }
public TaskExecutionCompleteResponse Complete(TaskExecutionCompleteRequest completeRequest) { SetCompletedDateOnTaskExecution(completeRequest.TaskId, completeRequest.TaskExecutionId); RegisterEvent(completeRequest.TaskId, completeRequest.TaskExecutionId, EventType.End, null); return(ReturnExecutionToken(completeRequest)); }