Fix GetConnection (#19579)

This commit is contained in:
Charles Gagnon
2022-05-31 21:32:44 -07:00
committed by GitHub
parent eb2cd6238f
commit 41a3c8661c
6 changed files with 27 additions and 25 deletions

View File

@@ -321,8 +321,6 @@ export interface IConnectionManagementService {
* @returns array of connections * @returns array of connections
*/ */
getConnections(activeConnectionsOnly?: boolean): ConnectionProfile[]; getConnections(activeConnectionsOnly?: boolean): ConnectionProfile[];
getConnection(uri: string): ConnectionProfile;
} }
export enum RunQueryOnConnectionMode { export enum RunQueryOnConnectionMode {

View File

@@ -96,7 +96,7 @@ export class MainThreadConnectionManagement extends Disposable implements MainTh
} }
public $getConnection(uri: string): Thenable<azdata.connection.ConnectionProfile> { public $getConnection(uri: string): Thenable<azdata.connection.ConnectionProfile> {
let profile = this._connectionManagementService.getConnection(uri); const profile = this._connectionManagementService.getConnectionProfile(uri);
if (!profile) { if (!profile) {
return Promise.resolve(undefined); return Promise.resolve(undefined);
} }

View File

@@ -22,6 +22,8 @@ import * as path from 'vs/base/common/path';
import { HTMLReportBuilder } from 'sql/workbench/contrib/assessment/common/htmlReportGenerator'; import { HTMLReportBuilder } from 'sql/workbench/contrib/assessment/common/htmlReportGenerator';
import Severity from 'vs/base/common/severity'; import Severity from 'vs/base/common/severity';
import { INotificationService } from 'vs/platform/notification/common/notification'; import { INotificationService } from 'vs/platform/notification/common/notification';
import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile';
import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService';
export interface SqlAssessmentResultInfo { export interface SqlAssessmentResultInfo {
result: SqlAssessmentResult; result: SqlAssessmentResult;
@@ -54,6 +56,7 @@ abstract class AsmtServerAction extends Action {
label: string, label: string,
private asmtType: AssessmentType, private asmtType: AssessmentType,
@IConnectionManagementService private _connectionManagement: IConnectionManagementService, @IConnectionManagementService private _connectionManagement: IConnectionManagementService,
@ICapabilitiesService private _capabilitiesService: ICapabilitiesService,
@ILogService protected _logService: ILogService, @ILogService protected _logService: ILogService,
@IAdsTelemetryService protected _telemetryService: IAdsTelemetryService @IAdsTelemetryService protected _telemetryService: IAdsTelemetryService
) { ) {
@@ -66,7 +69,7 @@ abstract class AsmtServerAction extends Action {
context.component.showProgress(this.asmtType); context.component.showProgress(this.asmtType);
let serverResults = this.getServerItems(context.ownerUri); let serverResults = this.getServerItems(context.ownerUri);
let connectionUri: string = this._connectionManagement.getConnectionUriFromId(context.connectionId); let connectionUri: string = this._connectionManagement.getConnectionUriFromId(context.connectionId);
let connection = this._connectionManagement.getConnection(connectionUri); let connection = this._connectionManagement.getConnectionProfile(connectionUri);
let databaseListResult = this._connectionManagement.listDatabases(connectionUri); let databaseListResult = this._connectionManagement.listDatabases(connectionUri);
context.component.showInitialResults(await serverResults, this.asmtType); context.component.showInitialResults(await serverResults, this.asmtType);
let dbList = await databaseListResult; let dbList = await databaseListResult;
@@ -76,7 +79,8 @@ abstract class AsmtServerAction extends Action {
break; break;
} }
let dbName = dbList.databaseNames[nDbName]; let dbName = dbList.databaseNames[nDbName];
let newUri = await this._connectionManagement.connectIfNotConnected(connection.cloneWithDatabase(dbName).clone()); const profile = ConnectionProfile.fromIConnectionProfile(this._capabilitiesService, connection);
let newUri = await this._connectionManagement.connectIfNotConnected(profile.cloneWithDatabase(dbName).clone());
this._logService.info(`Database ${dbName} assessment started`); this._logService.info(`Database ${dbName} assessment started`);
let dbResult = await this.getDatabaseItems(newUri); let dbResult = await this.getDatabaseItems(newUri);
@@ -101,6 +105,7 @@ export class AsmtServerSelectItemsAction extends AsmtServerAction {
constructor( constructor(
@IConnectionManagementService _connectionManagement: IConnectionManagementService, @IConnectionManagementService _connectionManagement: IConnectionManagementService,
@ICapabilitiesService _capabilitiesService: ICapabilitiesService,
@ILogService _logService: ILogService, @ILogService _logService: ILogService,
@IAssessmentService private _assessmentService: IAssessmentService, @IAssessmentService private _assessmentService: IAssessmentService,
@IAdsTelemetryService _telemetryService: IAdsTelemetryService @IAdsTelemetryService _telemetryService: IAdsTelemetryService
@@ -108,6 +113,7 @@ export class AsmtServerSelectItemsAction extends AsmtServerAction {
super(AsmtServerSelectItemsAction.ID, AsmtServerSelectItemsAction.LABEL, super(AsmtServerSelectItemsAction.ID, AsmtServerSelectItemsAction.LABEL,
AssessmentType.AvailableRules, AssessmentType.AvailableRules,
_connectionManagement, _connectionManagement,
_capabilitiesService,
_logService, _telemetryService); _logService, _telemetryService);
} }
@@ -150,11 +156,12 @@ export class AsmtServerInvokeItemsAction extends AsmtServerAction {
constructor( constructor(
@IConnectionManagementService _connectionManagement: IConnectionManagementService, @IConnectionManagementService _connectionManagement: IConnectionManagementService,
@ICapabilitiesService _capabilitiesService: ICapabilitiesService,
@ILogService _logService: ILogService, @ILogService _logService: ILogService,
@IAssessmentService private _assessmentService: IAssessmentService, @IAssessmentService private _assessmentService: IAssessmentService,
@IAdsTelemetryService _telemetryService: IAdsTelemetryService @IAdsTelemetryService _telemetryService: IAdsTelemetryService
) { ) {
super(AsmtServerInvokeItemsAction.ID, AsmtServerInvokeItemsAction.LABEL, AssessmentType.InvokeAssessment, _connectionManagement, _logService, _telemetryService); super(AsmtServerInvokeItemsAction.ID, AsmtServerInvokeItemsAction.LABEL, AssessmentType.InvokeAssessment, _connectionManagement, _capabilitiesService, _logService, _telemetryService);
} }
getServerItems(ownerUri: string): Thenable<SqlAssessmentResult> { getServerItems(ownerUri: string): Thenable<SqlAssessmentResult> {
this._logService.info(`Requesting server items`); this._logService.info(`Requesting server items`);

View File

@@ -31,6 +31,7 @@ import { TestFileService, TestEnvironmentService, TestFileDialogService } from '
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
import { URI } from 'vs/base/common/uri'; import { URI } from 'vs/base/common/uri';
import { IFileService } from 'vs/platform/files/common/files'; import { IFileService } from 'vs/platform/files/common/files';
import { TestCapabilitiesService } from 'sql/platform/capabilities/test/common/testCapabilitiesService';
/** /**
* Class to test Assessment Management Actions * Class to test Assessment Management Actions
*/ */
@@ -120,7 +121,7 @@ suite('Assessment Actions', () => {
let connectionManagementService = TypeMoq.Mock.ofType<IConnectionManagementService>(TestConnectionManagementService); let connectionManagementService = TypeMoq.Mock.ofType<IConnectionManagementService>(TestConnectionManagementService);
connectionManagementService.setup(c => c.listDatabases(TypeMoq.It.isAny())).returns(() => Promise.resolve(dbListResult)); connectionManagementService.setup(c => c.listDatabases(TypeMoq.It.isAny())).returns(() => Promise.resolve(dbListResult));
connectionManagementService.setup(c => c.getConnectionUriFromId(TypeMoq.It.isAny())).returns(() => ''); connectionManagementService.setup(c => c.getConnectionUriFromId(TypeMoq.It.isAny())).returns(() => '');
connectionManagementService.setup(c => c.getConnection(TypeMoq.It.isAny())).returns(() => connectionProfile.object); connectionManagementService.setup(c => c.getConnectionProfile(TypeMoq.It.isAny())).returns(() => connectionProfile.object);
connectionManagementService.setup(c => c.connectIfNotConnected(TypeMoq.It.isAny())).returns(() => Promise.resolve('')); connectionManagementService.setup(c => c.connectIfNotConnected(TypeMoq.It.isAny())).returns(() => Promise.resolve(''));
return connectionManagementService; return connectionManagementService;
@@ -133,7 +134,12 @@ suite('Assessment Actions', () => {
const connectionManagementService = createConnectionManagementService(dbListResult); const connectionManagementService = createConnectionManagementService(dbListResult);
const action = new AsmtServerSelectItemsAction(connectionManagementService.object, new NullLogService(), mockAssessmentService.object, new NullAdsTelemetryService()); const action = new AsmtServerSelectItemsAction(
connectionManagementService.object,
new TestCapabilitiesService(),
new NullLogService(),
mockAssessmentService.object,
new NullAdsTelemetryService());
assert.strictEqual(action.id, AsmtServerSelectItemsAction.ID, 'Get Server Rules id action mismatch'); assert.strictEqual(action.id, AsmtServerSelectItemsAction.ID, 'Get Server Rules id action mismatch');
assert.strictEqual(action.label, AsmtServerSelectItemsAction.LABEL, 'Get Server Rules label action mismatch'); assert.strictEqual(action.label, AsmtServerSelectItemsAction.LABEL, 'Get Server Rules label action mismatch');
@@ -156,7 +162,12 @@ suite('Assessment Actions', () => {
const connectionManagementService = createConnectionManagementService(dbListResult); const connectionManagementService = createConnectionManagementService(dbListResult);
const action = new AsmtServerInvokeItemsAction(connectionManagementService.object, new NullLogService(), mockAssessmentService.object, new NullAdsTelemetryService()); const action = new AsmtServerInvokeItemsAction(
connectionManagementService.object,
new TestCapabilitiesService(),
new NullLogService(),
mockAssessmentService.object,
new NullAdsTelemetryService());
assert.strictEqual(action.id, AsmtServerInvokeItemsAction.ID, 'Invoke Server Assessment id action mismatch'); assert.strictEqual(action.id, AsmtServerInvokeItemsAction.ID, 'Invoke Server Assessment id action mismatch');
assert.strictEqual(action.label, AsmtServerInvokeItemsAction.LABEL, 'Invoke Server Assessment label action mismatch'); assert.strictEqual(action.label, AsmtServerInvokeItemsAction.LABEL, 'Invoke Server Assessment label action mismatch');

View File

@@ -1634,20 +1634,6 @@ export class ConnectionManagementService extends Disposable implements IConnecti
return connections; return connections;
} }
public getConnection(uri: string): ConnectionProfile {
const connections = this.getActiveConnections();
if (connections) {
for (let connection of connections) {
let connectionUri = this.getConnectionUriFromId(connection.id);
if (connectionUri === uri) {
return connection;
}
}
}
return undefined;
}
private getConnectionsInGroup(group: ConnectionProfileGroup): ConnectionProfile[] { private getConnectionsInGroup(group: ConnectionProfileGroup): ConnectionProfile[] {
const connections = []; const connections = [];
if (group) { if (group) {

View File

@@ -781,8 +781,8 @@ suite('SQL ConnectionManagementService tests', () => {
await connect(uri, options, true, profile); await connect(uri, options, true, profile);
// invalid uri check. // invalid uri check.
assert.strictEqual(connectionManagementService.getConnection(badString), undefined); assert.strictEqual(connectionManagementService.getConnectionProfile(badString), undefined);
let returnedProfile = connectionManagementService.getConnection(uri); let returnedProfile = connectionManagementService.getConnectionProfile(uri);
assert.strictEqual(returnedProfile.groupFullName, profile.groupFullName); assert.strictEqual(returnedProfile.groupFullName, profile.groupFullName);
assert.strictEqual(returnedProfile.groupId, profile.groupId); assert.strictEqual(returnedProfile.groupId, profile.groupId);
}); });