public void CreateSqlTaskGivenInvalidArgumentShouldThrowException()
        {
            DatabaseOperationStub operation = new DatabaseOperationStub();

            Assert.Throws <ArgumentNullException>(() => new SqlTask(null, operation.FunctionToRun, operation.FunctionToCancel));
            Assert.Throws <ArgumentNullException>(() => new SqlTask(new TaskMetadata(), null, null));
        }
        public async Task ToTaskInfoShouldReturnTaskInfo()
        {
            SqlTaskStatus         expectedStatus = SqlTaskStatus.Succeeded;
            DatabaseOperationStub operation      = new DatabaseOperationStub();

            operation.TaskResult = new TaskResult
            {
                TaskStatus = expectedStatus
            };
            SqlTask sqlTask = new SqlTask(new TaskMetadata
            {
                ServerName   = "server name",
                DatabaseName = "database name"
            }, operation.FunctionToRun, operation.FunctionToCancel);

            Task taskToVerify = sqlTask.RunAsync().ContinueWith(task =>
            {
                var taskInfo = sqlTask.ToTaskInfo();
                Assert.Equal(taskInfo.TaskId, sqlTask.TaskId.ToString());
                Assert.Equal(taskInfo.ServerName, "server name");
                Assert.Equal(taskInfo.DatabaseName, "database name");
            });

            operation.Stop();
            await taskToVerify;
        }
        public async Task CancelTaskShouldCancelTheOperationAndSendNotification()
        {
            serviceHostMock.AddEventHandling(TaskCreatedNotification.Type, null);
            serviceHostMock.AddEventHandling(TaskStatusChangedNotification.Type, null);
            DatabaseOperationStub operation = new DatabaseOperationStub();
            SqlTask sqlTask      = service.TaskManager.CreateTask(taskMetaData, operation.FunctionToRun, operation.FunctionToCancel);
            Task    taskToVerify = sqlTask.RunAsync().ContinueWith(task =>
            {
                serviceHostMock.Verify(x => x.SendEvent(TaskStatusChangedNotification.Type,
                                                        It.Is <TaskProgressInfo>(t => t.Status == SqlTaskStatus.Canceled)), Times.AtLeastOnce());
            });
            CancelTaskParams cancelParams = new CancelTaskParams
            {
                TaskId = sqlTask.TaskId.ToString()
            };

            await RunAndVerify <bool>(
                test : (requestContext) => service.HandleCancelTaskRequest(cancelParams, requestContext),
                verify : ((result) =>
            {
            }));

            serviceHostMock.Verify(x => x.SendEvent(TaskCreatedNotification.Type,
                                                    It.Is <TaskInfo>(t => t.TaskId == sqlTask.TaskId.ToString())), Times.Once());
            await taskToVerify;
        }
Esempio n. 4
0
        public async Task VerifyScriptTask()
        {
            using (SqlTaskManager manager = new SqlTaskManager())
            {
                DatabaseOperationStub operation = new DatabaseOperationStub();
                operation.TaskResult = new TaskResult
                {
                    TaskStatus = SqlTaskStatus.Succeeded
                };
                SqlTask sqlTask = manager.CreateTask(taskMetaData, operation.FunctionToScript);

                bool   scriptAddedEventRaised = false;
                string script = null;
                sqlTask.ScriptAdded += (object sender, TaskEventArgs <TaskScript> e) =>
                {
                    scriptAddedEventRaised = true;
                    script = e.TaskData.Script;
                };

                Assert.NotNull(sqlTask);

                Task taskToVerify = sqlTask.RunAsync().ContinueWith(task =>
                {
                    Assert.True(scriptAddedEventRaised);
                    Assert.True(!string.IsNullOrEmpty(script));
                    Assert.True(manager.HasCompletedTasks());
                    manager.RemoveCompletedTask(sqlTask);
                });
                operation.Stop();
                await taskToVerify;
            }
        }
