@nsshunt/stsappframework 3.1.159 → 3.1.161

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.
Files changed (44) hide show
  1. package/dist/testertesting/app.js +194 -0
  2. package/dist/testertesting/app.js.map +1 -0
  3. package/dist/testertesting/commonTypes.js +16 -0
  4. package/dist/testertesting/commonTypes.js.map +1 -0
  5. package/dist/testertesting/requestResponseHelper.js +83 -0
  6. package/dist/testertesting/requestResponseHelper.js.map +1 -0
  7. package/dist/testertesting/stsTestWorkerDefinitions.js +34 -0
  8. package/dist/testertesting/stsTestWorkerDefinitions.js.map +1 -0
  9. package/dist/testertesting/workerInstance.js +131 -0
  10. package/dist/testertesting/workerInstance.js.map +1 -0
  11. package/dist/testertesting/workerManager.js +417 -0
  12. package/dist/testertesting/workerManager.js.map +1 -0
  13. package/dist/testertesting/workerPrimaryTestRunner01.js +62 -0
  14. package/dist/testertesting/workerPrimaryTestRunner01.js.map +1 -0
  15. package/dist/testertesting/workerWorkerTestRunner01.js +146 -0
  16. package/dist/testertesting/workerWorkerTestRunner01.js.map +1 -0
  17. package/dist/webworkertesting/app.js +2 -0
  18. package/dist/webworkertesting/app.js.map +1 -1
  19. package/package.json +2 -2
  20. package/src/testertesting/app.ts +238 -0
  21. package/src/testertesting/commonTypes.ts +50 -0
  22. package/src/testertesting/requestResponseHelper.ts +95 -0
  23. package/src/testertesting/stsTestWorkerDefinitions.ts +150 -0
  24. package/src/testertesting/workerInstance.ts +154 -0
  25. package/src/testertesting/workerManager.ts +478 -0
  26. package/src/testertesting/workerPrimaryTestRunner01.ts +81 -0
  27. package/src/testertesting/workerWorkerTestRunner01.ts +184 -0
  28. package/src/webworkertesting/app.ts +4 -0
  29. package/types/testertesting/app.d.ts +2 -0
  30. package/types/testertesting/app.d.ts.map +1 -0
  31. package/types/testertesting/commonTypes.d.ts +44 -0
  32. package/types/testertesting/commonTypes.d.ts.map +1 -0
  33. package/types/testertesting/requestResponseHelper.d.ts +8 -0
  34. package/types/testertesting/requestResponseHelper.d.ts.map +1 -0
  35. package/types/testertesting/stsTestWorkerDefinitions.d.ts +124 -0
  36. package/types/testertesting/stsTestWorkerDefinitions.d.ts.map +1 -0
  37. package/types/testertesting/workerInstance.d.ts +18 -0
  38. package/types/testertesting/workerInstance.d.ts.map +1 -0
  39. package/types/testertesting/workerManager.d.ts +14 -0
  40. package/types/testertesting/workerManager.d.ts.map +1 -0
  41. package/types/testertesting/workerPrimaryTestRunner01.d.ts +8 -0
  42. package/types/testertesting/workerPrimaryTestRunner01.d.ts.map +1 -0
  43. package/types/testertesting/workerWorkerTestRunner01.d.ts +16 -0
  44. package/types/testertesting/workerWorkerTestRunner01.d.ts.map +1 -0
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
7
+ const cluster_1 = __importDefault(require("cluster"));
8
+ const worker_threads_1 = require("worker_threads");
9
+ const workerPrimaryTestRunner01_1 = require("./workerPrimaryTestRunner01");
10
+ const workerManager_1 = require("./workerManager");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ // Force chalk level
13
+ chalk_1.default.level = 3;
14
+ const stsobservability_1 = require("@nsshunt/stsobservability");
15
+ const stsutils_1 = require("@nsshunt/stsutils");
16
+ const uuid_1 = require("uuid");
17
+ const stsconfig_1 = require("@nsshunt/stsconfig");
18
+ const LogInfoMessage = (message) => console.log(chalk_1.default.grey(message));
19
+ const LogErrorMessage = (message) => console.error(chalk_1.default.red(message));
20
+ if (cluster_1.default.isPrimary) {
21
+ //new MasterProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
22
+ LogInfoMessage(`Primary ${process.pid} is running`);
23
+ // Fork workers.
24
+ cluster_1.default.fork();
25
+ cluster_1.default.on('exit', (worker, code, signal) => {
26
+ LogInfoMessage(`worker ${worker.process.pid} died`);
27
+ });
28
+ /*
29
+ const fileName ='./dist/webworkertesting/worker.js';
30
+
31
+ const publishCollectorWebWorker = new Worker(fileName);
32
+ publishCollectorWebWorker.unref();
33
+
34
+ publishCollectorWebWorker.postMessage({cmd: 'text', message: 'Hello World'});
35
+
36
+ publishCollectorWebWorker.on('message', (data) => {
37
+ LogInfoMessage(`cluster.primary (${process.pid}): message from worker = [${JSON.stringify(data)}]`);
38
+ });
39
+
40
+ const { port1, port2 } = new MessageChannel();
41
+
42
+ publishCollectorWebWorker.postMessage({cmd: 'portmessage', port: port2}, [ port2 ]);
43
+ port1.postMessage('sending to port1');
44
+ port1.on('message', (data) => {
45
+ LogInfoMessage(`cluster.primary (${process.pid}): message from message port = [${data}]`);
46
+ });
47
+ */
48
+ LogInfoMessage(`cluster primary completed ...`);
49
+ }
50
+ else {
51
+ LogInfoMessage(`Worker ${process.pid} started`);
52
+ //const worker = new WorkerProcessBase(ServiceConfigOptions(true, cluster.isPrimary));
53
+ //worker.SetupServer();
54
+ const hostName = 'host01';
55
+ const agentId = 'agent01';
56
+ const userAgent = 'userAgent01';
57
+ const asyncRunnerContext = {
58
+ nid: `\
59
+ ${hostName}${stsutils_1.ModelDelimeter.COMPONENT_SEPERATOR}${agentId}-${userAgent}\
60
+ ${stsutils_1.ModelDelimeter.NID_SEPERATOR}\
61
+ MainProcess\
62
+ ${stsutils_1.ModelDelimeter.SEPERATOR}\
63
+ 0`,
64
+ id: (0, uuid_1.v4)(),
65
+ // id: `${applicationStore.applicationConfig.HOST}${ModelDelimeter.COMPONENT_SEPERATOR}${applicationStore.applicationConfig.AGENT_ID}-${applicationStore.applicationConfig.USER_AGENT}`,
66
+ hostName: (hostName ? hostName : 'host01'),
67
+ agentName: `${agentId}-${userAgent}`,
68
+ threadId: 'MainProcess',
69
+ asyncRunnerId: 0
70
+ };
71
+ const url = `https://stscore.stsmda.org:3001/stsinstrumentmanager/v1/publishmessage`;
72
+ const publishTransportOptions = {
73
+ transportType: stsobservability_1.TransportType.RESTAPI,
74
+ //url: `${goptions.imendpoint}:${goptions.import}${goptions.imapiroot}/publishmessage`,
75
+ url,
76
+ logger: stsutils_1.defaultLogger,
77
+ agentOptions: {
78
+ keepAlive: stsconfig_1.goptions.keepAlive,
79
+ maxSockets: stsconfig_1.goptions.maxSockets,
80
+ maxTotalSockets: stsconfig_1.goptions.maxTotalSockets,
81
+ maxFreeSockets: stsconfig_1.goptions.maxFreeSockets,
82
+ timeout: 30000, //@@ config
83
+ rejectUnauthorized: stsconfig_1.goptions.isProduction // Allows self signed certs in non production mode(s)
84
+ },
85
+ showPublishPayload: false
86
+ };
87
+ LogInfoMessage(`publishTransportOptions: [${publishTransportOptions.url}]`);
88
+ const standardInstruments = [
89
+ [stsobservability_1.Gauge.TIMER_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_TIMER],
90
+ [stsobservability_1.Gauge.LOGGER, stsobservability_1.GaugeTypes.INSTRUMENT_LOG, {
91
+ consoleLogging: process.env.consoleLogging,
92
+ instrumentLogging: process.env.instrumentLogging
93
+ }],
94
+ [stsobservability_1.Gauge.NETWORK_RX_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_VELOCITY],
95
+ [stsobservability_1.Gauge.NETWORK_TX_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_VELOCITY]
96
+ ];
97
+ const agentInstruments = [
98
+ [stsobservability_1.Gauge.REQUEST_COUNT_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE], // Total number of requests serviced
99
+ [stsobservability_1.Gauge.ERROR_COUNT_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE],
100
+ [stsobservability_1.Gauge.RETRY_COUNT_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE],
101
+ [stsobservability_1.Gauge.AUTHENTICATION_COUNT_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE], // Total number of new token requests
102
+ [stsobservability_1.Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE], // Total number of new token requests errors
103
+ [stsobservability_1.Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE], // Total number of new token requests retries
104
+ [stsobservability_1.Gauge.ACTIVE_REQUEST_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE, {
105
+ interval: process.env.instrumentationObservationInterval,
106
+ sampleSize: process.env.instrumentationTimeWindow
107
+ }],
108
+ [stsobservability_1.Gauge.DURATION_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE, {
109
+ interval: process.env.instrumentationObservationInterval,
110
+ sampleSize: process.env.instrumentationTimeWindow
111
+ }],
112
+ [stsobservability_1.Gauge.DURATION_HISTOGRAM_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_HISTOGRAM],
113
+ [stsobservability_1.Gauge.VELOCITY_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_VELOCITY], // Requests per second
114
+ [stsobservability_1.Gauge.CORE_COUNT_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE], // Thread count (for http agents)
115
+ [stsobservability_1.Gauge.LATENCY_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE, {
116
+ interval: process.env.instrumentationObservationInterval,
117
+ sampleSize: process.env.instrumentationTimeWindow
118
+ }],
119
+ [stsobservability_1.Gauge.LATENCY_HISTOGRAM_GAUGE, stsobservability_1.GaugeTypes.INSTRUMENT_HISTOGRAM],
120
+ [stsobservability_1.Gauge.CHILD_COUNT, stsobservability_1.GaugeTypes.INSTRUMENT_GAUGE] // Number of async runners idle or running
121
+ ];
122
+ const instrumentControllerOptions = {
123
+ processContext: asyncRunnerContext,
124
+ instrumentationObservationInterval: 1000, //@@
125
+ instrumentationTimeWindow: 600, //@@
126
+ publisherTransport: new stsobservability_1.PublishTransportRESTServer(publishTransportOptions),
127
+ logger: stsutils_1.defaultLogger,
128
+ publishInterval: 1000, //@@
129
+ //instrumentDefinitions: GetInstruments('agent')
130
+ instrumentDefinitions: [
131
+ ...standardInstruments,
132
+ ...agentInstruments
133
+ ]
134
+ };
135
+ const agentInstrumentController = new stsobservability_1.AgentInstrumentController(instrumentControllerOptions);
136
+ agentInstrumentController.StartPublish();
137
+ const workerFactory = {
138
+ createPrimaryThreadWorker: (app, options) => {
139
+ return new workerPrimaryTestRunner01_1.WorkerPrimaryTestRunner01(app, options);
140
+ },
141
+ createWorkerThreadWorker: () => {
142
+ LogInfoMessage(`createWorkerThreadWorker`);
143
+ const fileName = './dist/testertesting/workerWorkerTestRunner01.js';
144
+ const publishCollectorWebWorker = new worker_threads_1.Worker(fileName);
145
+ publishCollectorWebWorker.unref();
146
+ return publishCollectorWebWorker;
147
+ },
148
+ get workerThreadWorkerOptions() {
149
+ return {
150
+ agentId,
151
+ hostName,
152
+ userAgent,
153
+ workdata: 'worker - hello world'
154
+ };
155
+ },
156
+ get primaryThreadWorkerOptions() {
157
+ return {
158
+ agentId,
159
+ hostName,
160
+ userAgent,
161
+ primaryoptions: 'primary - hello world'
162
+ };
163
+ }
164
+ };
165
+ const xx = async () => {
166
+ const wm = new workerManager_1.STSWorkerManager(null, {
167
+ workerFactory,
168
+ publishInstrumentController: agentInstrumentController
169
+ });
170
+ const worker = await wm.AddWorker();
171
+ const runnerOptions = {
172
+ iterations: 100000,
173
+ sleepDuration: 250,
174
+ messageMod: 1,
175
+ logMessageMod: 1
176
+ };
177
+ const runner = wm.AddRunnerToWorker(worker, runnerOptions);
178
+ };
179
+ xx();
180
+ /*
181
+ const fileName ='./dist/webworkertesting/worker.js';
182
+
183
+ const clusterWorker = new Worker(fileName);
184
+ clusterWorker.unref();
185
+
186
+ clusterWorker.postMessage({cmd: 'text', message: 'Hello World'});
187
+
188
+ clusterWorker.on('message', (data: any) => {
189
+ LogInfoMessage(`cluster.worker (${process.pid}): message from worker = [${JSON.stringify(data)}]`);
190
+ });
191
+ */
192
+ LogInfoMessage(`cluster work completed ...`);
193
+ }
194
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/testertesting/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eIWMessageCommands = exports.URI_BASE_VUEUTILS = void 0;
4
+ exports.URI_BASE_VUEUTILS = '/';
5
+ /**
6
+ * Inter-Worker (IW) message commands.
7
+ */
8
+ var eIWMessageCommands;
9
+ (function (eIWMessageCommands) {
10
+ eIWMessageCommands["InstrumentTelemetry"] = "__STS__InstrumentTelemetry";
11
+ eIWMessageCommands["MessagePort"] = "__STS__MessagePort";
12
+ eIWMessageCommands["MessagePortResponse"] = "__STS__MessagePortResponse";
13
+ eIWMessageCommands["AddAsyncRunner"] = "__STS__AddAsyncRunner";
14
+ eIWMessageCommands["StopAllAsyncRunners"] = "__STS__StopAllAsyncRunners";
15
+ })(eIWMessageCommands || (exports.eIWMessageCommands = eIWMessageCommands = {}));
16
+ //# sourceMappingURL=commonTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commonTypes.js","sourceRoot":"","sources":["../../src/testertesting/commonTypes.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAW,GAAG,CAAC;AAiB7C;;GAEG;AACH,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC7B,wEAAiD,CAAA;IACjD,wDAAkC,CAAA;IAClC,wEAAkD,CAAA;IAClD,8DAAwC,CAAA;IACxC,wEAAkD,CAAA;AACnD,CAAC,EANW,kBAAkB,kCAAlB,kBAAkB,QAM7B"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestResponseHelper = void 0;
4
+ const stsutils_1 = require("@nsshunt/stsutils");
5
+ //@@ this should become a low level stsutils type helper
6
+ class RequestResponseHelper {
7
+ #requestResponseMessages = {};
8
+ #requestResponseMessageTimeout = 10000; //@@ config
9
+ #port;
10
+ constructor(port) {
11
+ this.#port = port;
12
+ this.#SetupListener();
13
+ }
14
+ #debug = (message) => {
15
+ stsutils_1.defaultLogger.debug(message);
16
+ };
17
+ PostMessage = (message) => {
18
+ return new Promise((resolve, reject) => {
19
+ const { messageId } = message.payload;
20
+ if (messageId) {
21
+ if (this.#requestResponseMessages[messageId]) {
22
+ reject(`RequestResponseHelper: Message with id: [${messageId}] already exists within the Request/Response record structure`);
23
+ }
24
+ else {
25
+ this.#requestResponseMessages[messageId] = {
26
+ publishMessagePayload: { ...message },
27
+ cb: () => {
28
+ const detail = this.#requestResponseMessages[messageId].publishMessagePayloadResponse;
29
+ clearTimeout(this.#requestResponseMessages[messageId].timeout);
30
+ setTimeout(() => {
31
+ delete this.#requestResponseMessages[messageId];
32
+ }, 0);
33
+ if (detail) {
34
+ this.#debug(`RequestResponseHelper: Resolving response message with id: [${messageId}] from target worker port. Details: [${JSON.stringify(detail)}]`);
35
+ resolve(detail);
36
+ }
37
+ else {
38
+ const msg = `Could not get detail from this.#requestResponseMessages[messageId].publishMessagePayloadResponse`;
39
+ this.#debug(msg);
40
+ reject(msg);
41
+ }
42
+ },
43
+ timeout: setTimeout(() => {
44
+ setTimeout(() => {
45
+ delete this.#requestResponseMessages[messageId];
46
+ }, 0);
47
+ this.#debug(`RequestResponseHelper: Timeout has occurred after: [${this.#requestResponseMessageTimeout}]ms with message id: [${messageId}]. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);
48
+ reject('RequestResponseHelper: Did not receive response form parent process.');
49
+ }, this.#requestResponseMessageTimeout) // max message timeout allowed
50
+ };
51
+ //debug(`RequestResponseHelper: Sending message with id: [${messageId}] to target worker port. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);
52
+ this.#port.postMessage(message);
53
+ }
54
+ }
55
+ else {
56
+ const msg = `RequestResponseHelper: Response did not include a message id`;
57
+ this.#debug(msg);
58
+ reject(msg);
59
+ }
60
+ });
61
+ };
62
+ #SetupListener = () => {
63
+ //this.#port.onmessage = async (msg: MessageEvent) => {
64
+ this.#port.on('message', (msg) => {
65
+ const publishMessagePayload = msg.data;
66
+ if (publishMessagePayload.payload.messageId) {
67
+ const messageId = publishMessagePayload.payload.messageId;
68
+ if (messageId && messageId !== '') {
69
+ if (this.#requestResponseMessages[messageId]) {
70
+ const requestResponseMessage = this.#requestResponseMessages[messageId];
71
+ requestResponseMessage.publishMessagePayloadResponse = { ...publishMessagePayload };
72
+ requestResponseMessage.cb();
73
+ }
74
+ else {
75
+ throw new Error(`RequestResponseHelper: Could not find Request/Response message with id: [${messageId}]`);
76
+ }
77
+ }
78
+ }
79
+ });
80
+ };
81
+ }
82
+ exports.RequestResponseHelper = RequestResponseHelper;
83
+ //# sourceMappingURL=requestResponseHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestResponseHelper.js","sourceRoot":"","sources":["../../src/testertesting/requestResponseHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PublishMessageCommandsTestRunner = exports.eIWMessageCommands = exports.IWorkerState = exports.IRunnerState = void 0;
4
+ var IRunnerState;
5
+ (function (IRunnerState) {
6
+ IRunnerState["created"] = "created";
7
+ IRunnerState["running"] = "running";
8
+ IRunnerState["stopped"] = "stopped";
9
+ IRunnerState["paused"] = "paused";
10
+ IRunnerState["error"] = "error";
11
+ })(IRunnerState || (exports.IRunnerState = IRunnerState = {}));
12
+ var IWorkerState;
13
+ (function (IWorkerState) {
14
+ IWorkerState["starting"] = "starting";
15
+ IWorkerState["started"] = "started";
16
+ IWorkerState["stopped"] = "stopped";
17
+ })(IWorkerState || (exports.IWorkerState = IWorkerState = {}));
18
+ var eIWMessageCommands;
19
+ (function (eIWMessageCommands) {
20
+ eIWMessageCommands["InstrumentTelemetry"] = "__STS__InstrumentTelemetry";
21
+ eIWMessageCommands["MessagePort"] = "__STS__MessagePort";
22
+ eIWMessageCommands["MessagePortResponse"] = "__STS__MessagePortResponse";
23
+ eIWMessageCommands["AddAsyncRunner"] = "__STS__AddAsyncRunner";
24
+ eIWMessageCommands["StopAllAsyncRunners"] = "__STS__StopAllAsyncRunners";
25
+ })(eIWMessageCommands || (exports.eIWMessageCommands = eIWMessageCommands = {}));
26
+ exports.PublishMessageCommandsTestRunner = {
27
+ ...eIWMessageCommands,
28
+ GetAccessToken: '__GetAccessToken',
29
+ GetAccessTokenResponse: '__GetAccessTokenResponse',
30
+ GetDataFromPrimary: '__GetDataFromPrimary',
31
+ ExecuteRefreshToken: '__ExecuteRefreshToken',
32
+ ExecuteRefreshTokenResponse: '__ExecuteRefreshTokenResponse'
33
+ };
34
+ //# sourceMappingURL=stsTestWorkerDefinitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsTestWorkerDefinitions.js","sourceRoot":"","sources":["../../src/testertesting/stsTestWorkerDefinitions.ts"],"names":[],"mappings":";;;AAWA,IAAY,YAMX;AAND,WAAY,YAAY;IACvB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,+BAAe,CAAA;AAChB,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB;AAkCD,IAAY,YAIX;AAJD,WAAY,YAAY;IACvB,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACpB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB;AAiED,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC1B,wEAAkD,CAAA;IAClD,wDAAkC,CAAA;IAClC,wEAAkD,CAAA;IAClD,8DAAwC,CAAA;IACxC,wEAAkD,CAAA;AACtD,CAAC,EANW,kBAAkB,kCAAlB,kBAAkB,QAM7B;AAEY,QAAA,gCAAgC,GAAG;IAC5C,GAAG,kBAAkB;IACrB,cAAc,EAAE,kBAAkB;IAClC,sBAAsB,EAAE,0BAA0B;IAClD,kBAAkB,EAAE,sBAAsB;IAC1C,mBAAmB,EAAE,uBAAuB;IAC5C,2BAA2B,EAAE,+BAA+B;CACtD,CAAA"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WorkerInstance = void 0;
7
+ const commonTypes_1 = require("./commonTypes");
8
+ const stsTestWorkerDefinitions_1 = require("./stsTestWorkerDefinitions");
9
+ const requestResponseHelper_1 = require("./requestResponseHelper");
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ // Force chalk level
12
+ chalk_1.default.level = 3;
13
+ class WorkerInstance {
14
+ #collectorCollectorPort = null;
15
+ #requestResponseHelper = null;
16
+ #runners = {};
17
+ #options = null;
18
+ #debug = (message) => {
19
+ console.log(chalk_1.default.green(`pid: [${process.pid}] WorkerInstance::${message}`));
20
+ };
21
+ constructor() {
22
+ this.#debug(`constructor`);
23
+ }
24
+ GetRandomInt = (max) => {
25
+ this.#debug(`GetRandomInt`);
26
+ return Math.floor(Math.random() * Math.floor(max));
27
+ };
28
+ StartWork = async (runner) => {
29
+ this.#debug(`StartWork`);
30
+ return;
31
+ };
32
+ PostTelemetry = (runner) => {
33
+ //debug(`WorkerInstance::PostTelemetry`)
34
+ if (this.#collectorCollectorPort) {
35
+ const message = {
36
+ command: commonTypes_1.eIWMessageCommands.InstrumentTelemetry,
37
+ payload: {
38
+ runner
39
+ }
40
+ };
41
+ this.#collectorCollectorPort.postMessage(message);
42
+ }
43
+ };
44
+ get RequestResponseHelper() {
45
+ return this.#requestResponseHelper;
46
+ }
47
+ get CollectorCollectorPort() {
48
+ return this.#collectorCollectorPort;
49
+ }
50
+ get Options() {
51
+ return this.#options;
52
+ }
53
+ #SetMessagePort = (workerMessagePort) => {
54
+ this.#debug(`SetMessagePort`);
55
+ this.#collectorCollectorPort = workerMessagePort.port;
56
+ // NodeJS version
57
+ this.#collectorCollectorPort.on('message', (data) => {
58
+ this.#debug(`collectorCollectorPort onmessage: ${data.data}`);
59
+ });
60
+ // Browser Version
61
+ /*
62
+ this.#collectorCollectorPort.onmessage = function(data: MessageEvent) {
63
+ console.log(`collectorCollectorPort onmessage: ${data.data}`);
64
+ }
65
+ */
66
+ this.#requestResponseHelper = new requestResponseHelper_1.RequestResponseHelper(this.#collectorCollectorPort);
67
+ const response = {
68
+ command: commonTypes_1.eIWMessageCommands.MessagePortResponse,
69
+ payload: {}
70
+ };
71
+ this.#collectorCollectorPort.postMessage(response);
72
+ };
73
+ StartRunner = async (runner) => {
74
+ this.#debug(`StartRunner`);
75
+ this.#debug(`StartTests: [${JSON.stringify(runner)}]`);
76
+ runner.state = stsTestWorkerDefinitions_1.IRunnerState.running;
77
+ this.StartWork(runner);
78
+ };
79
+ #AddAsyncRunner = (testRunnerTelemetryPayload) => {
80
+ this.#debug(`AddAsyncRunner`);
81
+ const { runner } = testRunnerTelemetryPayload;
82
+ this.#runners[runner.id] = runner;
83
+ this.StartRunner(runner);
84
+ };
85
+ #StopRunners = (testRunnerTelemetryPayload) => {
86
+ this.#debug(`StopRunners`);
87
+ if (testRunnerTelemetryPayload === null) {
88
+ for (const [, testRunner] of Object.entries(this.#runners)) {
89
+ testRunner.state = stsTestWorkerDefinitions_1.IRunnerState.stopped;
90
+ }
91
+ }
92
+ else {
93
+ const runner = this.#runners[testRunnerTelemetryPayload.runner.id];
94
+ if (runner) {
95
+ runner.state = stsTestWorkerDefinitions_1.IRunnerState.stopped;
96
+ }
97
+ }
98
+ };
99
+ // ProcessMessage = async(data: MessageEvent) => { // Browser version
100
+ ProcessMessage = async (data) => {
101
+ this.#debug(`ProcessMessage: data: [${JSON.stringify(data)}]`);
102
+ try {
103
+ // const payloadMessage: IIWMessagePayload = data.data as IIWMessagePayload; // browser version
104
+ const payloadMessage = data;
105
+ switch (payloadMessage.command) {
106
+ case commonTypes_1.eIWMessageCommands.MessagePort:
107
+ this.#debug(`ProcessMessage::MessagePort`);
108
+ this.#SetMessagePort(payloadMessage.payload);
109
+ this.#options = payloadMessage.payload.options;
110
+ this.#debug(`ProcessMessage::#options: [${JSON.stringify(this.#options)}]`);
111
+ break;
112
+ case commonTypes_1.eIWMessageCommands.AddAsyncRunner:
113
+ this.#debug(`ProcessMessage::AddAsyncRunner`);
114
+ this.#AddAsyncRunner(payloadMessage.payload);
115
+ break;
116
+ case commonTypes_1.eIWMessageCommands.StopAllAsyncRunners:
117
+ this.#debug(`ProcessMessage::StopAllAsyncRunners`);
118
+ this.#StopRunners(payloadMessage.payload);
119
+ break;
120
+ default:
121
+ this.#debug(`ProcessMessage::default`);
122
+ this.#debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);
123
+ }
124
+ }
125
+ catch (error) {
126
+ console.log(error);
127
+ }
128
+ };
129
+ }
130
+ exports.WorkerInstance = WorkerInstance;
131
+ //# sourceMappingURL=workerInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerInstance.js","sourceRoot":"","sources":["../../src/testertesting/workerInstance.ts"],"names":[],"mappings":"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"}