mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-14 18:46:34 -05:00
Added setup and teardown for test; add variable to control run python… (#4782)
* Added setup and teardown for test; add variable to control run python/pyspark tests; remove dup code in clearAlloutput tests * Resolve PR comments
This commit is contained in:
@@ -6,22 +6,39 @@
|
||||
'use strict';
|
||||
|
||||
import 'mocha';
|
||||
import assert = require('assert');
|
||||
|
||||
import * as assert from 'assert';
|
||||
import * as azdata from 'azdata';
|
||||
import * as vscode from 'vscode';
|
||||
import { context } from './testContext';
|
||||
import { sqlNotebookContent, writeNotebookToFile, sqlKernelMetadata } from './notebook.util';
|
||||
import { sqlNotebookContent, writeNotebookToFile, sqlKernelMetadata, getFileName, pySparkNotebookContent, pySpark3KernelMetadata, pythonKernelMetadata } from './notebook.util';
|
||||
import { getBdcServer } from './testConfig';
|
||||
import { connectToServer } from './utils';
|
||||
import * as fs from 'fs';
|
||||
|
||||
if (context.RunTest) {
|
||||
suite('Notebook integration test suite', function() {
|
||||
suite('Notebook integration test suite', function () {
|
||||
setup(function () {
|
||||
console.log(`Start "${this.currentTest.title}"`);
|
||||
});
|
||||
teardown(function () {
|
||||
let testName = this.currentTest.title;
|
||||
try {
|
||||
let fileName = getFileName(testName);
|
||||
if (fs.existsSync(fileName)) {
|
||||
fs.unlinkSync(fileName);
|
||||
console.log(`"${fileName}" is deleted.`);
|
||||
}
|
||||
}
|
||||
catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
finally {
|
||||
console.log(`"${testName}" is done`);
|
||||
}
|
||||
});
|
||||
|
||||
test('Sql NB test', async function () {
|
||||
let testName = this.test.title;
|
||||
console.log(`Start "${testName}"`);
|
||||
let notebook = await openNotebook(sqlNotebookContent, sqlKernelMetadata);
|
||||
let notebook = await openNotebook(sqlNotebookContent, sqlKernelMetadata, this.test.title);
|
||||
const expectedOutput0 = '(1 row affected)';
|
||||
let cellOutputs = notebook.document.cells[0].contents.outputs;
|
||||
console.log('Got cell outputs');
|
||||
@@ -31,75 +48,46 @@ if (context.RunTest) {
|
||||
assert(actualOutput0 === expectedOutput0, `Expected row count: ${expectedOutput0}, Actual: ${actualOutput0}`);
|
||||
let actualOutput2 = (<azdata.nb.IExecuteResult>cellOutputs[2]).data['application/vnd.dataresource+json'].data[0];
|
||||
assert(actualOutput2[0] === '1', `Expected result: 1, Actual: '${actualOutput2[0]}'`);
|
||||
|
||||
if (fs.existsSync(notebook.document.fileName)) {
|
||||
fs.unlinkSync(notebook.document.fileName);
|
||||
}
|
||||
console.log(`"${testName}" done`);
|
||||
});
|
||||
|
||||
// test('Python3 notebook test', async function () {
|
||||
// console.log('Start Python3 NB test');
|
||||
// let notebook = await openNotebook(pySparkNotebookContent, pythonKernelMetadata);
|
||||
// let cellOutputs = notebook.document.cells[0].contents.outputs;
|
||||
// console.log('Got cell outputs');
|
||||
// let result = (<azdata.nb.IExecuteResult>cellOutputs[0]).data['text/plain'];
|
||||
// assert(result === '2', `Expected: 2, Actual: ${result}`);
|
||||
// console.log('Python3 NB done');
|
||||
// });
|
||||
|
||||
// test('Clear all outputs - Python3 notebook ', async function () {
|
||||
// let notebook = await openNotebook(pySparkNotebookContent, pythonKernelMetadata);
|
||||
// //Check if at least one cell with output
|
||||
// let cellWithOutputs = notebook.document.cells.find(cell => cell.contents && cell.contents.outputs && cell.contents.outputs.length > 0);
|
||||
// console.log("Before clearing cell outputs");
|
||||
// if (cellWithOutputs) {
|
||||
// let clearedOutputs = await notebook.clearAllOutputs();
|
||||
// let cells = notebook.document.cells;
|
||||
// cells.forEach(cell => {
|
||||
// assert(cell.contents && cell.contents.outputs && cell.contents.outputs.length === 0, `Expected Output: 0, Actual: '${cell.contents.outputs.length}'`);
|
||||
// });
|
||||
// assert(clearedOutputs, 'Outputs of all the code cells from Python notebook should be cleared');
|
||||
// console.log("After clearing cell outputs");
|
||||
// }
|
||||
// assert(cellWithOutputs === undefined, 'Could not find notebook cells with outputs');
|
||||
// });
|
||||
|
||||
test('Clear all outputs - SQL notebook ', async function () {
|
||||
let notebook = await openNotebook(sqlNotebookContent, sqlKernelMetadata);
|
||||
let cellWithOutputs = notebook.document.cells.find(cell => cell.contents && cell.contents.outputs && cell.contents.outputs.length > 0);
|
||||
console.log('Before clearing cell outputs');
|
||||
if (cellWithOutputs) {
|
||||
let clearedOutputs = await notebook.clearAllOutputs();
|
||||
let cells = notebook.document.cells;
|
||||
cells.forEach(cell => {
|
||||
assert(cell.contents && cell.contents.outputs && cell.contents.outputs.length === 0, `Expected cell outputs to be empty. Actual: '${cell.contents.outputs}'`);
|
||||
});
|
||||
assert(clearedOutputs, 'Outputs of all the code cells from SQL notebook should be cleared');
|
||||
console.log('After clearing cell outputs');
|
||||
}
|
||||
else {
|
||||
throw new Error('Could not find notebook cells with outputs');
|
||||
}
|
||||
let notebook = await openNotebook(sqlNotebookContent, sqlKernelMetadata, this.test.title);
|
||||
await verifyClearAllOutputs(notebook);
|
||||
});
|
||||
|
||||
if (process.env.RUN_PYTHON3_TEST === '1') {
|
||||
test('Python3 notebook test', async function () {
|
||||
let notebook = await openNotebook(pySparkNotebookContent, pythonKernelMetadata, this.test.title);
|
||||
let cellOutputs = notebook.document.cells[0].contents.outputs;
|
||||
console.log('Got cell outputs');
|
||||
let result = (<azdata.nb.IExecuteResult>cellOutputs[0]).data['text/plain'];
|
||||
assert(result === '2', `Expected python result: 2, Actual: ${result}`);
|
||||
});
|
||||
|
||||
// test('PySpark3 notebook test', async function () {
|
||||
// this.timeout(12000);
|
||||
// let notebook = await openNotebook(pySparkNotebookContent, pySpark3KernelMetadata);
|
||||
// let cellOutputs = notebook.document.cells[0].contents.outputs;
|
||||
// let sparkResult = (<azdata.nb.IStreamResult>cellOutputs[3]).text;
|
||||
// assert(sparkResult === '2', `Expected: 2, Actual: ${sparkResult}`);
|
||||
// });
|
||||
test('Clear all outputs - Python3 notebook ', async function () {
|
||||
let notebook = await openNotebook(pySparkNotebookContent, pythonKernelMetadata, this.test.title);
|
||||
await verifyClearAllOutputs(notebook);
|
||||
});
|
||||
}
|
||||
|
||||
if (process.env.RUN_PYSPARK_TEST === '1') {
|
||||
test('PySpark3 notebook test', async function () {
|
||||
let notebook = await openNotebook(pySparkNotebookContent, pySpark3KernelMetadata, this.test.title);
|
||||
let cellOutputs = notebook.document.cells[0].contents.outputs;
|
||||
let sparkResult = (<azdata.nb.IStreamResult>cellOutputs[3]).text;
|
||||
assert(sparkResult === '2', `Expected spark result: 2, Actual: ${sparkResult}`);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
async function openNotebook(content: azdata.nb.INotebookContents, kernelMetadata: any): Promise<azdata.nb.NotebookEditor> {
|
||||
|
||||
async function openNotebook(content: azdata.nb.INotebookContents, kernelMetadata: any, testName: string): Promise<azdata.nb.NotebookEditor> {
|
||||
let notebookConfig = vscode.workspace.getConfiguration('notebook');
|
||||
notebookConfig.update('pythonPath', process.env.PYTHON_TEST_PATH, 1);
|
||||
let server = await getBdcServer();
|
||||
await connectToServer(server, 6000);
|
||||
let pythonNotebook = Object.assign({}, content, { metadata: kernelMetadata });
|
||||
let uri = writeNotebookToFile(pythonNotebook);
|
||||
let uri = writeNotebookToFile(pythonNotebook, testName);
|
||||
console.log(uri);
|
||||
let notebook = await azdata.nb.showNotebookDocument(uri);
|
||||
console.log('Notebook is opened');
|
||||
@@ -111,4 +99,16 @@ async function openNotebook(content: azdata.nb.INotebookContents, kernelMetadata
|
||||
assert(notebook !== undefined && notebook !== null, 'Expected notebook object is defined');
|
||||
return notebook;
|
||||
}
|
||||
async function verifyClearAllOutputs(notebook: azdata.nb.NotebookEditor) {
|
||||
let cellWithOutputs = notebook.document.cells.find(cell => cell.contents && cell.contents.outputs && cell.contents.outputs.length > 0);
|
||||
assert(cellWithOutputs !== undefined, 'Could not find notebook cells with outputs');
|
||||
console.log('Before clearing cell outputs');
|
||||
let clearedOutputs = await notebook.clearAllOutputs();
|
||||
let cells = notebook.document.cells;
|
||||
cells.forEach(cell => {
|
||||
assert(cell.contents && cell.contents.outputs && cell.contents.outputs.length === 0, `Expected Output: 0, Actual: '${cell.contents.outputs.length}'`);
|
||||
});
|
||||
assert(clearedOutputs, 'Outputs of all the code cells from Python notebook should be cleared');
|
||||
console.log('After clearing cell outputs');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user