@nsshunt/stsdatamanagement 1.17.65 → 1.17.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cliworker-old.js +87 -0
- package/dist/cliworker-old.js.map +1 -0
- package/dist/cliworker.js +86 -0
- package/dist/cliworker.js.map +1 -0
- package/dist/databaseutils.js +77 -0
- package/dist/databaseutils.js.map +1 -0
- package/dist/datagenerator-old.js +255 -0
- package/dist/datagenerator-old.js.map +1 -0
- package/dist/datagenerator.js +240 -0
- package/dist/datagenerator.js.map +1 -0
- package/dist/dbaccess.js +9 -0
- package/dist/dbaccess.js.map +1 -0
- package/dist/dbaccess.test.js +55 -0
- package/dist/dbaccess.test.js.map +1 -0
- package/dist/dbbuild.test.js +30 -0
- package/dist/dbbuild.test.js.map +1 -0
- package/dist/dberrors.js +71 -0
- package/dist/dberrors.js.map +1 -0
- package/dist/pgaccesslayer.js +820 -0
- package/dist/pgaccesslayer.js.map +1 -0
- package/dist/pgpoolmanager.js +113 -0
- package/dist/pgpoolmanager.js.map +1 -0
- package/dist/pgutils.js +71 -0
- package/dist/pgutils.js.map +1 -0
- package/dist/setupdb.js +7 -0
- package/dist/setupdb.js.map +1 -0
- package/dist/stsDataManagementTypes.js +2 -0
- package/dist/stsDataManagementTypes.js.map +1 -0
- package/package.json +4 -2
- package/dist/stsdatamanagement.mjs +0 -21142
- package/dist/stsdatamanagement.mjs.map +0 -1
- package/dist/stsdatamanagement.umd.js +0 -21149
- package/dist/stsdatamanagement.umd.js.map +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// https://stackoverflow.com/questions/56356655/structuring-a-typescript-project-with-workers
|
|
2
|
+
//let faker = require('faker');
|
|
3
|
+
//import { parentPort } from 'node:worker_threads';
|
|
4
|
+
import crypto from 'crypto';
|
|
5
|
+
import { PGPoolManager } from './pgpoolmanager';
|
|
6
|
+
import { PGAccessLayer } from './pgaccesslayer';
|
|
7
|
+
/*
|
|
8
|
+
const { parentPort, workerData } = require('node:worker_threads');
|
|
9
|
+
//require('node:crypto');
|
|
10
|
+
const { PGPoolManager } = require('./pgpoolmanager')
|
|
11
|
+
const { PGAccessLayer } = require('./pgaccesslayer')
|
|
12
|
+
*/
|
|
13
|
+
const userid = 'dbinitrunner';
|
|
14
|
+
const resfakerprefix = 'RESFK-';
|
|
15
|
+
const rescopyprefix = 'RESCP-';
|
|
16
|
+
class CliWorker {
|
|
17
|
+
fakerdataarray = [];
|
|
18
|
+
fakerdataarray2 = [];
|
|
19
|
+
totalDataSize = 0;
|
|
20
|
+
avgDataSize = 0;
|
|
21
|
+
copybatchsize = 250;
|
|
22
|
+
run = async (data) => {
|
|
23
|
+
const { start, iterations, datamin } = data.data;
|
|
24
|
+
let { datamax } = data.data;
|
|
25
|
+
let count = start;
|
|
26
|
+
const accesslayer = new PGAccessLayer(new PGPoolManager());
|
|
27
|
+
if (datamax > 0) {
|
|
28
|
+
datamax = (datamax <= datamin) ? datamin + 1 : datamax;
|
|
29
|
+
}
|
|
30
|
+
for (let i = 0; i < iterations; i++) {
|
|
31
|
+
//let randcard = faker.helpers.createCard();
|
|
32
|
+
const coreRecordSizeRange = crypto.randomInt(128, 192);
|
|
33
|
+
//const coreRecordSizeRange = 128;
|
|
34
|
+
const coreRecordSize = Math.floor(coreRecordSizeRange / 2);
|
|
35
|
+
let randcard = crypto.randomBytes(coreRecordSize).toString('hex');
|
|
36
|
+
//let randcard = 'helloworld'
|
|
37
|
+
if (datamax > 0) {
|
|
38
|
+
const n = crypto.randomInt(datamin, datamax);
|
|
39
|
+
//const n = 1024;
|
|
40
|
+
const n2 = Math.floor(n / 2);
|
|
41
|
+
const rndid = crypto.randomBytes(n2).toString('hex');
|
|
42
|
+
//const rndid = 'helloworld'
|
|
43
|
+
randcard += rndid;
|
|
44
|
+
}
|
|
45
|
+
const randcardstring = randcard;
|
|
46
|
+
//const randcardstring = JSON.stringify(randcard);
|
|
47
|
+
this.totalDataSize += randcardstring.length;
|
|
48
|
+
this.avgDataSize = Math.floor(this.totalDataSize / (i + 1));
|
|
49
|
+
const pn = ('' + count++).padStart(10, '0');
|
|
50
|
+
const id = resfakerprefix + pn;
|
|
51
|
+
const cpid = rescopyprefix + pn;
|
|
52
|
+
const datanow = new Date().toISOString();
|
|
53
|
+
//let datanow = new Date().toUTCString();
|
|
54
|
+
const fakerdata = {
|
|
55
|
+
//oid: i
|
|
56
|
+
resname: id,
|
|
57
|
+
resdesc: randcardstring,
|
|
58
|
+
vnum: 1,
|
|
59
|
+
validfrom: datanow,
|
|
60
|
+
validto: null,
|
|
61
|
+
dbaction: 1,
|
|
62
|
+
dbactionuser: userid
|
|
63
|
+
};
|
|
64
|
+
this.fakerdataarray.push(fakerdata);
|
|
65
|
+
const fakerdata2 = Object.assign({}, fakerdata);
|
|
66
|
+
fakerdata2.resname = cpid;
|
|
67
|
+
this.fakerdataarray2.push(fakerdata2);
|
|
68
|
+
//@@parentPort?.postMessage( { command: '', data: { totalDataSize: this.totalDataSize, avgDataSize: this.avgDataSize } } );
|
|
69
|
+
if ((i + 1) % this.copybatchsize === 0) {
|
|
70
|
+
await accesslayer.bulkInsert(this.fakerdataarray);
|
|
71
|
+
await accesslayer.bulkInsert(this.fakerdataarray2);
|
|
72
|
+
this.fakerdataarray = [];
|
|
73
|
+
this.fakerdataarray2 = [];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (this.fakerdataarray.length > 0) {
|
|
77
|
+
await accesslayer.bulkInsert(this.fakerdataarray);
|
|
78
|
+
await accesslayer.bulkInsert(this.fakerdataarray2);
|
|
79
|
+
}
|
|
80
|
+
//@@parentPort?.postMessage( { command: 'done', data: null } );
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const worker = new CliWorker();
|
|
84
|
+
onmessage = async function (data) {
|
|
85
|
+
worker.run(data);
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=cliworker-old.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliworker-old.js","sourceRoot":"","sources":["../src/cliworker-old.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// https://stackoverflow.com/questions/56356655/structuring-a-typescript-project-with-workers
|
|
2
|
+
//let faker = require('faker');
|
|
3
|
+
//import { parentPort } from 'node:worker_threads';
|
|
4
|
+
import crypto from 'crypto';
|
|
5
|
+
import { PGPoolManager } from './pgpoolmanager';
|
|
6
|
+
import { PGAccessLayer } from './pgaccesslayer';
|
|
7
|
+
/*
|
|
8
|
+
const { parentPort, workerData } = require('node:worker_threads');
|
|
9
|
+
//require('node:crypto');
|
|
10
|
+
const { PGPoolManager } = require('./pgpoolmanager')
|
|
11
|
+
const { PGAccessLayer } = require('./pgaccesslayer')
|
|
12
|
+
*/
|
|
13
|
+
const userid = 'dbinitrunner';
|
|
14
|
+
const resfakerprefix = 'RESFK-';
|
|
15
|
+
const rescopyprefix = 'RESCP-';
|
|
16
|
+
export class CliWorker {
|
|
17
|
+
#options;
|
|
18
|
+
fakerdataarray = [];
|
|
19
|
+
fakerdataarray2 = [];
|
|
20
|
+
totalDataSize = 0;
|
|
21
|
+
avgDataSize = 0;
|
|
22
|
+
copybatchsize = 250;
|
|
23
|
+
constructor(options) {
|
|
24
|
+
this.#options = options;
|
|
25
|
+
}
|
|
26
|
+
Run = async () => {
|
|
27
|
+
let datamax = this.#options.datamax;
|
|
28
|
+
let count = this.#options.start;
|
|
29
|
+
const accesslayer = new PGAccessLayer(new PGPoolManager());
|
|
30
|
+
if (datamax > 0) {
|
|
31
|
+
datamax = (datamax <= this.#options.datamin) ? this.#options.datamin + 1 : datamax;
|
|
32
|
+
}
|
|
33
|
+
for (let i = 0; i < this.#options.iterations; i++) {
|
|
34
|
+
//let randcard = faker.helpers.createCard();
|
|
35
|
+
const coreRecordSizeRange = crypto.randomInt(128, 192);
|
|
36
|
+
//const coreRecordSizeRange = 128;
|
|
37
|
+
const coreRecordSize = Math.floor(coreRecordSizeRange / 2);
|
|
38
|
+
let randcard = crypto.randomBytes(coreRecordSize).toString('hex');
|
|
39
|
+
//let randcard = 'helloworld'
|
|
40
|
+
if (datamax > 0) {
|
|
41
|
+
const n = crypto.randomInt(this.#options.datamin, datamax);
|
|
42
|
+
//const n = 1024;
|
|
43
|
+
const n2 = Math.floor(n / 2);
|
|
44
|
+
const rndid = crypto.randomBytes(n2).toString('hex');
|
|
45
|
+
//const rndid = 'helloworld'
|
|
46
|
+
randcard += rndid;
|
|
47
|
+
}
|
|
48
|
+
const randcardstring = randcard;
|
|
49
|
+
//const randcardstring = JSON.stringify(randcard);
|
|
50
|
+
this.totalDataSize += randcardstring.length;
|
|
51
|
+
this.avgDataSize = Math.floor(this.totalDataSize / (i + 1));
|
|
52
|
+
const pn = ('' + count++).padStart(10, '0');
|
|
53
|
+
const id = resfakerprefix + pn;
|
|
54
|
+
const cpid = rescopyprefix + pn;
|
|
55
|
+
const datanow = new Date().toISOString();
|
|
56
|
+
//let datanow = new Date().toUTCString();
|
|
57
|
+
const fakerdata = {
|
|
58
|
+
//oid: i
|
|
59
|
+
resname: id,
|
|
60
|
+
resdesc: randcardstring,
|
|
61
|
+
vnum: 1,
|
|
62
|
+
validfrom: datanow,
|
|
63
|
+
validto: null,
|
|
64
|
+
dbaction: 1,
|
|
65
|
+
dbactionuser: userid
|
|
66
|
+
};
|
|
67
|
+
this.fakerdataarray.push(fakerdata);
|
|
68
|
+
const fakerdata2 = Object.assign({}, fakerdata);
|
|
69
|
+
fakerdata2.resname = cpid;
|
|
70
|
+
this.fakerdataarray2.push(fakerdata2);
|
|
71
|
+
this.#options.progress({ totalDataSize: this.totalDataSize, avgDataSize: this.avgDataSize });
|
|
72
|
+
if ((i + 1) % this.copybatchsize === 0) {
|
|
73
|
+
await accesslayer.bulkInsert(this.fakerdataarray);
|
|
74
|
+
await accesslayer.bulkInsert(this.fakerdataarray2);
|
|
75
|
+
this.fakerdataarray = [];
|
|
76
|
+
this.fakerdataarray2 = [];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (this.fakerdataarray.length > 0) {
|
|
80
|
+
await accesslayer.bulkInsert(this.fakerdataarray);
|
|
81
|
+
await accesslayer.bulkInsert(this.fakerdataarray2);
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=cliworker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliworker.js","sourceRoot":"","sources":["../src/cliworker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import prompts from 'prompts';
|
|
2
|
+
import 'colors';
|
|
3
|
+
import { PGPoolManager } from './pgpoolmanager';
|
|
4
|
+
import { PGAccessLayer } from './pgaccesslayer';
|
|
5
|
+
import { PGUtils } from './pgutils';
|
|
6
|
+
import { DataGenerator } from './datagenerator';
|
|
7
|
+
import Debug from "debug";
|
|
8
|
+
const debug = Debug(`proc:${process.pid}:DatabaseUtils`);
|
|
9
|
+
export class DatabaseUtils {
|
|
10
|
+
#accessLayer;
|
|
11
|
+
constructor(accessLayer) {
|
|
12
|
+
this.#accessLayer = accessLayer;
|
|
13
|
+
}
|
|
14
|
+
// options ::= { start: <int>, entries: <int>, minextradata: <int>, maxextradata: <int>,
|
|
15
|
+
// user: { name: <string>, password: <string>, email: <string> } }
|
|
16
|
+
CreateDatabase = async (options) => {
|
|
17
|
+
const fname = 'CreateDatabase';
|
|
18
|
+
const { iterations, workerScriptFolder } = options;
|
|
19
|
+
const builddbscript = `${options.databaseScriptFolder}/builddb.sql`;
|
|
20
|
+
debug(`Database Build Script: [${builddbscript}]`.yellow);
|
|
21
|
+
let localAccesslayer = null;
|
|
22
|
+
try {
|
|
23
|
+
try {
|
|
24
|
+
debug(`Dropping database.`.yellow);
|
|
25
|
+
await PGUtils.dropdatabase();
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.error(`[${fname}]: Could not drop database: ${error}`);
|
|
29
|
+
// Do not re-throw. If there is no initial database, this will throw an error, ignore this.
|
|
30
|
+
}
|
|
31
|
+
// Create a new empty database
|
|
32
|
+
debug(`Creating new empty database.`.yellow);
|
|
33
|
+
await PGUtils.createdatabase();
|
|
34
|
+
localAccesslayer = new PGAccessLayer(new PGPoolManager());
|
|
35
|
+
// Build the database assets (tables, functions, etc.)
|
|
36
|
+
debug(`Building database assets (tables, functions, etc.).`.yellow);
|
|
37
|
+
await localAccesslayer.executedbscript(builddbscript);
|
|
38
|
+
//@@ make optional or move
|
|
39
|
+
if (typeof iterations !== 'undefined') {
|
|
40
|
+
// Add new faker entries
|
|
41
|
+
debug(`Adding test data.`.yellow);
|
|
42
|
+
const dg = new DataGenerator(localAccesslayer, workerScriptFolder);
|
|
43
|
+
await dg.RunAddFakerBulkInsert(options);
|
|
44
|
+
}
|
|
45
|
+
//@@ double logging
|
|
46
|
+
debug(`Database successfully initiailized.`.green);
|
|
47
|
+
console.log(`Database successfully initiailized.`.green);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error(`[${fname}]: Could not create fresh database: ${error}`);
|
|
51
|
+
debug(`[${fname}]: Could not create fresh database: ${error}`);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
if (localAccesslayer !== null) {
|
|
55
|
+
await localAccesslayer.enddatabase();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
ResourceCount = async () => {
|
|
60
|
+
const retVal = await this.#accessLayer?.getResourceCount();
|
|
61
|
+
return retVal;
|
|
62
|
+
};
|
|
63
|
+
ExecuteDatabaseScript = async (scriptfile) => {
|
|
64
|
+
const retVal = await this.#accessLayer?.executedbscript(scriptfile);
|
|
65
|
+
return retVal;
|
|
66
|
+
};
|
|
67
|
+
ExecutedCustomScript = async () => {
|
|
68
|
+
const response = await prompts({
|
|
69
|
+
type: 'text',
|
|
70
|
+
name: 'script',
|
|
71
|
+
message: 'Script name to execute (stsrest01.sql)',
|
|
72
|
+
initial: './db-scripts/stsrest01.sql'
|
|
73
|
+
});
|
|
74
|
+
return this.ExecuteDatabaseScript(response.script);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=databaseutils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"databaseutils.js","sourceRoot":"","sources":["../src/databaseutils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// https://medium.com/netscape/a-guide-to-create-a-nodejs-command-line-package-c2166ad0452e
|
|
2
|
+
// https://developer.okta.com/blog/2019/06/18/command-line-app-with-nodejs
|
|
3
|
+
import { $Options } from '@nsshunt/stsconfig';
|
|
4
|
+
const goptions = $Options();
|
|
5
|
+
import si from 'systeminformation'; // https://systeminformation.io/
|
|
6
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
global.appRoot = path.resolve(__dirname);
|
|
9
|
+
import axios from 'axios';
|
|
10
|
+
import cliProgress from 'cli-progress';
|
|
11
|
+
import colors from 'colors';
|
|
12
|
+
import prompts from 'prompts';
|
|
13
|
+
import { Worker } from 'node:worker_threads';
|
|
14
|
+
import { Sleep } from '@nsshunt/stsutils';
|
|
15
|
+
const userid = 'dbinitrunner';
|
|
16
|
+
const resrandomuserprefix = 'RESRU-';
|
|
17
|
+
import Debug from "debug";
|
|
18
|
+
const debug = Debug(`proc:${process.pid}:DataGenerator`);
|
|
19
|
+
export class DataGenerator {
|
|
20
|
+
#accessLayer;
|
|
21
|
+
#useMultiBar = false;
|
|
22
|
+
#workerScriptFolder;
|
|
23
|
+
constructor(accessLayer, workerScriptFolder) {
|
|
24
|
+
this.#accessLayer = accessLayer;
|
|
25
|
+
this.#workerScriptFolder = workerScriptFolder;
|
|
26
|
+
}
|
|
27
|
+
//@@ JSON to come from config file if bound to a K6 script - so each K6 script should also have a prompts JSON for configuration - make generic
|
|
28
|
+
AskAddRandomUser = async () => {
|
|
29
|
+
const response = await prompts([
|
|
30
|
+
{
|
|
31
|
+
type: 'number',
|
|
32
|
+
name: 'iterations',
|
|
33
|
+
message: 'Number of iterations:',
|
|
34
|
+
initial: 10
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
type: 'number',
|
|
38
|
+
name: 'blocksize',
|
|
39
|
+
message: 'Block Size for randomuser microservice:',
|
|
40
|
+
initial: 500
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
type: 'number',
|
|
44
|
+
name: 'chunksize',
|
|
45
|
+
message: 'Number of simultaneous async calls to the randomname service:',
|
|
46
|
+
initial: 1
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
type: 'number',
|
|
50
|
+
name: 'sleepsize',
|
|
51
|
+
message: 'Duration to sleep (in ms) between chunked call blocks:',
|
|
52
|
+
initial: 1000
|
|
53
|
+
}
|
|
54
|
+
]);
|
|
55
|
+
await this.RunAddRandomUser(response.iterations, response.blocksize, response.chunksize, response.sleepsize);
|
|
56
|
+
};
|
|
57
|
+
RunAddRandomUser = async (iterations, blocksize, chunksize, sleepsize) => {
|
|
58
|
+
// create new progress bar
|
|
59
|
+
const b1 = new cliProgress.SingleBar({
|
|
60
|
+
format: 'Random User |' + colors.cyan('{bar}') + '| {percentage}% || {value}/{total} Iterations || Size: {totalDataSize} || ETA: {eta_formatted}',
|
|
61
|
+
barCompleteChar: '\u2588',
|
|
62
|
+
barIncompleteChar: '\u2591',
|
|
63
|
+
hideCursor: true,
|
|
64
|
+
etaBuffer: 1000
|
|
65
|
+
});
|
|
66
|
+
// initialize the bar - defining payload token "speed" with the default value "N/A"
|
|
67
|
+
b1.start(iterations * blocksize, 0, {});
|
|
68
|
+
let totalDataSize = 0;
|
|
69
|
+
let promarray = [];
|
|
70
|
+
for (let i = 0; i < iterations; i++) {
|
|
71
|
+
const pp = async () => {
|
|
72
|
+
const retVal = await axios.get(`https://randomuser.me/api/?results=${blocksize}&nat=au,nz,us,gb`).catch(error => {
|
|
73
|
+
console.error(`Error in randomuser get: ${error}`);
|
|
74
|
+
if (error.response) {
|
|
75
|
+
// Request made and server responded
|
|
76
|
+
console.error("DATA:" + error.response.data);
|
|
77
|
+
console.error("STATUS: " + error.response.status);
|
|
78
|
+
console.error("HEADERS: " + error.response.headers);
|
|
79
|
+
}
|
|
80
|
+
else if (error.request) {
|
|
81
|
+
// The request was made but no response was received
|
|
82
|
+
console.error("REQUEST: " + error.request);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Something happened in setting up the request that triggered an Error
|
|
86
|
+
console.error('ERROR', error.message);
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
});
|
|
90
|
+
if (retVal === null) {
|
|
91
|
+
console.error('Skipping this test as we cannot control the randomuser service.');
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const randomusers = retVal.data.results;
|
|
95
|
+
const allPromises = randomusers.map(async (data) => {
|
|
96
|
+
totalDataSize += JSON.stringify(data).length;
|
|
97
|
+
const id = resrandomuserprefix + uuidv4();
|
|
98
|
+
await this.#accessLayer.createResource(userid, id, data);
|
|
99
|
+
b1.increment({ totalDataSize: totalDataSize });
|
|
100
|
+
});
|
|
101
|
+
await Promise.all(allPromises);
|
|
102
|
+
};
|
|
103
|
+
promarray.push(pp());
|
|
104
|
+
if ((i + 1) % chunksize === 0) {
|
|
105
|
+
await Promise.all(promarray);
|
|
106
|
+
promarray = [];
|
|
107
|
+
await Sleep(sleepsize);
|
|
108
|
+
}
|
|
109
|
+
//b1.increment({ totalDataSize: totalDataSize });
|
|
110
|
+
}
|
|
111
|
+
if (promarray.length > 0) {
|
|
112
|
+
await Promise.all(promarray);
|
|
113
|
+
}
|
|
114
|
+
b1.stop();
|
|
115
|
+
};
|
|
116
|
+
AskAddFaker = async (options) => {
|
|
117
|
+
const response = await prompts([
|
|
118
|
+
{
|
|
119
|
+
type: 'number',
|
|
120
|
+
name: 'start',
|
|
121
|
+
message: 'Start number for iterations (use -1 to append to current sequence):',
|
|
122
|
+
initial: -1
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'number',
|
|
126
|
+
name: 'iterations',
|
|
127
|
+
message: 'Number of iterations:',
|
|
128
|
+
initial: 10000
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
type: 'number',
|
|
132
|
+
name: 'datamin',
|
|
133
|
+
message: 'Minimum Extra Data Size:',
|
|
134
|
+
initial: 0
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: 'number',
|
|
138
|
+
name: 'datamax',
|
|
139
|
+
message: 'Maximum Extra Data Size:',
|
|
140
|
+
initial: 1024
|
|
141
|
+
}
|
|
142
|
+
]);
|
|
143
|
+
const dbOptions = {
|
|
144
|
+
start: response.start,
|
|
145
|
+
iterations: response.iterations,
|
|
146
|
+
minextradata: response.datamin,
|
|
147
|
+
maxextradata: response.datamax,
|
|
148
|
+
workerScriptFolder: './node_modules/@nsshunt/stsdatamanagement/dist',
|
|
149
|
+
databaseScriptFolder: options.databaseScriptFolder,
|
|
150
|
+
useMultiBar: true
|
|
151
|
+
};
|
|
152
|
+
await this.RunAddFakerBulkInsert(dbOptions);
|
|
153
|
+
};
|
|
154
|
+
RunAddFakerBulkInsert = async (options) => {
|
|
155
|
+
this.#useMultiBar = options.useMultiBar;
|
|
156
|
+
let multibar = null;
|
|
157
|
+
if (this.#useMultiBar === true) {
|
|
158
|
+
multibar = new cliProgress.MultiBar({
|
|
159
|
+
format: 'Faker |' + colors.cyan('{bar}') + '| {percentage}% || {value}/{total} Iterations || Avg Size: {avgDataSize} || Size: {totalDataSize} || Duration: {duration_formatted} || ETA: {eta_formatted}',
|
|
160
|
+
clearOnComplete: false,
|
|
161
|
+
hideCursor: true
|
|
162
|
+
}, cliProgress.Presets.shades_grey);
|
|
163
|
+
}
|
|
164
|
+
const pa = [];
|
|
165
|
+
const valueObject = {
|
|
166
|
+
system: '*',
|
|
167
|
+
osInfo: '*',
|
|
168
|
+
cpu: '*',
|
|
169
|
+
mem: '*'
|
|
170
|
+
};
|
|
171
|
+
const sysinfo = await si.get(valueObject);
|
|
172
|
+
const useCPUs = goptions.useCPUs;
|
|
173
|
+
let numCPUs = 0;
|
|
174
|
+
if (useCPUs > 0) {
|
|
175
|
+
if (useCPUs >= 1) {
|
|
176
|
+
numCPUs = useCPUs;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
numCPUs = Math.round(sysinfo.cpu.cores * useCPUs);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
numCPUs = sysinfo.cpu.physicalCores;
|
|
184
|
+
}
|
|
185
|
+
//let numCPUs = require('os').cpus().length;
|
|
186
|
+
const blocksize = Math.floor(options.iterations / numCPUs);
|
|
187
|
+
const lastBlockSize = blocksize + (options.iterations % numCPUs);
|
|
188
|
+
let count = 0;
|
|
189
|
+
if (options.start === -1) {
|
|
190
|
+
const countresult = await this.#accessLayer.getResourceCount(`r.resname like 'RESFK-%'`);
|
|
191
|
+
count = Number(countresult.detail.count);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
count = options.start;
|
|
195
|
+
}
|
|
196
|
+
const bars = [];
|
|
197
|
+
for (let i = 0; i < numCPUs; i++) {
|
|
198
|
+
const iterations = (i === numCPUs - 1 ? lastBlockSize : blocksize);
|
|
199
|
+
let bar = null;
|
|
200
|
+
if (multibar !== null) {
|
|
201
|
+
bar = multibar.create(iterations, 0);
|
|
202
|
+
}
|
|
203
|
+
if (typeof bar === 'undefined') {
|
|
204
|
+
debug(`No TTY available for multi-bar progress.`.yellow);
|
|
205
|
+
bar = null;
|
|
206
|
+
}
|
|
207
|
+
bars.push(bar);
|
|
208
|
+
pa.push(this.StartWorkerThread(count + (i * blocksize), iterations, options.minextradata, options.maxextradata, bars[i]));
|
|
209
|
+
}
|
|
210
|
+
await Promise.all(pa);
|
|
211
|
+
if (this.#useMultiBar === true) {
|
|
212
|
+
multibar?.stop();
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
StartWorkerThread = (start, iterations, datamin, datamax, bar) => {
|
|
216
|
+
return new Promise((resolve, reject) => {
|
|
217
|
+
const envCopy = { ...process.env };
|
|
218
|
+
let totalIterations = 0;
|
|
219
|
+
const worker = new Worker(`${this.#workerScriptFolder}/cliworker.js`, {
|
|
220
|
+
workerData: { start: start, iterations: iterations, datamin: datamin, datamax: datamax },
|
|
221
|
+
env: envCopy
|
|
222
|
+
//type: 'module'
|
|
223
|
+
});
|
|
224
|
+
worker.on('message', (data) => {
|
|
225
|
+
if (data.command === 'done') {
|
|
226
|
+
if (!bar) {
|
|
227
|
+
console.log(`Iterations completed.`);
|
|
228
|
+
}
|
|
229
|
+
worker.terminate();
|
|
230
|
+
resolve(data.data);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
if (bar !== null) {
|
|
234
|
+
bar.increment({ totalDataSize: data.data.totalDataSize, avgDataSize: data.data.avgDataSize });
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
totalIterations++;
|
|
238
|
+
if (totalIterations % 1000 === 0) {
|
|
239
|
+
console.log(`Iteration: [${totalIterations}] completed.`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
worker.on('error', (error) => {
|
|
245
|
+
reject(error);
|
|
246
|
+
});
|
|
247
|
+
worker.on('exit', (code) => {
|
|
248
|
+
if (code !== 0) {
|
|
249
|
+
reject(new Error(`Worker stopped with exit code ${code}`));
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=datagenerator-old.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datagenerator-old.js","sourceRoot":"","sources":["../src/datagenerator-old.ts"],"names":[],"mappings":"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"}
|