mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Smoke tests (#9814)
* move * add inital test; need basic sqllite connection * before sqlite * sqlite * add smoke tests * working tests * fix app names * fix quick open * fix smoke tests * add win32 smoke tests * fix smoke test * fix win32 smoke * no continue * continue on error * add vscode smokes * remove vscode tests * continue on error * allow sqlite to use relative paths * add linux smoke tests * fix build files * use dispatch instead of select * fix linux build again * fix darwin * get select working * try and use screen shots * screen shots * remove smoke tests linux * try vscodes sqlite * fix compile * fix webpack * fix deps * try this again * try force a rebuild * try npm rebuild * add sqlite to be rebuilt * distro * try vscode sqlite again * revert changes to driver and simplify edits * fix compile * fix imports * move sqlite out * remove unneeded change * add extensions path * fix web tests * no continue on error
This commit is contained in:
@@ -4,122 +4,11 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as vscode from 'vscode';
|
||||
import * as azdata from 'azdata';
|
||||
import { normalize, join } from 'path';
|
||||
import * as fs from 'fs';
|
||||
|
||||
const TEST_SETUP_COMPLETED_TEXT: string = 'Test Setup Completed';
|
||||
const EXTENSION_LOADED_TEXT: string = 'Test Extension Loaded';
|
||||
const ALL_EXTENSION_LOADED_TEXT: string = 'All Extensions Loaded';
|
||||
|
||||
let statusBarItemTimer: NodeJS.Timer;
|
||||
|
||||
export function activate(context: vscode.ExtensionContext) {
|
||||
let statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
|
||||
vscode.commands.registerCommand('test.setupIntegrationTest', async () => {
|
||||
let extensionInstallersFolder = normalize(join(__dirname, '../extensionInstallers'));
|
||||
console.info(`extensionInstallersFolder=${extensionInstallersFolder}`);
|
||||
// eslint-disable-next-line no-sync
|
||||
let installers = fs.readdirSync(extensionInstallersFolder);
|
||||
for (let i = 0; i < installers.length; i++) {
|
||||
if (installers[i].endsWith('.vsix')) {
|
||||
let installerFullPath = join(extensionInstallersFolder, installers[i]);
|
||||
console.info(`installing extension at ${installerFullPath}`);
|
||||
await azdata.extensions.install(installerFullPath);
|
||||
console.info(`extension has been installed successfully. vsix: ${installers[i]}`);
|
||||
}
|
||||
}
|
||||
await setConfiguration('workbench.enablePreviewFeatures', true);
|
||||
await setConfiguration('workbench.showConnectDialogOnStartup', false);
|
||||
await setConfiguration('test.testSetupCompleted', true);
|
||||
showStatusBarItem(statusBarItem, TEST_SETUP_COMPLETED_TEXT);
|
||||
});
|
||||
|
||||
vscode.commands.registerCommand('test.waitForExtensionsToLoad', async () => {
|
||||
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.IconProvider
|
||||
];
|
||||
|
||||
features_mssql.push(...commonFeatures);
|
||||
|
||||
const providerFeatureMapping: { providerId: string, features: azdata.DataProviderType[] }[] = [
|
||||
{
|
||||
providerId: 'MSSQL',
|
||||
features: features_mssql
|
||||
}, {
|
||||
providerId: 'PGSQL',
|
||||
features: commonFeatures
|
||||
}];
|
||||
|
||||
do {
|
||||
let extensions = vscode.extensions.all.filter(ext => { return expectedExtensions.indexOf(ext.id) !== -1; });
|
||||
const extensionsNotInReadyState: string[] = [];
|
||||
|
||||
extensions.forEach(extension => {
|
||||
if (!extension.isActive) {
|
||||
extensionsNotInReadyState.push(extension.id);
|
||||
}
|
||||
});
|
||||
|
||||
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 (extensionsNotInReadyState.length === 0 && providerTypesNotInReadyState.length === 0) {
|
||||
console.info('All extensions are ready');
|
||||
showStatusBarItem(statusBarItem, ALL_EXTENSION_LOADED_TEXT);
|
||||
break;
|
||||
} else if (extensionsNotInReadyState.length !== 0) {
|
||||
console.warn(`the following extensions are not ready: ${extensionsNotInReadyState.join(',')}`);
|
||||
} else {
|
||||
console.warn(`the following providers are not ready: ${providerTypesNotInReadyState.join(',')}`);
|
||||
}
|
||||
await new Promise(resolve => { setTimeout(resolve, 2000); });
|
||||
}
|
||||
while (true);
|
||||
});
|
||||
showStatusBarItem(statusBarItem, EXTENSION_LOADED_TEXT);
|
||||
}
|
||||
|
||||
function showStatusBarItem(statusBarItem: vscode.StatusBarItem, text: string) {
|
||||
statusBarItem.text = text;
|
||||
statusBarItem.tooltip = text;
|
||||
statusBarItem.show();
|
||||
clearTimeout(statusBarItemTimer);
|
||||
statusBarItemTimer = setTimeout(function () {
|
||||
statusBarItem.hide();
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
// this method is called when your extension is deactivated
|
||||
export function deactivate(): void {
|
||||
|
||||
}
|
||||
|
||||
async function setConfiguration(name: string, value: any) {
|
||||
await vscode.workspace.getConfiguration().update(name, value, true);
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import 'mocha';
|
||||
import * as vscode from 'vscode';
|
||||
import { isTestSetupCompleted } from './testContext';
|
||||
import * as assert from 'assert';
|
||||
import { getConfigValue, EnvironmentVariable_BDC_SERVER, EnvironmentVariable_BDC_USERNAME, EnvironmentVariable_BDC_PASSWORD, EnvironmentVariable_AZURE_PASSWORD, EnvironmentVariable_AZURE_SERVER, EnvironmentVariable_AZURE_USERNAME, EnvironmentVariable_STANDALONE_PASSWORD, EnvironmentVariable_STANDALONE_SERVER, EnvironmentVariable_STANDALONE_USERNAME, EnvironmentVariable_PYTHON_PATH } from './testConfig';
|
||||
|
||||
assert(getConfigValue(EnvironmentVariable_BDC_SERVER) !== undefined &&
|
||||
getConfigValue(EnvironmentVariable_BDC_USERNAME) !== undefined &&
|
||||
getConfigValue(EnvironmentVariable_BDC_PASSWORD) !== undefined &&
|
||||
getConfigValue(EnvironmentVariable_AZURE_PASSWORD) !== undefined &&
|
||||
getConfigValue(EnvironmentVariable_AZURE_SERVER) !== undefined &&
|
||||
getConfigValue(EnvironmentVariable_AZURE_USERNAME) !== undefined &&
|
||||
getConfigValue(EnvironmentVariable_STANDALONE_PASSWORD) !== undefined &&
|
||||
getConfigValue(EnvironmentVariable_STANDALONE_SERVER) !== undefined &&
|
||||
getConfigValue(EnvironmentVariable_STANDALONE_USERNAME) !== undefined &&
|
||||
getConfigValue(EnvironmentVariable_PYTHON_PATH) !== undefined, 'Required environment variables are not set, if you see this error in the build pipeline, make sure the environment variables are set properly in the build definition, otherwise for local dev environment make sure you follow the instructions in the readme file.');
|
||||
|
||||
if (!isTestSetupCompleted()) {
|
||||
suite('integration test setup', () => {
|
||||
test('test setup', async function () {
|
||||
this.timeout(5 * 60 * 1000);
|
||||
// Prepare the environment and make it ready for testing
|
||||
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
|
||||
await vscode.commands.executeCommand('workbench.action.reloadWindow');
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -6,12 +6,12 @@
|
||||
import 'mocha';
|
||||
import * as vscode from 'vscode';
|
||||
import * as azdata from 'azdata';
|
||||
import * as mssql from '../../mssql';
|
||||
import * as utils from './utils';
|
||||
import * as uuid from './uuid';
|
||||
import { isTestSetupCompleted } from './testContext';
|
||||
import * as mssql from '../../../mssql';
|
||||
import * as utils from '../utils';
|
||||
import * as uuid from '../uuid';
|
||||
import { isTestSetupCompleted } from '../testContext';
|
||||
import assert = require('assert');
|
||||
import { getStandaloneServer, TestServerProfile } from './testConfig';
|
||||
import { getStandaloneServer, TestServerProfile } from '../testConfig';
|
||||
|
||||
let cmsService: mssql.ICmsService;
|
||||
let server: TestServerProfile;
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
import 'mocha';
|
||||
import * as azdata from 'azdata';
|
||||
import * as utils from './utils';
|
||||
import * as utils from '../utils';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
import * as mssql from '../../mssql';
|
||||
import * as mssql from '../../../mssql';
|
||||
import * as vscode from 'vscode';
|
||||
import { isTestSetupCompleted } from './testContext';
|
||||
import { getStandaloneServer } from './testConfig';
|
||||
import { isTestSetupCompleted } from '../testContext';
|
||||
import { getStandaloneServer } from '../testConfig';
|
||||
import * as assert from 'assert';
|
||||
import { promisify } from 'util';
|
||||
|
||||
@@ -7,10 +7,10 @@ import 'mocha';
|
||||
import * as assert from 'assert';
|
||||
import * as azdata from 'azdata';
|
||||
import * as vscode from 'vscode';
|
||||
import { isTestSetupCompleted } from './testContext';
|
||||
import { sqlNotebookContent, writeNotebookToFile, sqlKernelMetadata, getFileName, pySparkNotebookContent, pySparkKernelMetadata, pythonKernelMetadata, sqlNotebookMultipleCellsContent, notebookContentForCellLanguageTest, sqlKernelSpec, pythonKernelSpec, pySparkKernelSpec, CellTypes } from './notebook.util';
|
||||
import { getConfigValue, EnvironmentVariable_PYTHON_PATH, TestServerProfile, getStandaloneServer } from './testConfig';
|
||||
import { connectToServer, sleep, testServerProfileToIConnectionProfile } from './utils';
|
||||
import { isTestSetupCompleted } from '../testContext';
|
||||
import { sqlNotebookContent, writeNotebookToFile, sqlKernelMetadata, getFileName, pySparkNotebookContent, pySparkKernelMetadata, pythonKernelMetadata, sqlNotebookMultipleCellsContent, notebookContentForCellLanguageTest, sqlKernelSpec, pythonKernelSpec, pySparkKernelSpec, CellTypes } from '../notebook.util';
|
||||
import { getConfigValue, EnvironmentVariable_PYTHON_PATH, TestServerProfile, getStandaloneServer } from '../testConfig';
|
||||
import { connectToServer, sleep, testServerProfileToIConnectionProfile } from '../utils';
|
||||
import * as fs from 'fs';
|
||||
import { stressify } from 'adstest';
|
||||
import { isNullOrUndefined, promisify } from 'util';
|
||||
@@ -5,9 +5,9 @@
|
||||
|
||||
import 'mocha';
|
||||
import * as azdata from 'azdata';
|
||||
import { isTestSetupCompleted } from './testContext';
|
||||
import { getBdcServer, TestServerProfile, getAzureServer, getStandaloneServer } from './testConfig';
|
||||
import { connectToServer, createDB, deleteDB, DefaultConnectTimeoutInMs, asyncTimeout } from './utils';
|
||||
import { isTestSetupCompleted } from '../testContext';
|
||||
import { getBdcServer, TestServerProfile, getAzureServer, getStandaloneServer } from '../testConfig';
|
||||
import { connectToServer, createDB, deleteDB, DefaultConnectTimeoutInMs, asyncTimeout } from '../utils';
|
||||
import * as assert from 'assert';
|
||||
import { stressify } from 'adstest';
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
import 'mocha';
|
||||
import * as azdata from 'azdata';
|
||||
import * as vscode from 'vscode';
|
||||
import * as utils from './utils';
|
||||
import * as mssql from '../../mssql';
|
||||
import * as utils from '../utils';
|
||||
import * as mssql from '../../../mssql';
|
||||
import * as os from 'os';
|
||||
import * as fs from 'fs';
|
||||
const path = require('path');
|
||||
import { isTestSetupCompleted } from './testContext';
|
||||
import { isTestSetupCompleted } from '../testContext';
|
||||
import * as assert from 'assert';
|
||||
import { getStandaloneServer } from './testConfig';
|
||||
import { getStandaloneServer } from '../testConfig';
|
||||
import { stressify } from 'adstest';
|
||||
import { promisify } from 'util';
|
||||
|
||||
Reference in New Issue
Block a user