Esempio n. 5
0
        public async Task VerifyCreateAndRunningTask()
        {
            using (SqlTaskManager manager = new SqlTaskManager())
            {
                bool taskAddedEventRaised = false;
                manager.TaskAdded += (object sender, TaskEventArgs <SqlTask> e) =>
                {
                    taskAddedEventRaised = true;
                };
                DatabaseOperationStub operation = new DatabaseOperationStub();
                operation.TaskResult = new TaskResult
                {
                    TaskStatus = SqlTaskStatus.Succeeded
                };
                SqlTask sqlTask = manager.CreateTask(taskMetaData, operation.FunctionToRun);
                Assert.NotNull(sqlTask);
                Assert.True(taskAddedEventRaised);

                Assert.False(manager.HasCompletedTasks());
                Task taskToVerify = sqlTask.RunAsync().ContinueWith(task =>
                {
                    Assert.True(manager.HasCompletedTasks());
                    manager.RemoveCompletedTask(sqlTask);
                });
                operation.Stop();
                await taskToVerify;
            }
        }
        public void NewTaskShouldSendNotification()
        {
            serviceHostMock.AddEventHandling(TaskCreatedNotification.Type, null);
            serviceHostMock.AddEventHandling(TaskStatusChangedNotification.Type, null);
            DatabaseOperationStub operation = new DatabaseOperationStub();
            SqlTask sqlTask = service.TaskManager.CreateTask(taskMetaData, operation.FunctionToRun);

            sqlTask.Run();

            serviceHostMock.Verify(x => x.SendEvent(TaskCreatedNotification.Type,
                                                    It.Is <TaskInfo>(t => t.TaskId == sqlTask.TaskId.ToString() && t.ProviderName == "MSSQL")), Times.Once());
            operation.Stop();
            Thread.Sleep(2000);

            serviceHostMock.Verify(x => x.SendEvent(TaskStatusChangedNotification.Type,
                                                    It.Is <TaskProgressInfo>(t => t.TaskId == sqlTask.TaskId.ToString())), Times.AtLeastOnce());
        }
        public async Task RunScriptShouldReturnScriptContent()
        {
            SqlTaskStatus         expectedStatus = SqlTaskStatus.Succeeded;
            DatabaseOperationStub operation      = new DatabaseOperationStub();

            operation.TaskResult = new TaskResult
            {
                TaskStatus = expectedStatus
            };
            SqlTask sqlTask = new SqlTask(new TaskMetadata(), operation.FunctionToScript, null);

            Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.NotStarted);

            Task taskToVerify = sqlTask.RunAsync().ContinueWith(task => {
                Assert.Equal(sqlTask.TaskStatus, expectedStatus);
                Assert.Equal(sqlTask.IsCompleted, true);
                Assert.NotNull(operation.TaskScript);
                Assert.True(!string.IsNullOrEmpty(operation.TaskScript.Script));
            });
            await taskToVerify;
        }
        public async Task TaskListTaskShouldReturnAllTasks()
        {
            serviceHostMock.AddEventHandling(TaskCreatedNotification.Type, null);
            serviceHostMock.AddEventHandling(TaskStatusChangedNotification.Type, null);
            DatabaseOperationStub operation = new DatabaseOperationStub();
            SqlTask sqlTask = service.TaskManager.CreateTask(taskMetaData, operation.FunctionToRun);

            sqlTask.Run();
            ListTasksParams listParams = new ListTasksParams
            {
            };

            await RunAndVerify <ListTasksResponse>(
                test : (requestContext) => service.HandleListTasksRequest(listParams, requestContext),
                verify : ((result) =>
            {
                Assert.True(result.Tasks.Any(x => x.TaskId == sqlTask.TaskId.ToString()));
            }));

            operation.Stop();
        }
        public async Task FailedOperationShouldFailTheTask()
        {
            SqlTaskStatus         expectedStatus = SqlTaskStatus.Failed;
            DatabaseOperationStub operation      = new DatabaseOperationStub();

            operation.TaskResult = new TaskResult
            {
            };
            SqlTask sqlTask = new SqlTask(new TaskMetadata(), operation.FunctionToRun, operation.FunctionToCancel);

            Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.NotStarted);

            Task taskToVerify = sqlTask.RunAsync().ContinueWith(task => {
                Assert.Equal(sqlTask.TaskStatus, expectedStatus);
                Assert.True(sqlTask.Duration > 0);
            });

            Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.InProgress);
            Thread.Sleep(1000);
            operation.FailTheOperation();
            await taskToVerify;
        }
Esempio n. 10
0
        public async Task CancelTaskShouldCancelTheOperation()
        {
            using (SqlTaskManager manager = new SqlTaskManager())
            {
                SqlTaskStatus expectedStatus = SqlTaskStatus.Canceled;

                DatabaseOperationStub operation = new DatabaseOperationStub();
                operation.TaskResult = new TaskResult
                {
                };
                SqlTask sqlTask = manager.CreateTask(taskMetaData, operation.FunctionToRun, operation.FunctionToCancel);
                Assert.NotNull(sqlTask);

                Task taskToVerify = sqlTask.RunAsync().ContinueWith(task =>
                {
                    Assert.Equal(expectedStatus, sqlTask.TaskStatus);
                    Assert.Equal(sqlTask.IsCancelRequested, true);
                    manager.Reset();
                });
                manager.CancelTask(sqlTask.TaskId);
                await taskToVerify;
            }
        }
Esempio n. 11
0
        public async Task RunShouldRunTheFunctionAndGetTheResult()
        {
            SqlTaskStatus         expectedStatus = SqlTaskStatus.Succeeded;
            DatabaseOperationStub operation      = new DatabaseOperationStub();

            operation.TaskResult = new TaskResult
            {
                TaskStatus = expectedStatus
            };
            SqlTask sqlTask = new SqlTask(new TaskMetadata(), operation.FunctionToRun, null);

            Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.NotStarted);

            Task taskToVerify = sqlTask.RunAsync().ContinueWith(task => {
                Assert.Equal(sqlTask.TaskStatus, expectedStatus);
                Assert.Equal(sqlTask.IsCompleted, true);
                Assert.True(sqlTask.Duration > 0);
            });

            Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.InProgress);
            Thread.Sleep(1000);
            operation.Stop();
            await taskToVerify;
        }