mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-12 11:08:31 -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}"`);
|
||||
} finally {
|
||||
await utils.deleteDB(databaseName, ownerUri);
|
||||
await utils.deleteDB(server, databaseName, ownerUri);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -94,7 +94,7 @@ if (context.RunTest) {
|
||||
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}"`);
|
||||
} 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}"`);
|
||||
}
|
||||
finally {
|
||||
await deleteDB(dbName, ownerUri);
|
||||
await deleteDB(server, dbName, ownerUri);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,8 +179,8 @@ class SchemaCompareTester {
|
||||
fs.unlinkSync(filepath);
|
||||
}
|
||||
finally {
|
||||
await utils.deleteDB(sourceDB, ownerUri);
|
||||
await utils.deleteDB(targetDB, ownerUri);
|
||||
await utils.deleteDB(server, sourceDB, 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}`);
|
||||
}
|
||||
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 fs from 'fs';
|
||||
import { TestServerProfile } from './testConfig';
|
||||
import { isNullOrUndefined } from 'util';
|
||||
|
||||
// default server connection timeout
|
||||
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> {
|
||||
let queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>('MSSQL', azdata.DataProviderType.QueryProvider);
|
||||
let query = `BEGIN TRY
|
||||
CREATE DATABASE ${dbName}
|
||||
SELECT 1 AS NoError
|
||||
@@ -88,12 +88,11 @@ export async function createDB(dbName: string, ownerUri: string): Promise<void>
|
||||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||||
END CATCH`;
|
||||
|
||||
let dbcreatedResult = await queryProvider.runQueryAndReturn(ownerUri, query);
|
||||
assert(dbcreatedResult.columnInfo[0].columnName !== 'ErrorMessage', 'DB creation threw error');
|
||||
let dbCreatedResult = await this.runQuery(query, ownerUri);
|
||||
assert(dbCreatedResult.columnInfo[0].columnName !== 'ErrorMessage', 'DB creation threw error');
|
||||
}
|
||||
|
||||
export async function deleteDB(dbName: string, ownerUri: string): Promise<void> {
|
||||
let queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>('MSSQL', azdata.DataProviderType.QueryProvider);
|
||||
export async function deleteDB(server: TestServerProfile, dbName: string, ownerUri: string): Promise<void> {
|
||||
let query = `BEGIN TRY
|
||||
ALTER DATABASE ${dbName}
|
||||
SET OFFLINE
|
||||
@@ -105,13 +104,41 @@ export async function deleteDB(dbName: string, ownerUri: string): Promise<void>
|
||||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||||
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> {
|
||||
let queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>('MSSQL', azdata.DataProviderType.QueryProvider);
|
||||
let result = await queryProvider.runQueryAndReturn(ownerUri, query);
|
||||
return result;
|
||||
try {
|
||||
let queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>('MSSQL', azdata.DataProviderType.QueryProvider);
|
||||
let result = await queryProvider.runQueryAndReturn(ownerUri, query);
|
||||
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> {
|
||||
|
||||
Reference in New Issue
Block a user