mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Trying to remove intermittent ext test failure (#7330)
* Trying to remove intermittent ext test failure * taking PR comments
This commit is contained in:
@@ -59,7 +59,7 @@ if (context.RunTest) {
|
|||||||
|
|
||||||
assert(extractResult.success === true && extractResult.errorMessage === '', `Extract dacpac should succeed. Expected: there should be no error. Actual Error message: "${extractResult.errorMessage}"`);
|
assert(extractResult.success === true && extractResult.errorMessage === '', `Extract dacpac should succeed. Expected: there should be no error. Actual Error message: "${extractResult.errorMessage}"`);
|
||||||
} finally {
|
} finally {
|
||||||
await utils.deleteDB(databaseName, ownerUri);
|
await utils.deleteDB(server, databaseName, ownerUri);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ if (context.RunTest) {
|
|||||||
await utils.assertFileGenerationResult(packageFilePath, retryCount);
|
await utils.assertFileGenerationResult(packageFilePath, retryCount);
|
||||||
assert(exportResult.success === true && exportResult.errorMessage === '', `Expected: Export bacpac should succeed and there should be no error. Actual Error message: "${exportResult.errorMessage}"`);
|
assert(exportResult.success === true && exportResult.errorMessage === '', `Expected: Export bacpac should succeed and there should be no error. Actual Error message: "${exportResult.errorMessage}"`);
|
||||||
} finally {
|
} finally {
|
||||||
await utils.deleteDB(databaseName, ownerUri);
|
await utils.deleteDB(server, databaseName, ownerUri);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ class ObjectExplorerTester {
|
|||||||
assert(expectedActions.length === actions.length && expectedString === actualString, `Expected actions: "${expectedString}", Actual actions: "${actualString}"`);
|
assert(expectedActions.length === actions.length && expectedString === actualString, `Expected actions: "${expectedString}", Actual actions: "${actualString}"`);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
await deleteDB(dbName, ownerUri);
|
await deleteDB(server, dbName, ownerUri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,8 +179,8 @@ class SchemaCompareTester {
|
|||||||
fs.unlinkSync(filepath);
|
fs.unlinkSync(filepath);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
await utils.deleteDB(sourceDB, ownerUri);
|
await utils.deleteDB(server, sourceDB, ownerUri);
|
||||||
await utils.deleteDB(targetDB, ownerUri);
|
await utils.deleteDB(server, targetDB, ownerUri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,7 +249,7 @@ class SchemaCompareTester {
|
|||||||
assert(openScmpResult.targetEndpointInfo.databaseName === target.databaseName, `Expected: target database to be ${target.databaseName}, Actual: ${openScmpResult.targetEndpointInfo.databaseName}`);
|
assert(openScmpResult.targetEndpointInfo.databaseName === target.databaseName, `Expected: target database to be ${target.databaseName}, Actual: ${openScmpResult.targetEndpointInfo.databaseName}`);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
await utils.deleteDB(targetDB, ownerUri);
|
await utils.deleteDB(server, targetDB, ownerUri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import * as azdata from 'azdata';
|
|||||||
import * as vscode from 'vscode';
|
import * as vscode from 'vscode';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import { TestServerProfile } from './testConfig';
|
import { TestServerProfile } from './testConfig';
|
||||||
|
import { isNullOrUndefined } from 'util';
|
||||||
|
|
||||||
// default server connection timeout
|
// default server connection timeout
|
||||||
export const DefaultConnectTimeoutInMs: number = 10000;
|
export const DefaultConnectTimeoutInMs: number = 10000;
|
||||||
@@ -79,7 +80,6 @@ export async function sleep(ms: number): Promise<{}> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function createDB(dbName: string, ownerUri: string): Promise<void> {
|
export async function createDB(dbName: string, ownerUri: string): Promise<void> {
|
||||||
let queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>('MSSQL', azdata.DataProviderType.QueryProvider);
|
|
||||||
let query = `BEGIN TRY
|
let query = `BEGIN TRY
|
||||||
CREATE DATABASE ${dbName}
|
CREATE DATABASE ${dbName}
|
||||||
SELECT 1 AS NoError
|
SELECT 1 AS NoError
|
||||||
@@ -88,12 +88,11 @@ export async function createDB(dbName: string, ownerUri: string): Promise<void>
|
|||||||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||||||
END CATCH`;
|
END CATCH`;
|
||||||
|
|
||||||
let dbcreatedResult = await queryProvider.runQueryAndReturn(ownerUri, query);
|
let dbCreatedResult = await this.runQuery(query, ownerUri);
|
||||||
assert(dbcreatedResult.columnInfo[0].columnName !== 'ErrorMessage', 'DB creation threw error');
|
assert(dbCreatedResult.columnInfo[0].columnName !== 'ErrorMessage', 'DB creation threw error');
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteDB(dbName: string, ownerUri: string): Promise<void> {
|
export async function deleteDB(server: TestServerProfile, dbName: string, ownerUri: string): Promise<void> {
|
||||||
let queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>('MSSQL', azdata.DataProviderType.QueryProvider);
|
|
||||||
let query = `BEGIN TRY
|
let query = `BEGIN TRY
|
||||||
ALTER DATABASE ${dbName}
|
ALTER DATABASE ${dbName}
|
||||||
SET OFFLINE
|
SET OFFLINE
|
||||||
@@ -105,13 +104,41 @@ export async function deleteDB(dbName: string, ownerUri: string): Promise<void>
|
|||||||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||||||
END CATCH`;
|
END CATCH`;
|
||||||
|
|
||||||
await queryProvider.runQueryAndReturn(ownerUri, query);
|
ownerUri = await ensureServerConnected(server, ownerUri);
|
||||||
|
let dbDeleteResult = await this.runQuery(query, ownerUri);
|
||||||
|
assert(dbDeleteResult.columnInfo[0].columnName !== 'ErrorMessage', 'DB deletion threw error');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function ensureServerConnected(server: TestServerProfile, ownerUri: string): Promise<string> {
|
||||||
|
try {
|
||||||
|
// The queries might fail if connection is removed
|
||||||
|
// Check if connection is present - if not create new connection and use OwnerUri from there
|
||||||
|
let connection = await azdata.connection.getConnection(ownerUri);
|
||||||
|
if (isNullOrUndefined(connection)) {
|
||||||
|
let connectionId = await connectToServer(server);
|
||||||
|
return azdata.connection.getUriForConnection(connectionId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (ex) {
|
||||||
|
console.error('utils.ensureServerConnected : Failed to get or create connection');
|
||||||
|
console.error(ex); // not throwing here because it is a safety net and actual query will throw if failed.
|
||||||
|
}
|
||||||
|
return ownerUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export async function runQuery(query: string, ownerUri: string): Promise<azdata.SimpleExecuteResult> {
|
export async function runQuery(query: string, ownerUri: string): Promise<azdata.SimpleExecuteResult> {
|
||||||
|
try {
|
||||||
let queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>('MSSQL', azdata.DataProviderType.QueryProvider);
|
let queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>('MSSQL', azdata.DataProviderType.QueryProvider);
|
||||||
let result = await queryProvider.runQueryAndReturn(ownerUri, query);
|
let result = await queryProvider.runQueryAndReturn(ownerUri, query);
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
|
catch (ex) {
|
||||||
|
console.error('utils.runQuery : Failed to run query');
|
||||||
|
console.error(ex);
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function assertThrowsAsync(fn: () => Promise<any>, msg: string): Promise<void> {
|
export async function assertThrowsAsync(fn: () => Promise<any>, msg: string): Promise<void> {
|
||||||
|
|||||||
Reference in New Issue
Block a user