Ejemplo n.º 1
0
        public async Task GivenACompletedTask_WhenGetNextTask_ThenNoTaskShouldBeReturned()
        {
            string queueId = Guid.NewGuid().ToString();
            TaskHostingConfiguration config = new TaskHostingConfiguration()
            {
                Enabled = true,
                QueueId = queueId,
                TaskHeartbeatTimeoutThresholdInSeconds = 60,
            };

            IOptions <TaskHostingConfiguration> taskHostingConfig = Substitute.For <IOptions <TaskHostingConfiguration> >();

            taskHostingConfig.Value.Returns(config);
            SqlServerTaskManager  sqlServerTaskManager  = new SqlServerTaskManager(_fixture.SqlConnectionWrapperFactory, NullLogger <SqlServerTaskManager> .Instance);
            SqlServerTaskConsumer sqlServerTaskConsumer = new SqlServerTaskConsumer(taskHostingConfig, _fixture.SqlConnectionWrapperFactory, NullLogger <SqlServerTaskConsumer> .Instance);

            string taskId    = Guid.NewGuid().ToString();
            short  typeId    = 1;
            string inputData = "inputData";

            TaskInfo taskInfo = new TaskInfo()
            {
                TaskId     = taskId,
                QueueId    = queueId,
                TaskTypeId = typeId,
                InputData  = inputData,
            };

            _ = await sqlServerTaskManager.CreateTaskAsync(taskInfo, CancellationToken.None);

            taskInfo = (await sqlServerTaskConsumer.GetNextMessagesAsync(1, 60, CancellationToken.None)).First();
            TaskResultData result = new TaskResultData(TaskResult.Success, "Result");

            taskInfo = await sqlServerTaskConsumer.CompleteAsync(taskInfo.TaskId, result, taskInfo.RunId, CancellationToken.None);

            Assert.Equal(TaskStatus.Completed, taskInfo.Status);
            Assert.Equal(JsonConvert.SerializeObject(result), taskInfo.Result);

            taskInfo = (await sqlServerTaskConsumer.GetNextMessagesAsync(1, 60, CancellationToken.None)).FirstOrDefault();
            Assert.Null(taskInfo);
        }
Ejemplo n.º 2
0
        public async Task GivenARunningTask_WhenUpdateWithWrongRunid_ThenExceptionShouldBeThrew()
        {
            string queueId = Guid.NewGuid().ToString();
            TaskHostingConfiguration config = new TaskHostingConfiguration()
            {
                Enabled = true,
                QueueId = queueId,
                TaskHeartbeatTimeoutThresholdInSeconds = 60,
            };

            IOptions <TaskHostingConfiguration> taskHostingConfig = Substitute.For <IOptions <TaskHostingConfiguration> >();

            taskHostingConfig.Value.Returns(config);
            SqlServerTaskManager  sqlServerTaskManager  = new SqlServerTaskManager(_fixture.SqlConnectionWrapperFactory, NullLogger <SqlServerTaskManager> .Instance);
            SqlServerTaskConsumer sqlServerTaskConsumer = new SqlServerTaskConsumer(taskHostingConfig, _fixture.SqlConnectionWrapperFactory, NullLogger <SqlServerTaskConsumer> .Instance);

            string taskId    = Guid.NewGuid().ToString();
            short  typeId    = 1;
            string inputData = "inputData";

            TaskInfo taskInfo = new TaskInfo()
            {
                TaskId        = taskId,
                QueueId       = queueId,
                TaskTypeId    = typeId,
                InputData     = inputData,
                MaxRetryCount = 1,
            };

            _ = await sqlServerTaskManager.CreateTaskAsync(taskInfo, CancellationToken.None);

            TaskResultData result = new TaskResultData(TaskResult.Fail, "Result");

            taskInfo = (await sqlServerTaskConsumer.GetNextMessagesAsync(1, 60, CancellationToken.None)).First();
            await Assert.ThrowsAsync <TaskNotExistException>(async() => await sqlServerTaskConsumer.KeepAliveAsync(taskInfo.TaskId, "invalid", CancellationToken.None));

            await Assert.ThrowsAsync <TaskNotExistException>(async() => await sqlServerTaskConsumer.CompleteAsync(taskInfo.TaskId, result, "invalid", CancellationToken.None));

            await Assert.ThrowsAsync <TaskNotExistException>(async() => await sqlServerTaskConsumer.ResetAsync(taskInfo.TaskId, result, "invalid", CancellationToken.None));
        }