Register backup to task service for execution (#381)

* Create backup task for execution

* Register backup to task service

* Fix backup task service

* Fix async methods

* Add backup unit test

* Add cancellation token to task service and fix other PR comments

* Add SR and fix other pr comments

* Add comments to methods

* Fixed backup cancel test and casing

* Change sleep time in test
This commit is contained in:
Kate Shin
2017-06-16 14:01:09 -07:00
committed by GitHub
parent 0c7533b5b9
commit a646d627c6
22 changed files with 14122 additions and 7482 deletions

View File

@@ -3,14 +3,61 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.SqlTools.ServiceLayer.DisasterRecovery;
using Microsoft.SqlTools.ServiceLayer.TaskServices;
using Moq;
using System.Threading.Tasks;
using Xunit;
namespace Microsoft.SqlTools.ServiceLayer.UnitTests.DisasterRecovery
{
public class BackupTests
{
private TaskMetadata taskMetaData = new TaskMetadata
{
ServerName = "server name",
DatabaseName = "database name",
Name = "Backup Database",
IsCancelable = true
};
[Fact]
public async Task VerifyCreateAndRunningBackupTask()
{
using (SqlTaskManager manager = new SqlTaskManager())
{
var mockUtility = new Mock<IBackupUtilities>();
DisasterRecoveryService service = new DisasterRecoveryService(mockUtility.Object);
SqlTask sqlTask = manager.CreateTask(this.taskMetaData, service.BackupTask);
Assert.NotNull(sqlTask);
Task taskToVerify = sqlTask.RunAsync().ContinueWith(Task =>
{
Assert.Equal(SqlTaskStatus.Succeeded, sqlTask.TaskStatus);
});
await taskToVerify;
}
}
[Fact]
public async Task CancelBackupTask()
{
using (SqlTaskManager manager = new SqlTaskManager())
{
IBackupUtilities backupUtility = new BackupUtilitiesStub();
DisasterRecoveryService service = new DisasterRecoveryService(backupUtility);
SqlTask sqlTask = manager.CreateTask(this.taskMetaData, service.BackupTask);
Assert.NotNull(sqlTask);
Task taskToVerify = sqlTask.RunAsync().ContinueWith(Task =>
{
Assert.Equal(SqlTaskStatus.Canceled, sqlTask.TaskStatus);
Assert.Equal(sqlTask.IsCancelRequested, true);
manager.Reset();
});
manager.CancelTask(sqlTask.TaskId);
await taskToVerify;
}
}
}
}

View File

@@ -0,0 +1,61 @@
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using Microsoft.SqlTools.ServiceLayer.Admin;
using Microsoft.SqlTools.ServiceLayer.DisasterRecovery;
using Microsoft.SqlTools.ServiceLayer.DisasterRecovery.Contracts;
using System.Data.SqlClient;
using System.Threading;
namespace Microsoft.SqlTools.ServiceLayer.UnitTests.DisasterRecovery
{
/// <summary>
/// Stub class that implements IBackupUtilities
/// </summary>
public class BackupUtilitiesStub : IBackupUtilities
{
/// <summary>
/// Initialize
/// </summary>
/// <param name="dataContainer"></param>
/// <param name="sqlConnection"></param>
public void Initialize(CDataContainer dataContainer, SqlConnection sqlConnection)
{
}
/// <summary>
/// Return database metadata for backup
/// </summary>
/// <param name="databaseName"></param>
/// <returns></returns>
public BackupConfigInfo GetBackupConfigInfo(string databaseName)
{
return null;
}
/// <summary>
/// Set backup input properties
/// </summary>
/// <param name="input"></param>
public void SetBackupInput(BackupInfo input)
{
}
/// <summary>
/// Execute backup
/// </summary>
public void PerformBackup()
{
Thread.Sleep(500);
}
/// <summary>
/// Cancel backup
/// </summary>
public void CancelBackup()
{
}
}
}