mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-21 09:35:39 -05:00
Fixes BindingQueue, GetSignatureHelp and RefreshIntellisenseCache to be truly async (#2175)
This commit is contained in:
@@ -177,7 +177,7 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.LanguageServer
|
||||
requestContext.Verify(x => x.SendError(It.IsAny<string>(), 0, It.IsAny<string>()), Times.Once);
|
||||
|
||||
ScriptParseInfo scriptInfo = new ScriptParseInfo { IsConnected = true };
|
||||
autoCompleteService.ParseAndBind(result.ScriptFile, result.ConnectionInfo);
|
||||
await autoCompleteService.ParseAndBind(result.ScriptFile, result.ConnectionInfo);
|
||||
scriptInfo.ConnectionKey = autoCompleteService.BindingQueue.AddConnectionContext(result.ConnectionInfo);
|
||||
|
||||
//Invoke auto completion with extension enabled
|
||||
@@ -219,7 +219,7 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.LanguageServer
|
||||
/// provide signature help.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void GetSignatureHelpReturnsNotNullIfParseInfoInitialized()
|
||||
public async Task GetSignatureHelpReturnsNotNullIfParseInfoInitialized()
|
||||
{
|
||||
// When we make a connection to a live database
|
||||
Hosting.ServiceHost.SendEventIgnoreExceptions = true;
|
||||
@@ -243,14 +243,14 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.LanguageServer
|
||||
|
||||
// If the SQL has already been parsed
|
||||
var service = CreateLanguageService(result.ScriptFile);
|
||||
service.DoUpdateLanguageServiceOnConnection(result.ConnectionInfo);
|
||||
await service.UpdateLanguageServiceOnConnection(result.ConnectionInfo);
|
||||
|
||||
// We should get back a non-null ScriptParseInfo
|
||||
ScriptParseInfo? parseInfo = service.GetScriptParseInfo(result.ScriptFile.ClientUri);
|
||||
Assert.That(parseInfo, Is.Not.Null, "ScriptParseInfo");
|
||||
|
||||
// And we should get back a non-null SignatureHelp
|
||||
SignatureHelp? signatureHelp = service.GetSignatureHelp(textDocument, result.ScriptFile);
|
||||
SignatureHelp? signatureHelp = await service.GetSignatureHelp(textDocument, result.ScriptFile);
|
||||
Assert.That(signatureHelp, Is.Not.Null, "SignatureHelp");
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.LanguageServer
|
||||
testDb.RunQuery("CREATE TABLE dbo.foo(col1 int)");
|
||||
|
||||
// And refresh the cache
|
||||
await langService.HandleRebuildIntelliSenseNotification(
|
||||
await langService.DoHandleRebuildIntellisenseNotification(
|
||||
new RebuildIntelliSenseParams() { OwnerUri = connectionInfoResult.ScriptFile.ClientUri },
|
||||
new TestEventContext());
|
||||
|
||||
@@ -446,7 +446,7 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.LanguageServer
|
||||
testDb.RunQuery(createTableQueries);
|
||||
|
||||
// And refresh the cache
|
||||
await langService.HandleRebuildIntelliSenseNotification(
|
||||
await langService.DoHandleRebuildIntellisenseNotification(
|
||||
new RebuildIntelliSenseParams() { OwnerUri = connectionInfoResult.ScriptFile.ClientUri },
|
||||
new TestEventContext());
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ GO";
|
||||
scriptFile.Contents = "select * from dbo.func ()";
|
||||
|
||||
ScriptParseInfo scriptInfo = new ScriptParseInfo { IsConnected = true };
|
||||
languageService.ScriptParseInfoMap.Add(scriptFile.ClientUri, scriptInfo);
|
||||
languageService.ScriptParseInfoMap.TryAdd(scriptFile.ClientUri, scriptInfo);
|
||||
|
||||
// Pass in null connection info to force doing a local parse since that hits the BindingQueue timeout
|
||||
// before we want it to (this is testing the timeout trying to fetch the definitions after the parse)
|
||||
@@ -729,9 +729,9 @@ GO";
|
||||
Thread.Sleep(2000);
|
||||
|
||||
ScriptParseInfo scriptInfo = new ScriptParseInfo { IsConnected = true };
|
||||
service.ParseAndBind(scriptFile, connInfo);
|
||||
await service.ParseAndBind(scriptFile, connInfo);
|
||||
scriptInfo.ConnectionKey = bindingQueue.AddConnectionContext(connInfo);
|
||||
service.ScriptParseInfoMap.Add(OwnerUri, scriptInfo);
|
||||
service.ScriptParseInfoMap.TryAdd(OwnerUri, scriptInfo);
|
||||
|
||||
// When I call the language service
|
||||
var objectResult = service.GetDefinition(objectDocument, scriptFile, connInfo);
|
||||
@@ -750,7 +750,7 @@ GO";
|
||||
Cleanup(objectResult.Locations);
|
||||
Cleanup(sysResult.Locations);
|
||||
Cleanup(masterResult.Locations);
|
||||
service.ScriptParseInfoMap.Remove(OwnerUri);
|
||||
service.ScriptParseInfoMap.TryRemove(OwnerUri, out _);
|
||||
connInfo.RemoveAllConnections();
|
||||
}
|
||||
|
||||
@@ -786,9 +786,9 @@ GO";
|
||||
Thread.Sleep(2000);
|
||||
|
||||
ScriptParseInfo scriptInfo = new ScriptParseInfo { IsConnected = true };
|
||||
service.ParseAndBind(scriptFile, connInfo);
|
||||
await service.ParseAndBind(scriptFile, connInfo);
|
||||
scriptInfo.ConnectionKey = bindingQueue.AddConnectionContext(connInfo);
|
||||
service.ScriptParseInfoMap.Add(TestUri, scriptInfo);
|
||||
service.ScriptParseInfoMap.TryAdd(TestUri, scriptInfo);
|
||||
|
||||
// When I call the language service
|
||||
var fnResult = service.GetDefinition(fnDocument, scriptFile, connInfo);
|
||||
@@ -807,7 +807,7 @@ GO";
|
||||
Cleanup(fnResult.Locations);
|
||||
Cleanup(sysResult.Locations);
|
||||
Cleanup(masterResult.Locations);
|
||||
service.ScriptParseInfoMap.Remove(TestUri);
|
||||
service.ScriptParseInfoMap.TryRemove(TestUri, out _);
|
||||
connInfo.RemoveAllConnections();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user