Task/script refactor (#476)

* scripting working with race conditions

* new service works with no race conditions

* use new scripting service and commented out tests

* refactored peek definition to use mssql-scripter

* fixed peek definition tests

* removed auto gen comment

* fixed peek definition highlighting bug

* made scripting async and fixed event handlers

* fixed tests (without cancel and plan notifs)

* removed dead code

* added nuget package

* CR comments + select script service implementation

* minor fixes and added test

* CR comments and script select

* added unit tests

* code review comments and cleanup

* fixed failing scripting tests
This commit is contained in:
Aditya Bist
2017-10-03 14:41:18 -07:00
committed by GitHub
parent 9091df8f62
commit 05702182ab
3 changed files with 14 additions and 11 deletions

View File

@@ -52,9 +52,11 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting
// Mapping the object types for scripting // Mapping the object types for scripting
objectScriptMap.Add("table", "Table"); objectScriptMap.Add("table", "Table");
objectScriptMap.Add("view", "View"); objectScriptMap.Add("view", "View");
objectScriptMap.Add("function", "Function");
objectScriptMap.Add("storedprocedure", "Procedure"); objectScriptMap.Add("storedprocedure", "Procedure");
objectScriptMap.Add("userdefinedfunction", "Function"); objectScriptMap.Add("userdefinedfunction", "Function");
objectScriptMap.Add("userdefineddataType", "Type"); objectScriptMap.Add("tablevaluedfunction", "Function");
objectScriptMap.Add("userdefineddatatype", "Type");
objectScriptMap.Add("user", "User"); objectScriptMap.Add("user", "User");
objectScriptMap.Add("default", "Default"); objectScriptMap.Add("default", "Default");
objectScriptMap.Add("rule", "Rule"); objectScriptMap.Add("rule", "Rule");
@@ -66,7 +68,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting
objectScriptMap.Add("xmlschemacollection", "Xml Schema Collection"); objectScriptMap.Add("xmlschemacollection", "Xml Schema Collection");
objectScriptMap.Add("schema", "Schema"); objectScriptMap.Add("schema", "Schema");
objectScriptMap.Add("planguide", "sp_create_plan_guide"); objectScriptMap.Add("planguide", "sp_create_plan_guide");
objectScriptMap.Add("userdefinedType", "Type"); objectScriptMap.Add("userdefinedtype", "Type");
objectScriptMap.Add("userdefinedaggregate", "Aggregate"); objectScriptMap.Add("userdefinedaggregate", "Aggregate");
objectScriptMap.Add("fulltextcatalog", "Fulltext Catalog"); objectScriptMap.Add("fulltextcatalog", "Fulltext Catalog");
objectScriptMap.Add("userdefinedtabletype", "Type"); objectScriptMap.Add("userdefinedtabletype", "Type");

View File

@@ -97,7 +97,7 @@ GO";
string objectName = "spt_monitor"; string objectName = "spt_monitor";
string schemaName = null; string schemaName = null;
string objectType = "TABLE"; string objectType = "Table";
// Get locations for valid table object // Get locations for valid table object
Location[] locations = scripter.GetSqlObjectDefinition(objectName, schemaName, objectType); Location[] locations = scripter.GetSqlObjectDefinition(objectName, schemaName, objectType);
@@ -139,7 +139,7 @@ GO";
string objectName = "spt_monitor"; string objectName = "spt_monitor";
string schemaName = "dbo"; string schemaName = "dbo";
string objectType = "TABLE"; string objectType = "Table";
// Get locations for valid table object with schema name // Get locations for valid table object with schema name
Location[] locations = scripter.GetSqlObjectDefinition(objectName, schemaName, objectType); Location[] locations = scripter.GetSqlObjectDefinition(objectName, schemaName, objectType);
@@ -260,7 +260,7 @@ GO";
Scripter scripter = new Scripter(serverConnection, connInfo); Scripter scripter = new Scripter(serverConnection, connInfo);
string objectName = "objects"; string objectName = "objects";
string schemaName = "sys"; string schemaName = "sys";
string objectType = "VIEW"; string objectType = "View";
Location[] locations = scripter.GetSqlObjectDefinition(objectName, schemaName, objectType); Location[] locations = scripter.GetSqlObjectDefinition(objectName, schemaName, objectType);
Assert.NotNull(locations); Assert.NotNull(locations);
@@ -401,7 +401,7 @@ GO";
[Fact] [Fact]
public async Task GetTableValuedFunctionDefinitionWithSchemaNameSuccessTest() public async Task GetTableValuedFunctionDefinitionWithSchemaNameSuccessTest()
{ {
await ExecuteAndValidatePeekTest(ReturnTableTableFunctionQuery, ReturnTableFunctionName, TableValuedFunctionTypeName); await ExecuteAndValidatePeekTest(ReturnTableTableFunctionQuery, ReturnTableFunctionName, ScalarValuedFunctionTypeName);
} }
/// <summary> /// <summary>
@@ -444,7 +444,7 @@ GO";
[Fact] [Fact]
public async Task GetTableValuedFunctionDefinitionWithoutSchemaNameSuccessTest() public async Task GetTableValuedFunctionDefinitionWithoutSchemaNameSuccessTest()
{ {
await ExecuteAndValidatePeekTest(ReturnTableTableFunctionQuery, ReturnTableFunctionName, TableValuedFunctionTypeName, null); await ExecuteAndValidatePeekTest(ReturnTableTableFunctionQuery, ReturnTableFunctionName, ScalarValuedFunctionTypeName, null);
} }

View File

@@ -217,7 +217,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TestDriver.Tests
} }
[Fact] [Fact]
public async Task ScriptSchemaCancel() public async void ScriptSchemaCancel()
{ {
using (TestServiceDriverProvider testService = new TestServiceDriverProvider()) using (TestServiceDriverProvider testService = new TestServiceDriverProvider())
{ {
@@ -228,11 +228,12 @@ namespace Microsoft.SqlTools.ServiceLayer.TestDriver.Tests
ScriptOptions = new ScriptOptions ScriptOptions = new ScriptOptions
{ {
TypeOfDataToScript = "SchemaAndData", TypeOfDataToScript = "SchemaAndData",
}, }
}; };
ScriptingResult result = await testService.Script(requestParams); var result = Task.Run(() => testService.Script(requestParams));
ScriptingCancelResult cancelResult = await testService.CancelScript(result.OperationId); ScriptingProgressNotificationParams progressParams = await testService.Driver.WaitForEvent(ScriptingProgressNotificationEvent.Type, TimeSpan.FromSeconds(10));
Task.Run(() => testService.CancelScript(progressParams.OperationId));
ScriptingCompleteParams cancelEvent = await testService.Driver.WaitForEvent(ScriptingCompleteEvent.Type, TimeSpan.FromSeconds(10)); ScriptingCompleteParams cancelEvent = await testService.Driver.WaitForEvent(ScriptingCompleteEvent.Type, TimeSpan.FromSeconds(10));
Assert.True(cancelEvent.Canceled); Assert.True(cancelEvent.Canceled);
} }