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);
        }
Example #2
0
        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);
        }