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 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(); }
/// <summary> /// Handles a backup request /// </summary> internal static async Task HandleBackupRequest( BackupParams backupParams, RequestContext <BackupResponse> requestContext) { try { ConnectionInfo connInfo; DisasterRecoveryService.ConnectionServiceInstance.TryFindConnection( backupParams.OwnerUri, out connInfo); if (connInfo != null) { DatabaseTaskHelper helper = AdminService.CreateDatabaseTaskHelper(connInfo, databaseExists: true); SqlConnection sqlConn = GetSqlConnection(connInfo); if ((sqlConn != null) && !connInfo.IsSqlDW && !connInfo.IsAzure) { BackupOperation backupOperation = DisasterRecoveryService.Instance.SetBackupInput(helper.DataContainer, sqlConn, backupParams.BackupInfo); // create task metadata TaskMetadata metadata = new TaskMetadata(); metadata.ServerName = connInfo.ConnectionDetails.ServerName; metadata.DatabaseName = connInfo.ConnectionDetails.DatabaseName; metadata.Name = SR.Backup_TaskName; metadata.IsCancelable = true; metadata.Data = backupOperation; // create backup task and perform SqlTask sqlTask = SqlTaskManager.Instance.CreateTask(metadata, Instance.BackupTaskAsync); sqlTask.Run(); } } await requestContext.SendResult(new BackupResponse()); } catch (Exception ex) { await requestContext.SendError(ex.ToString()); } }