Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SNOW-930831: Add randomization to the table name in put/get test #660

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 18 additions & 14 deletions test/integration/testConnectionPoolExecute.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@

const async = require('async');
const testUtil = require('./testUtil');
const {randomizeName} = require('./testUtil');

describe('Execute test with Pool', function () {
let connectionPool = null;
const createNodeTSQL = 'create or replace table NodeT(colA number, colB varchar)';
const selectAllSQL = 'select * from NodeT';
const insertNodeTSQL = 'insert into NodeT values(1, \'a\')';
const updateNodeTSQL = 'update NodeT set COLA = 2, COLB = \'b\' where COLA = 1';
const dropNodeTSQL = 'drop table if exists NodeT';
const nodeT= randomizeName('nodeT');
sfc-gh-pfus marked this conversation as resolved.
Show resolved Hide resolved
const createNodeTSQL = `create or replace table ${nodeT}(colA number, colB varchar)`;
const selectAllSQL = `select * from ${nodeT}`;
const insertNodeTSQL = `insert into ${nodeT} values(1, \'a\')`;
const updateNodeTSQL = `update ${nodeT} set COLA = 2, COLB = \'b\' where COLA = 1`;
const dropNodeTSQL = `drop table if exists ${nodeT}`;

before(function (done) {
connectionPool = testUtil.createConnectionPool();
Expand Down Expand Up @@ -90,7 +92,7 @@ describe('Execute test with Pool', function () {
testUtil.executeQueryAndVerifyUsePool(
connectionPool,
createNodeTSQL,
[{'status': 'Table NODET successfully created.'}],
[{'status': `Table ${nodeT.toUpperCase()} successfully created.`}],
callback
);
},
Expand All @@ -109,14 +111,16 @@ describe('Execute test with Pool', function () {

describe('Execute test use Pool for multiple connections', function () {
let connectionPool = null;
const createNodeASQL = 'create or replace table NodeA(colA number, colB varchar);';
const createNodeBSQL = 'create or replace table NodeB(colA number, colB varchar);';
const selectAllSQLFromNodeA = 'select * from NodeA;';
const selectAllSQLFromNodeB = 'select * from NodeB;';
const insertNodeASQL = 'insert into NodeA values(1, \'a\');';
const insertNodeBSQL = 'insert into NodeB values(1, \'b\');';
const dropNodeASQL = 'drop table if exists NodeA;';
const dropNodeBSQL = 'drop table if exists NodeB;';
const nodeA = randomizeName('NodeA');
const nodeB = randomizeName('NodeB');
const createNodeASQL = `create or replace table ${nodeA} (colA number, colB varchar);`;
const createNodeBSQL = `create or replace table ${nodeB}(colA number, colB varchar);`;
const selectAllSQLFromNodeA = `select * from ${nodeA};`;
const selectAllSQLFromNodeB = `select * from ${nodeB};`;
const insertNodeASQL = `insert into ${nodeA} values(1, \'a\');`;
const insertNodeBSQL = `insert into ${nodeB} values(1, \'b\');`;
const dropNodeASQL = `drop table if exists ${nodeA};`;
const dropNodeBSQL = `drop table if exists ${nodeB};`;

before(function (done) {
connectionPool = testUtil.createConnectionPool();
Expand Down
19 changes: 11 additions & 8 deletions test/integration/testLargeResultSet.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const assert = require('assert');
const async = require('async');
const testUtil = require('./testUtil');
const { configureLogger } = require('../configureLogger');
const {randomizeName} = require('./testUtil');

describe('Large result Set Tests', function ()
{
Expand Down Expand Up @@ -110,10 +111,12 @@ describe('Large result Set Tests', function ()

describe('Large Result Set Tests For Variant Column Type', function ()
{
const createTempTable = 'create or replace table testVariantTemp(value string)';
const createTableWithVariant = 'create or replace table testVariantTable(colA variant)';
const dropTableWithVariant = 'drop table if exists testVariantTable';
const dropTempTable = 'drop table if exists testVariantTemp';
const testVariantTemp = randomizeName('testVariantTemp');
const testVariantTable = randomizeName('testVariantTable');
const createTempTable = `create or replace table ${testVariantTemp} (value string)`;
const createTableWithVariant = `create or replace table ${testVariantTable} (colA variant)`;
const dropTableWithVariant = `drop table if exists ${testVariantTable}`;
const dropTempTable = `drop table if exists ${testVariantTemp} `;

before(async () =>
{
Expand All @@ -129,9 +132,9 @@ describe('Large result Set Tests', function ()

it('testSelectOnVariantColumnForLargeResultSets', function (done)
{
const insertTemp = 'insert into testVariantTemp values (?)';
const insertVariant = 'insert into testVariantTable select parse_json(value) from testVariantTemp';
const selectVariant = 'select * from testVariantTable';
const insertTemp = `insert into ${testVariantTemp} values (?)`;
const insertVariant = `insert into ${testVariantTable} select parse_json(value) from ${testVariantTemp}`;
const selectVariant = `select * from ${testVariantTable}`;

const arrJSON = [];
for (let i = 0; i < sourceRowCount; i++)
Expand Down Expand Up @@ -254,7 +257,7 @@ describe('Large result Set Tests', function ()

describe('SNOW-743920:Large result set with ~35 chunks', function () {
let connection;
const tableName = 'test_table';
const tableName = randomizeName('test_table');
const sourceRowCount = 251002;
const generatedRowSize = 350;
const createTable = `create or replace table ${tableName} (data string)`;
Expand Down
10 changes: 8 additions & 2 deletions test/integration/testPutGet.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ const tmp = require('tmp');
const os = require('os');
const path = require('path');
const zlib = require('zlib');
const {randomizeName} = require("./testUtil");

const DATABASE_NAME = connOption.valid.database;
const SCHEMA_NAME = connOption.valid.schema;
const TEMP_TABLE_NAME = 'TEMP_TABLE';

const SKIPPED = 'SKIPPED';
const UPLOADED = 'UPLOADED';
Expand Down Expand Up @@ -75,6 +75,7 @@ describe('PUT GET test', function () {

let connection;
let tmpFile;
const TEMP_TABLE_NAME = randomizeName('TEMP_TABLE');
const createTable = `create or replace table ${TEMP_TABLE_NAME} (${COL1} STRING, ${COL2} STRING, ${COL3} STRING)`;
const truncateTable = `truncate table if exists ${TEMP_TABLE_NAME}`;
const copyInto = `COPY INTO ${TEMP_TABLE_NAME}`;
Expand Down Expand Up @@ -292,6 +293,7 @@ describe('PUT GET overwrite test', function () {
this.retries(3); // this test suit are considered as flaky test

let connection;
const TEMP_TABLE_NAME = randomizeName('TEMP_TABLE');
const createTable = `create or replace table ${TEMP_TABLE_NAME} (${COL1} STRING, ${COL2} STRING, ${COL3} STRING)`;
const removeFile = `REMOVE @${DATABASE_NAME}.${SCHEMA_NAME}.%${TEMP_TABLE_NAME}`;
const dropTable = `DROP TABLE IF EXISTS ${TEMP_TABLE_NAME}`;
Expand Down Expand Up @@ -477,8 +479,8 @@ describe('PUT GET test with GCS_USE_DOWNSCOPED_CREDENTIAL', function () {
this.retries(3); // this test suit are considered as flaky test

let connection;

let tmpFile;
const TEMP_TABLE_NAME = randomizeName('TEMP_TABLE');
const createTable = `create or replace table ${TEMP_TABLE_NAME} (${COL1} STRING, ${COL2} STRING, ${COL3} STRING)`;
const copyInto = `COPY INTO ${TEMP_TABLE_NAME}`;
const removeFile = `REMOVE @${DATABASE_NAME}.${SCHEMA_NAME}.%${TEMP_TABLE_NAME}`;
Expand Down Expand Up @@ -649,6 +651,7 @@ describe('PUT GET test with GCS_USE_DOWNSCOPED_CREDENTIAL', function () {
describe('PUT GET test with multiple files', function () {
let connection;
let tmpDir;
const TEMP_TABLE_NAME = randomizeName('TEMP_TABLE');
const stage = `@${DATABASE_NAME}.${SCHEMA_NAME}.%${TEMP_TABLE_NAME}`;
const removeFile = `REMOVE ${stage}`;
let tmpFiles; // FileSyncObject[]
Expand Down Expand Up @@ -862,6 +865,7 @@ describe('PUT GET test with multiple files', function () {

describe('PUT GET test without compress', function () {
let connection;
const TEMP_TABLE_NAME = randomizeName('TEMP_TABLE');
const stage = `@${DATABASE_NAME}.${SCHEMA_NAME}.%${TEMP_TABLE_NAME}`;
const createTable = `create or replace table ${TEMP_TABLE_NAME} (${COL1} STRING, ${COL2} STRING, ${COL3} STRING)`;
const removeFile = `REMOVE ${stage}`;
Expand Down Expand Up @@ -959,6 +963,7 @@ describe('PUT GET test without compress', function () {

describe('PUT GET test with different size', function () {
let connection;
const TEMP_TABLE_NAME = randomizeName('TEMP_TABLE');
const stage = `@${DATABASE_NAME}.${SCHEMA_NAME}.%${TEMP_TABLE_NAME}`;
const createTable = `create or replace table ${TEMP_TABLE_NAME} (${COL1} STRING, ${COL2} STRING, ${COL3} STRING)`;
const removeFile = `REMOVE ${stage}`;
Expand Down Expand Up @@ -1092,6 +1097,7 @@ describe('PUT GET test with different size', function () {

describe('PUT GET test with error', function () {
let connection;
const TEMP_TABLE_NAME = randomizeName('TEMP_TABLE');
const stage = `@${DATABASE_NAME}.${SCHEMA_NAME}.%${TEMP_TABLE_NAME}`;
const stage_not_exist = `@${DATABASE_NAME}.${SCHEMA_NAME}.%NONEXISTTABLE`;
const createTable = `create or replace table ${TEMP_TABLE_NAME} (${COL1} STRING, ${COL2} STRING, ${COL3} STRING)`;
Expand Down
12 changes: 7 additions & 5 deletions test/integration/testPutSmallFiles.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ var os = require('os');
var path = require('path');
var testUtil = require('./testUtil');
const connOption = require('./connectionOptions');
const {randomizeName} = require('./testUtil');

const DATABASE_NAME = connOption.valid.database;
const SCHEMA_NAME = connOption.valid.schema;
const WAREHOUSE_NAME = connOption.valid.warehouse;
const TABLE = randomizeName('TESTTBL');

var connection;
var files = new Array();
Expand All @@ -20,7 +22,7 @@ function uploadFiles(callback, index = 0)
{
if(index < files.length)
{
var putQuery = `PUT file://${files[index]} @${DATABASE_NAME}.${SCHEMA_NAME}.%TESTTBL`;
var putQuery = `PUT file://${files[index]} @${DATABASE_NAME}.${SCHEMA_NAME}.%${TABLE}`;
var insertStmt = connection.execute({
sqlText: putQuery,
complete: function (err, stmt) {
Expand All @@ -46,10 +48,10 @@ describe('Test Put Small Files', function ()
{
this.timeout(100000);
var useWH = `use warehouse ${WAREHOUSE_NAME}`;
var createTable = `create or replace table ${DATABASE_NAME}.${SCHEMA_NAME}.TESTTBL(colA string, colB number, colC date, colD time, colE TIMESTAMP_NTZ, colF TIMESTAMP_TZ)`;
var copytInto = `copy into ${DATABASE_NAME}.${SCHEMA_NAME}.TESTTBL`;
var select1row = `select * from ${DATABASE_NAME}.${SCHEMA_NAME}.TESTTBL where colB = 3`;
var selectAll = `select count(*) AS NUM from ${DATABASE_NAME}.${SCHEMA_NAME}.TESTTBL`;
var createTable = `create or replace table ${DATABASE_NAME}.${SCHEMA_NAME}.${TABLE}(colA string, colB number, colC date, colD time, colE TIMESTAMP_NTZ, colF TIMESTAMP_TZ)`;
var copytInto = `copy into ${DATABASE_NAME}.${SCHEMA_NAME}.${TABLE}`;
var select1row = `select * from ${DATABASE_NAME}.${SCHEMA_NAME}.${TABLE} where colB = 3`;
var selectAll = `select count(*) AS NUM from ${DATABASE_NAME}.${SCHEMA_NAME}.${TABLE}`;
var count = 5000;

before(function (done)
Expand Down
12 changes: 12 additions & 0 deletions test/integration/testUtil.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const snowflake = require('./../../lib/snowflake');
const connOptions = require('./connectionOptions');
const assert = require('assert');
const fs = require('fs');
const crypto = require('crypto');

module.exports.createConnection = function (validConnectionOptionsOverride = {}) {
return snowflake.createConnection({
Expand Down Expand Up @@ -244,3 +245,14 @@ module.exports.deleteFolderSyncIgnoringErrors = function (directory) {
console.warn(`Cannot delete folder ${directory}: ${JSON.stringify(e)}`);
}
};

/**
* @param name string
*/
module.exports.randomizeName = function (name) {
if (name === null || name.trim() === '') {
throw new Error('Name must be non empty string');
}
const randomString = crypto.randomBytes(4).toString('hex');
return name.concat(randomString);
};
Loading