public async Task SmokeTest() { async Task TestTask() { await Task.Delay(TimeSpan.FromSeconds(4)); } (string correlationId, BackgroundTaskStatus backgroundTaskStatus) = BackgroundTask.Run(TestTask, "test", CancellationToken.None); string payload = @"{ ""schemaVersion"": ""1.0"", ""correlationId"": ""<correlationId>"" }".Replace("<correlationId>", correlationId); var taskStatusRequestHandler = new TaskStatusRequestHandler(); Option <string> response = await taskStatusRequestHandler.HandleRequest(Option.Some(payload), CancellationToken.None); Assert.True(response.HasValue); TaskStatusResponse taskStatusResponse = response.OrDefault().FromJson <TaskStatusResponse>(); Assert.NotNull(taskStatusResponse); Assert.Equal(taskStatusResponse.CorrelationId, correlationId); Assert.Equal(BackgroundTaskRunStatus.Running, taskStatusResponse.Status); await Task.Delay(TimeSpan.FromSeconds(5)); response = await taskStatusRequestHandler.HandleRequest(Option.Some(payload), CancellationToken.None); Assert.True(response.HasValue); taskStatusResponse = response.OrDefault().FromJson <TaskStatusResponse>(); Assert.NotNull(taskStatusResponse); Assert.Equal(taskStatusResponse.CorrelationId, correlationId); Assert.Equal(BackgroundTaskRunStatus.Completed, taskStatusResponse.Status); }
public TaskStatusResponse GetStatusOftasks(int selectedTaskType, int currentPageIndex, int recordsCount, TaskStatusSortFields sortField, SortOrder sortOrder) { var user = _commonService.GetCurrentUserContext(); var response = new TaskStatusResponse(); var totalRecords = 0; var taskStatusList = new List <Models.ResponseModels.Requestor.TaskStatus>(); var dbApprovedApplicants = _requestorRepository.GetStatusOftasks(selectedTaskType, user.EmailId, currentPageIndex, recordsCount, TaskStatusSortFields.Name, SortOrder.DESC, out totalRecords); foreach (var dbApprovedApplicant in dbApprovedApplicants) { var taskStatus = new Models.ResponseModels.Requestor.TaskStatus(); taskStatus.Applicant = _approvedApplicantModelFactory.CreateModel <DCode.Models.ResponseModels.Contributor.Contributor>(dbApprovedApplicant); taskStatus.Task = _taskModelFactory.CreateModel <DCode.Models.ResponseModels.Task.Task>(dbApprovedApplicant.task); taskStatus.ApprovedApplicantId = dbApprovedApplicant.ID; taskStatus.Duration = CommonHelper.CalculateDuration(dbApprovedApplicant.CREATED_ON); taskStatusList.Add(taskStatus); } response.TaskStatuses = taskStatusList; response.TotalRecords = totalRecords; return(response); }
public async Task BackgroundTaskExceptionTest() { Task TestTask() => Task.FromException(new SelfRefException("foo")); (string correlationId, BackgroundTaskStatus backgroundTaskStatus) = BackgroundTask.Run(TestTask, "test", CancellationToken.None); string payload = @"{ ""schemaVersion"": ""1.0"", ""correlationId"": ""<correlationId>"" }".Replace("<correlationId>", correlationId); var taskStatusRequestHandler = new TaskStatusRequestHandler(); await Task.Delay(TimeSpan.FromSeconds(1)); Option <string> response = await taskStatusRequestHandler.HandleRequest(Option.Some(payload), CancellationToken.None); Assert.True(response.HasValue); TaskStatusResponse taskStatusResponse = response.OrDefault().FromJson <TaskStatusResponse>(); Assert.NotNull(taskStatusResponse); Assert.Equal(taskStatusResponse.CorrelationId, correlationId); Assert.Equal(BackgroundTaskRunStatus.Failed, taskStatusResponse.Status); Assert.NotNull(taskStatusResponse.Message); }