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
objectScriptMap.Add("table", "Table");
objectScriptMap.Add("view", "View");
objectScriptMap.Add("function", "Function");
objectScriptMap.Add("storedprocedure", "Procedure");
objectScriptMap.Add("userdefinedfunction", "Function");
objectScriptMap.Add("userdefineddataType", "Type");
objectScriptMap.Add("tablevaluedfunction", "Function");
objectScriptMap.Add("userdefineddatatype", "Type");
objectScriptMap.Add("user", "User");
objectScriptMap.Add("default", "Default");
objectScriptMap.Add("rule", "Rule");
@@ -66,7 +68,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting
objectScriptMap.Add("xmlschemacollection", "Xml Schema Collection");
objectScriptMap.Add("schema", "Schema");
objectScriptMap.Add("planguide", "sp_create_plan_guide");
objectScriptMap.Add("userdefinedType", "Type");
objectScriptMap.Add("userdefinedtype", "Type");
objectScriptMap.Add("userdefinedaggregate", "Aggregate");
objectScriptMap.Add("fulltextcatalog", "Fulltext Catalog");
objectScriptMap.Add("userdefinedtabletype", "Type");

View File

@@ -97,7 +97,7 @@ GO";
string objectName = "spt_monitor";
string schemaName = null;
string objectType = "TABLE";
string objectType = "Table";
// Get locations for valid table object
Location[] locations = scripter.GetSqlObjectDefinition(objectName, schemaName, objectType);
@@ -139,7 +139,7 @@ GO";
string objectName = "spt_monitor";
string schemaName = "dbo";
string objectType = "TABLE";
string objectType = "Table";
// Get locations for valid table object with schema name
Location[] locations = scripter.GetSqlObjectDefinition(objectName, schemaName, objectType);
@@ -260,7 +260,7 @@ GO";
Scripter scripter = new Scripter(serverConnection, connInfo);
string objectName = "objects";
string schemaName = "sys";
string objectType = "VIEW";
string objectType = "View";
Location[] locations = scripter.GetSqlObjectDefinition(objectName, schemaName, objectType);
Assert.NotNull(locations);
@@ -401,7 +401,7 @@ GO";
[Fact]
public async Task GetTableValuedFunctionDefinitionWithSchemaNameSuccessTest()
{
await ExecuteAndValidatePeekTest(ReturnTableTableFunctionQuery, ReturnTableFunctionName, TableValuedFunctionTypeName);
await ExecuteAndValidatePeekTest(ReturnTableTableFunctionQuery, ReturnTableFunctionName, ScalarValuedFunctionTypeName);
}
/// <summary>
@@ -444,7 +444,7 @@ GO";
[Fact]
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]
public async Task ScriptSchemaCancel()
public async void ScriptSchemaCancel()
{
using (TestServiceDriverProvider testService = new TestServiceDriverProvider())
{
@@ -228,11 +228,12 @@ namespace Microsoft.SqlTools.ServiceLayer.TestDriver.Tests
ScriptOptions = new ScriptOptions
{
TypeOfDataToScript = "SchemaAndData",
},
}
};
ScriptingResult result = await testService.Script(requestParams);
ScriptingCancelResult cancelResult = await testService.CancelScript(result.OperationId);
var result = Task.Run(() => testService.Script(requestParams));
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));
Assert.True(cancelEvent.Canceled);
}