fixed couple of issues in task service (#377)

This commit is contained in:
Leila Lali
2017-06-12 15:52:49 -07:00
committed by GitHub
parent 869cd1439f
commit 58f438176b
7 changed files with 259 additions and 246 deletions

View File

@@ -4,6 +4,8 @@
// //
using Microsoft.SqlTools.ServiceLayer.Hosting;
namespace Microsoft.SqlTools.ServiceLayer.TaskServices.Contracts namespace Microsoft.SqlTools.ServiceLayer.TaskServices.Contracts
{ {
public class TaskInfo public class TaskInfo
@@ -34,6 +36,17 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices.Contracts
/// </summary> /// </summary>
public string Name { get; set; } public string Name { get; set; }
/// <summary>
/// Provider Name
/// </summary>
public string ProviderName
{
get
{
return ServiceHost.ProviderName;
}
}
/// <summary> /// <summary>
/// Task description /// Task description
/// </summary> /// </summary>

View File

@@ -14,7 +14,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices.Contracts
{ {
public static readonly public static readonly
EventType<TaskInfo> Type = EventType<TaskInfo> Type =
EventType<TaskInfo>.Create("task/newtaskcreated"); EventType<TaskInfo>.Create("tasks/newtaskcreated");
} }
/// <summary> /// <summary>
@@ -24,6 +24,6 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices.Contracts
{ {
public static readonly public static readonly
EventType<TaskProgressInfo> Type = EventType<TaskProgressInfo> Type =
EventType<TaskProgressInfo>.Create("task/statuschanged"); EventType<TaskProgressInfo>.Create("tasks/statuschanged");
} }
} }

View File

@@ -20,7 +20,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
public class SqlTask : IDisposable public class SqlTask : IDisposable
{ {
private bool isCompleted; private bool isCompleted;
private bool isCanceled; private bool isCancelRequested;
private bool isDisposed; private bool isDisposed;
private readonly object lockObject = new object(); private readonly object lockObject = new object();
private readonly List<TaskMessage> messages = new List<TaskMessage>(); private readonly List<TaskMessage> messages = new List<TaskMessage>();
@@ -114,18 +114,18 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
/// Setting this to True will not change the Slot status. /// Setting this to True will not change the Slot status.
/// Setting the Slot status to Canceled will set this to true. /// Setting the Slot status to Canceled will set this to true.
/// </summary> /// </summary>
public bool IsCanceled public bool IsCancelRequested
{ {
get get
{ {
return isCanceled; return isCancelRequested;
} }
private set private set
{ {
if (isCanceled != value) if (isCancelRequested != value)
{ {
isCanceled = value; isCancelRequested = value;
OnTaskCanceled(); OnTaskCancelRequested();
} }
} }
} }
@@ -221,9 +221,9 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
throw new NotSupportedException("IsCompleted is not determined for status: " + status); throw new NotSupportedException("IsCompleted is not determined for status: " + status);
} }
if (status == SqlTaskStatus.Canceled) if (status == SqlTaskStatus.Canceled && !isCancelRequested)
{ {
IsCanceled = true; IsCancelRequested = true;
} }
OnStatusChanged(); OnStatusChanged();
@@ -251,7 +251,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
/// </summary> /// </summary>
public void Cancel() public void Cancel()
{ {
IsCanceled = true; IsCancelRequested = true;
} }
/// <summary> /// <summary>
@@ -308,11 +308,11 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
{ {
return new TaskInfo return new TaskInfo
{ {
TaskId = this.TaskId.ToString(),
DatabaseName = TaskMetadata.DatabaseName, DatabaseName = TaskMetadata.DatabaseName,
ServerName = TaskMetadata.ServerName, ServerName = TaskMetadata.ServerName,
Name = TaskMetadata.Name, Name = TaskMetadata.Name,
Description = TaskMetadata.Description, Description = TaskMetadata.Description,
TaskId = TaskId.ToString()
}; };
} }
@@ -366,7 +366,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
} }
} }
private void OnTaskCanceled() private void OnTaskCancelRequested()
{ {
var handler = TaskCanceled; var handler = TaskCanceled;
if (handler != null) if (handler != null)

View File

@@ -109,7 +109,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.TaskServices
sqlTask.Run().ContinueWith(task => { sqlTask.Run().ContinueWith(task => {
Assert.Equal(sqlTask.TaskStatus, expectedStatus); Assert.Equal(sqlTask.TaskStatus, expectedStatus);
Assert.Equal(sqlTask.IsCanceled, true); Assert.Equal(sqlTask.IsCancelRequested, true);
Assert.True(sqlTask.Duration > 0); Assert.True(sqlTask.Duration > 0);
}); });
Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.InProgress); Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.InProgress);
@@ -129,7 +129,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.TaskServices
sqlTask.Run().ContinueWith(task => { sqlTask.Run().ContinueWith(task => {
Assert.Equal(sqlTask.TaskStatus, expectedStatus); Assert.Equal(sqlTask.TaskStatus, expectedStatus);
Assert.Equal(sqlTask.IsCanceled, true); Assert.Equal(sqlTask.IsCancelRequested, true);
Assert.True(sqlTask.Duration > 0); Assert.True(sqlTask.Duration > 0);
}); });
Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.InProgress); Assert.Equal(sqlTask.TaskStatus, SqlTaskStatus.InProgress);

View File

@@ -74,7 +74,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.TaskServices
sqlTask.Run().ContinueWith(task => sqlTask.Run().ContinueWith(task =>
{ {
Assert.Equal(sqlTask.TaskStatus, expectedStatus); Assert.Equal(sqlTask.TaskStatus, expectedStatus);
Assert.Equal(sqlTask.IsCanceled, true); Assert.Equal(sqlTask.IsCancelRequested, true);
manager.Reset(); manager.Reset();
}); });

View File

@@ -57,7 +57,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.TaskServices
}); });
serviceHostMock.Verify(x => x.SendEvent(TaskCreatedNotification.Type, serviceHostMock.Verify(x => x.SendEvent(TaskCreatedNotification.Type,
It.Is<TaskInfo>(t => t.TaskId == sqlTask.TaskId.ToString())), Times.Once()); It.Is<TaskInfo>(t => t.TaskId == sqlTask.TaskId.ToString() && t.ProviderName == "MSSQL")), Times.Once());
operation.Stop(); operation.Stop();
serviceHostMock.Verify(x => x.SendEvent(TaskStatusChangedNotification.Type, serviceHostMock.Verify(x => x.SendEvent(TaskStatusChangedNotification.Type,