add PGSQL to integration test (#6040)

* Verify providers in integration test

* include pgsql
This commit is contained in:
Alan Ren
2019-06-18 14:35:08 -07:00
committed by GitHub
parent 9e7282d16a
commit 58e5e095e5
4 changed files with 62 additions and 13 deletions

View File

@@ -25,6 +25,7 @@ export function activate(context: vscode.ExtensionContext) {
let installerFullPath = join(extensionInstallersFolder, installers[i]); let installerFullPath = join(extensionInstallersFolder, installers[i]);
console.info(`installing extension at ${installerFullPath}`); console.info(`installing extension at ${installerFullPath}`);
await azdata.extensions.install(installerFullPath); await azdata.extensions.install(installerFullPath);
console.info(`extension has been installed successfully. vsix: ${installers[i]}`);
} }
} }
await setConfiguration('workbench.enablePreviewFeatures', true); await setConfiguration('workbench.enablePreviewFeatures', true);
@@ -34,26 +35,71 @@ export function activate(context: vscode.ExtensionContext) {
}); });
vscode.commands.registerCommand('test.waitForExtensionsToLoad', async () => { vscode.commands.registerCommand('test.waitForExtensionsToLoad', async () => {
let expectedExtensions = ['Microsoft.agent', 'Microsoft.import', 'Microsoft.mssql', 'Microsoft.profiler']; const expectedExtensions = ['Microsoft.agent', 'Microsoft.import', 'Microsoft.mssql', 'Microsoft.profiler', 'Microsoft.azuredatastudio-postgresql'];
const commonFeatures: azdata.DataProviderType[] = [
azdata.DataProviderType.AdminServicesProvider,
azdata.DataProviderType.BackupProvider,
azdata.DataProviderType.CapabilitiesProvider,
azdata.DataProviderType.ConnectionProvider,
azdata.DataProviderType.FileBrowserProvider,
azdata.DataProviderType.MetadataProvider,
azdata.DataProviderType.ObjectExplorerProvider,
azdata.DataProviderType.ProfilerProvider,
azdata.DataProviderType.QueryProvider,
azdata.DataProviderType.RestoreProvider,
azdata.DataProviderType.ScriptingProvider,
azdata.DataProviderType.TaskServicesProvider];
const features_mssql: azdata.DataProviderType[] = [
azdata.DataProviderType.AgentServicesProvider,
azdata.DataProviderType.DacFxServicesProvider,
azdata.DataProviderType.IconProvider,
azdata.DataProviderType.SchemaCompareServicesProvider
];
features_mssql.push(...commonFeatures);
const providerFeatureMapping: { providerId: string, features: azdata.DataProviderType[] }[] = [
{
providerId: 'MSSQL',
features: features_mssql
}, {
providerId: 'PGSQL',
features: commonFeatures
}];
do { do {
let extensions = vscode.extensions.all.filter(ext => { return expectedExtensions.indexOf(ext.id) !== -1; }); let extensions = vscode.extensions.all.filter(ext => { return expectedExtensions.indexOf(ext.id) !== -1; });
let isReady = true; const extensionsNotInReadyState: string[] = [];
for (let i = 0; i < extensions.length; i++) {
let extension = extensions[i]; extensions.forEach(extension => {
isReady = isReady && extension.isActive; if (!extension.isActive) {
if (!isReady) { extensionsNotInReadyState.push(extension.id);
break;
} }
});
const providerTypesNotInReadyState: string[] = [];
if (extensionsNotInReadyState.length === 0) {
providerFeatureMapping.forEach(entry => {
entry.features.forEach(feature => {
const provider = azdata.dataprotocol.getProvider(entry.providerId, feature);
if (!provider) {
providerTypesNotInReadyState.push(`${entry.providerId}:${feature}`);
}
});
});
} }
if (isReady) { if (extensionsNotInReadyState.length === 0 && providerTypesNotInReadyState.length === 0) {
console.info('All extensions are ready'); console.info('All extensions are ready');
showStatusBarItem(statusBarItem, ALL_EXTENSION_LOADED_TEXT); showStatusBarItem(statusBarItem, ALL_EXTENSION_LOADED_TEXT);
break; break;
} else if (extensionsNotInReadyState.length !== 0) {
console.warn(`the following extensions are not ready: ${extensionsNotInReadyState.join(',')}`);
} else { } else {
console.warn(`At least one extension is not ready, waiting one second before recheck.}`); console.warn(`the following providers are not ready: ${providerTypesNotInReadyState.join(',')}`);
await new Promise(resolve => { setTimeout(resolve, 1000); });
} }
await new Promise(resolve => { setTimeout(resolve, 2000); });
} }
while (true); while (true);
}); });

View File

@@ -25,8 +25,11 @@ assert(getConfigValue(EnvironmentVariable_BDC_SERVER) !== undefined &&
if (!context.RunTest) { if (!context.RunTest) {
suite('integration test setup', () => { suite('integration test setup', () => {
test('test setup', async function () { test('test setup', async function () {
this.timeout(5 * 60 * 1000);
// Prepare the environment and make it ready for testing // Prepare the environment and make it ready for testing
await vscode.commands.executeCommand('test.setupIntegrationTest'); await vscode.commands.executeCommand('test.setupIntegrationTest');
// Wait for the extensions to load
await vscode.commands.executeCommand('test.waitForExtensionsToLoad');
// Reload the window, this is required for some changes made by the 'test.setupIntegrationTest' to work // Reload the window, this is required for some changes made by the 'test.setupIntegrationTest' to work
await vscode.commands.executeCommand('workbench.action.reloadWindow'); await vscode.commands.executeCommand('workbench.action.reloadWindow');
}); });

View File

@@ -27,6 +27,6 @@ export class MainThreadExtensionManagement implements MainThreadExtensionManagem
} }
public $install(vsixPath: string): Thenable<string> { public $install(vsixPath: string): Thenable<string> {
return this._extensionService.install(URI.parse(vsixPath)).then((value: IExtensionIdentifier) => { return undefined; }, (reason: any) => { return reason ? reason.toString() : undefined; }); return this._extensionService.install(URI.file(vsixPath)).then((value: IExtensionIdentifier) => { return undefined; }, (reason: any) => { return reason ? reason.toString() : undefined; });
} }
} }