Added Unified connection support (#3785)

* Added Unified connection support

* Use generic way to do expandNode.
Cleanup the ported code and removed unreference code. Added as needed later.
Resolved PR comments.

* Minor fixes and removed timer for all expanders for now. If any providers can't response, the tree node will spin and wait. We may improve later.

* Change handSessionClose to not thenable.
Added a node to OE to show error message instead of reject. So we could show partial expanded result if get any.
Resolve PR comments

* Minor fixes of PR comments
This commit is contained in:
Yurong He
2019-01-29 14:37:14 -08:00
committed by GitHub
parent b439ea45ec
commit 3ddc5e7846
37 changed files with 3087 additions and 80 deletions

View File

@@ -8,7 +8,7 @@ import { ObjectExplorerProviderTestService } from 'sqltest/stubs/objectExplorerP
import { TestConnectionManagementService } from 'sqltest/stubs/connectionManagementService.test';
import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile';
import { ConnectionProfileGroup } from 'sql/platform/connection/common/connectionProfileGroup';
import { ObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
import { ObjectExplorerService, NodeExpandInfoWithProviderId } from 'sql/parts/objectExplorer/common/objectExplorerService';
import { NodeType } from 'sql/parts/objectExplorer/common/nodeType';
import { TreeNode, TreeItemCollapsibleState, ObjectExplorerCallbacks } from 'sql/parts/objectExplorer/common/treeNode';
@@ -32,12 +32,13 @@ suite('SQL Object Explorer Service tests', () => {
let objectExplorerSession: sqlops.ObjectExplorerSession;
let objectExplorerFailedSession: sqlops.ObjectExplorerSession;
let objectExplorerCloseSessionResponse: sqlops.ObjectExplorerCloseSessionResponse;
let objectExplorerExpandInfo: sqlops.ObjectExplorerExpandInfo;
let objectExplorerExpandInfoRefresh: sqlops.ObjectExplorerExpandInfo;
let objectExplorerExpandInfo: NodeExpandInfoWithProviderId;
let objectExplorerExpandInfoRefresh: NodeExpandInfoWithProviderId;
let sessionId = '1234';
let failedSessionId = '12345';
let numberOfFailedSession: number = 0;
let serverTreeView: TypeMoq.Mock<ServerTreeView>;
const providerId = 'MSSQL';
setup(() => {
@@ -105,14 +106,16 @@ suite('SQL Object Explorer Service tests', () => {
sessionId: sessionId,
nodes: [NodeInfoTable1, NodeInfoTable2],
errorMessage: '',
nodePath: objectExplorerSession.rootNode.nodePath
nodePath: objectExplorerSession.rootNode.nodePath,
providerId: providerId
};
objectExplorerExpandInfoRefresh = {
sessionId: sessionId,
nodes: [NodeInfoTable1, NodeInfoTable3],
errorMessage: '',
nodePath: objectExplorerSession.rootNode.nodePath
nodePath: objectExplorerSession.rootNode.nodePath,
providerId: providerId
};
let response: sqlops.ObjectExplorerSessionResponse = {
sessionId: objectExplorerSession.sessionId
@@ -126,9 +129,8 @@ suite('SQL Object Explorer Service tests', () => {
sqlOEProvider.callBase = true;
let onCapabilitiesRegistered = new Emitter<string>();
let sqlProvider = {
providerId: 'MSSQL',
providerId: providerId,
displayName: 'MSSQL',
connectionOptions: [
{
@@ -279,10 +281,10 @@ suite('SQL Object Explorer Service tests', () => {
resolve(failedResponse);
}));
sqlOEProvider.setup(x => x.expandNode(TypeMoq.It.isAny())).callback(() => {
objectExplorerService.onNodeExpanded(1, objectExplorerExpandInfo);
objectExplorerService.onNodeExpanded(objectExplorerExpandInfo);
}).returns(() => TPromise.as(true));
sqlOEProvider.setup(x => x.refreshNode(TypeMoq.It.isAny())).callback(() => {
objectExplorerService.onNodeExpanded(1, objectExplorerExpandInfoRefresh);
objectExplorerService.onNodeExpanded(objectExplorerExpandInfoRefresh);
}).returns(() => TPromise.as(true));
sqlOEProvider.setup(x => x.closeSession(TypeMoq.It.isAny())).returns(() => TPromise.as(objectExplorerCloseSessionResponse));
@@ -539,7 +541,8 @@ suite('SQL Object Explorer Service tests', () => {
sessionId: sessionId,
nodes: [],
errorMessage: '',
nodePath: table1NodePath
nodePath: table1NodePath,
providerId: providerId
};
serverTreeView.setup(x => x.isExpanded(TypeMoq.It.isAny())).returns(treeNode => {
return treeNode === connection || treeNode.nodePath === table1NodePath;
@@ -549,7 +552,7 @@ suite('SQL Object Explorer Service tests', () => {
objectExplorerService.onSessionCreated(1, objectExplorerSession);
objectExplorerService.resolveTreeNodeChildren(objectExplorerSession, objectExplorerService.getObjectExplorerNode(connection)).then(childNodes => {
sqlOEProvider.setup(x => x.expandNode(TypeMoq.It.isAny())).callback(() => {
objectExplorerService.onNodeExpanded(1, tableExpandInfo);
objectExplorerService.onNodeExpanded(tableExpandInfo);
}).returns(() => TPromise.as(true));
let tableNode = childNodes.find(node => node.nodePath === table1NodePath);
objectExplorerService.resolveTreeNodeChildren(objectExplorerSession, tableNode).then(() => {
@@ -596,7 +599,8 @@ suite('SQL Object Explorer Service tests', () => {
sessionId: sessionId,
nodes: [],
errorMessage: '',
nodePath: table1NodePath
nodePath: table1NodePath,
providerId: providerId
};
serverTreeView.setup(x => x.isExpanded(TypeMoq.It.isAny())).returns(treeNode => {
return treeNode.nodePath === table1NodePath;
@@ -606,7 +610,7 @@ suite('SQL Object Explorer Service tests', () => {
objectExplorerService.onSessionCreated(1, objectExplorerSession);
objectExplorerService.resolveTreeNodeChildren(objectExplorerSession, objectExplorerService.getObjectExplorerNode(connection)).then(childNodes => {
sqlOEProvider.setup(x => x.expandNode(TypeMoq.It.isAny())).callback(() => {
objectExplorerService.onNodeExpanded(1, tableExpandInfo);
objectExplorerService.onNodeExpanded(tableExpandInfo);
}).returns(() => TPromise.as(true));
objectExplorerService.resolveTreeNodeChildren(objectExplorerSession, childNodes.find(node => node.nodePath === table1NodePath)).then(() => {
// If I check whether the table is expanded, the answer should be yes
@@ -630,11 +634,12 @@ suite('SQL Object Explorer Service tests', () => {
sessionId: sessionId,
nodes: [],
errorMessage: '',
nodePath: table1NodePath
nodePath: table1NodePath,
providerId: providerId
};
// Set up the OE provider so that the second expand call expands the table
sqlOEProvider.setup(x => x.expandNode(TypeMoq.It.is(nodeInfo => nodeInfo.nodePath === table1NodePath))).callback(() => {
objectExplorerService.onNodeExpanded(1, tableExpandInfo);
objectExplorerService.onNodeExpanded(tableExpandInfo);
}).returns(() => TPromise.as(true));
serverTreeView.setup(x => x.setExpandedState(TypeMoq.It.isAny(), TypeMoq.It.is(state => state === TreeItemCollapsibleState.Expanded))).returns(treeNode => {
if (treeNode instanceof ConnectionProfile) {

View File

@@ -58,6 +58,7 @@ suite('Dashboard Properties Widget Tests', () => {
serverEdition: undefined,
azureVersion: undefined,
osVersion: undefined,
options: {},
};
let databaseInfo = {

View File

@@ -254,6 +254,10 @@ export class TestConnectionManagementService implements IConnectionManagementSer
return undefined;
}
getServerInfo(profileId: string): sqlops.ServerInfo {
return undefined;
}
getConnectionString(connectionId: string): Thenable<string> {
return undefined;
}