@nsshunt/stsappframework 3.1.167 → 3.1.169

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 (31) hide show
  1. package/dist/testertesting/app.js +49 -0
  2. package/dist/testertesting/app.js.map +1 -1
  3. package/dist/testertesting/commonTypes.js +2 -2
  4. package/dist/testertesting/commonTypes.js.map +1 -1
  5. package/dist/testertesting/testCase01.js +2 -2
  6. package/dist/testertesting/testCase01.js.map +1 -1
  7. package/dist/testertesting/workerInstance.js +21 -27
  8. package/dist/testertesting/workerInstance.js.map +1 -1
  9. package/dist/testertesting/workerManager.js +77 -25
  10. package/dist/testertesting/workerManager.js.map +1 -1
  11. package/dist/testertesting/workerWorkerTestRunner01.js +9 -145
  12. package/dist/testertesting/workerWorkerTestRunner01.js.map +1 -1
  13. package/package.json +3 -1
  14. package/src/testertesting/app.ts +62 -5
  15. package/src/testertesting/commonTypes.ts +19 -7
  16. package/src/testertesting/testCase01.ts +2 -2
  17. package/src/testertesting/workerInstance.ts +22 -32
  18. package/src/testertesting/workerManager.ts +85 -27
  19. package/src/testertesting/workerWorkerTestRunner01.ts +7 -179
  20. package/types/testertesting/commonTypes.d.ts +19 -8
  21. package/types/testertesting/commonTypes.d.ts.map +1 -1
  22. package/types/testertesting/workerInstance.d.ts +0 -2
  23. package/types/testertesting/workerInstance.d.ts.map +1 -1
  24. package/types/testertesting/workerManager.d.ts.map +1 -1
  25. package/types/testertesting/workerWorkerTestRunner01.d.ts +1 -14
  26. package/types/testertesting/workerWorkerTestRunner01.d.ts.map +1 -1
  27. package/dist/testertesting/requestResponseHelper.js +0 -83
  28. package/dist/testertesting/requestResponseHelper.js.map +0 -1
  29. package/src/testertesting/requestResponseHelper.ts +0 -95
  30. package/types/testertesting/requestResponseHelper.d.ts +0 -8
  31. package/types/testertesting/requestResponseHelper.d.ts.map +0 -1
@@ -3,137 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.WorkerTestCases = exports.WorkerWorkerTestRunner01 = void 0;
7
- /* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF
8
- const chalk_1 = __importDefault(require("chalk"));
9
- // Force chalk level
10
- chalk_1.default.level = 3;
6
+ exports.WorkerTestCases = void 0;
11
7
  const workerInstance_1 = require("./workerInstance");
12
8
  const testCase01_1 = require("./testCase01");
13
- const debug = (message) => {
14
- console.log(chalk_1.default.blue(`pid: [${process.pid}] workerWorkerTestRunner01::${message}`));
15
- };
16
- // This will execute within a worker thread context
17
- class WorkerWorkerTestRunner01 extends workerInstance_1.WorkerInstance {
18
- #logMessageDataSet = {};
19
- constructor() {
20
- super();
21
- debug(`constructor`);
22
- }
23
- StartWork = async (runner) => {
24
- debug(`StartWork::Options: [${JSON.stringify(this.Options)}]`);
25
- //this.#access_token = await this.#GetAccessToken();
26
- //await Sleep(this.GetRandomInt(1000));
27
- return this.PerformTest(runner);
28
- };
29
- GenLogMessage = (runner) => {
30
- if (!this.#logMessageDataSet[runner.id]) {
31
- this.#logMessageDataSet[runner.id] = {
32
- adder: 1,
33
- indent: 0
34
- };
35
- }
36
- const logMessageData = this.#logMessageDataSet[runner.id];
37
- let message = `${' '.repeat(logMessageData.indent)}>> Hello World <<`;
38
- const colorCode = runner.asyncRunnerContext.asyncRunnerId % 4;
39
- switch (colorCode) {
40
- case 0:
41
- message = chalk_1.default.green(`${message}`);
42
- break;
43
- case 1:
44
- message = chalk_1.default.yellow(`${message}`);
45
- break;
46
- case 2:
47
- message = chalk_1.default.magenta(`${message}`);
48
- break;
49
- case 3:
50
- message = chalk_1.default.white(`${message}`);
51
- break;
52
- }
53
- console.log(message);
54
- runner.instrumentData.message.push(message);
55
- logMessageData.indent += logMessageData.adder;
56
- if (logMessageData.indent > 20) {
57
- logMessageData.adder = -1;
58
- }
59
- else if (logMessageData.indent === 0) {
60
- logMessageData.adder = 1;
61
- }
62
- };
63
- PerformTest = async (runner) => {
64
- debug(`WorkerWorkerTestRunner01::PerformTest`);
65
- const message = `ID: [${runner.asyncRunnerContext.id}], Worker: [${runner.asyncRunnerContext.threadId}], Runner: [${runner.asyncRunnerContext.asyncRunnerId}] starting ...`;
66
- console.log(message);
67
- runner.instrumentData.message = [message];
68
- this.PostTelemetry(runner);
69
- runner.instrumentData.message = [];
70
- /*
71
- const tester = new TestRest01Service(this.#access_token, runner.options as IRunnerOptionsEx);
72
-
73
- tester.on('rx', (val: string) => {
74
- runner.instrumentData.rx += parseInt(val);
75
- //console.log(runner.instrumentData.rx);
76
- });
77
-
78
- tester.on('tx', (val: string) => {
79
- runner.instrumentData.tx += parseInt(val);
80
- });
81
- */
82
- /*
83
- while (runner.state !== IRunnerState.stopped) {
84
-
85
- await Sleep(0);
86
- //let retVal = await tester.StartTest();
87
-
88
- runner.instrumentData.coreCount = 1;
89
-
90
-
91
- const options = runner.options as IRunnerOptionsEx;
92
-
93
- await Sleep(options.sleepDuration);
94
-
95
- runner.instrumentData.timer++;
96
- runner.instrumentData.requestCount++;
97
- runner.instrumentData.velocity = options.messageMod;
98
-
99
- //runner.instrumentData.tx += 256;
100
- //runner.instrumentData.rx += 6500;
101
-
102
- if (runner.instrumentData.requestCount % options.logMessageMod === 0) {
103
- this.GenLogMessage(runner);
104
- }
105
-
106
- if (runner.instrumentData.requestCount % options.messageMod === 0) {
107
- this.PostTelemetry(runner);
108
- runner.instrumentData.message = [ ];
109
- runner.instrumentData.tx = 0;
110
- runner.instrumentData.rx = 0;
111
- }
112
- if (runner.instrumentData.requestCount % 1000 === 0) {
113
- const message = `Worker: [${runner.asyncRunnerContext.threadId}], Runner: [${runner.asyncRunnerContext.asyncRunnerId}] has completed: [${runner.instrumentData.requestCount}] iterations of max: [${options.iterations}]`;
114
- console.log(message);
115
- runner.instrumentData.message = [message]
116
- this.PostTelemetry(runner);
117
- runner.instrumentData.message = [ ];
118
- runner.instrumentData.tx = 0;
119
- runner.instrumentData.rx = 0;
120
-
121
- }
122
- if (runner.instrumentData.requestCount > options.iterations) {
123
- runner.state = IRunnerState.stopped;
124
- const message = `Worker: [${runner.asyncRunnerContext.threadId}], Runner: [${runner.asyncRunnerContext.asyncRunnerId}] stopping ...`;
125
- console.log(message);
126
- runner.instrumentData.message = [message]
127
- this.PostTelemetry(runner);
128
- runner.instrumentData.message = [ ];
129
- runner.instrumentData.tx = 0;
130
- runner.instrumentData.rx = 0;
131
- }
132
- }
133
- */
134
- };
135
- }
136
- exports.WorkerWorkerTestRunner01 = WorkerWorkerTestRunner01;
9
+ const detect_node_1 = __importDefault(require("detect-node"));
10
+ const worker_threads_1 = require("worker_threads");
137
11
  class WorkerTestCases extends workerInstance_1.WorkerInstance {
138
12
  constructor() {
139
13
  super();
@@ -148,24 +22,14 @@ class WorkerTestCases extends workerInstance_1.WorkerInstance {
148
22
  };
149
23
  }
150
24
  exports.WorkerTestCases = WorkerTestCases;
151
- const worker_threads_1 = require("worker_threads");
152
- let messagePort;
153
25
  const worker = new WorkerTestCases();
154
26
  worker_threads_1.parentPort?.on('message', (data) => {
155
- worker.ProcessMessage(data);
156
- /*
157
-
158
- if (data.cmd.localeCompare('portmessage') === 0) {
159
- messagePort = data.port;
160
- messagePort.on('message', (data) => {
161
- LogInfoMessage(`webWorker (${process.pid}): message from passed message port = [${data}]`);
162
- messagePort.postMessage(data);
163
- });
164
- } else {
165
- LogInfoMessage(`webWorker (${process.pid}): message from parent = [${JSON.stringify(data)}]`);
166
- parentPort?.postMessage(data);
27
+ if (detect_node_1.default) {
28
+ worker.ProcessMessage(data);
29
+ }
30
+ else {
31
+ // const payloadMessage: IIWMessagePayload = data.data as IIWMessagePayload; // browser version
32
+ worker.ProcessMessage(data.data); // browser version
167
33
  }
168
- */
169
34
  });
170
- debug(`file completed ...`);
171
35
  //# sourceMappingURL=workerWorkerTestRunner01.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workerWorkerTestRunner01.js","sourceRoot":"","sources":["../../src/testertesting/workerWorkerTestRunner01.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workerWorkerTestRunner01.js","sourceRoot":"","sources":["../../src/testertesting/workerWorkerTestRunner01.ts"],"names":[],"mappings":";;;;;;AAEA,qDAAiD;AACjD,6CAAyC;AAEzC,8DAAgC;AAEhC,mDAA4C;AAE5C,MAAa,eAAgB,SAAQ,+BAAc;IAC/C;QACI,KAAK,EAAE,CAAA;IACX,CAAC;IAEQ,iBAAiB,GAAG,CAAC,0BAAuD,EAA0B,EAAE;QAC7G,MAAM,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC;QAC9C,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,YAAY;gBACb,OAAO,IAAI,uBAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAA;CACJ;AAbD,0CAaC;AAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;AAErC,2BAAU,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE;IACpC,IAAI,qBAAM,EAAE,CAAC;QACT,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACJ,+FAA+F;QAC/F,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB;IACxD,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "3.1.167",
3
+ "version": "3.1.169",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -32,6 +32,7 @@
32
32
  "@tsconfig/node20": "^20.1.4",
33
33
  "@types/cookie-parser": "^1.4.7",
34
34
  "@types/debug": "^4.1.12",
35
+ "@types/detect-node": "^2.0.2",
35
36
  "@types/express": "^4.17.21",
36
37
  "@types/jest": "^29.5.12",
37
38
  "@types/jsonwebtoken": "^9.0.6",
@@ -65,6 +66,7 @@
65
66
  "cookie-parser": "^1.4.6",
66
67
  "cors": "^2.8.5",
67
68
  "debug": "^4.3.6",
69
+ "detect-node": "^2.1.0",
68
70
  "express": "^4.19.1",
69
71
  "http-status-codes": "^2.3.0",
70
72
  "jayson": "^4.1.1",
@@ -83,6 +83,7 @@ if (cluster.isPrimary) {
83
83
  const agentId = 'agent01';
84
84
  const userAgent = 'userAgent01'
85
85
 
86
+ // Root level / master async runner context
86
87
  const asyncRunnerContext: IAsyncRunnerContext = {
87
88
  nid: `\
88
89
  ${hostName}${ModelDelimeter.COMPONENT_SEPERATOR}${agentId}-${userAgent}\
@@ -168,16 +169,11 @@ if (cluster.isPrimary) {
168
169
  agentInstrumentController.StartPublish();
169
170
 
170
171
  const workerFactory: IWorkerFactory = {
171
-
172
172
  createWorkerThreadWorker: (): Worker => {
173
-
174
173
  LogInfoMessage(`createWorkerThreadWorker`);
175
-
176
174
  const fileName ='./dist/testertesting/workerWorkerTestRunner01.js';
177
-
178
175
  const publishCollectorWebWorker = new Worker(fileName);
179
176
  publishCollectorWebWorker.unref();
180
-
181
177
  return publishCollectorWebWorker;
182
178
  },
183
179
  get workerThreadWorkerOptions(): IWorkerOptions {
@@ -262,6 +258,67 @@ if (cluster.isPrimary) {
262
258
  }, 2000);
263
259
  }, 2000);
264
260
  }, 2000);
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+ const worker2 = await wm.AddWorker();
269
+
270
+ const runnerOptions2: IRunnerOptionsEx = {
271
+ testType: 'TestCase01',
272
+ executionProfile: {
273
+ iterations: 50,
274
+ delayBetweenIterations: 250
275
+ },
276
+ sleepDuration: 0,
277
+ messageMod: 1,
278
+ logMessageMod: 1
279
+ };
280
+
281
+ const runnerW2R1 = worker2.AddRunner(runnerOptions2);
282
+ runnerW2R1.on('Completed', () => {
283
+ console.log(chalk.rgb(10, 100, 250)(`Completed event handler for worker 2 runner 1`));
284
+ });
285
+ worker2.StartRunner(runnerW2R1);
286
+
287
+ const runnerW2R2 = worker2.AddRunner(runnerOptions2);
288
+ runnerW2R2.on('Completed', () => {
289
+ console.log(chalk.rgb(10, 100, 250)(`Completed event handler for worker 2 runner 2`));
290
+ });
291
+ worker2.StartRunner(runnerW2R2);
292
+
293
+ setTimeout(() => {
294
+ worker2.Pause();
295
+ setTimeout(() => {
296
+ worker2.Resume();
297
+ setTimeout(() => {
298
+ worker2.Stop();
299
+ setTimeout(async () => {
300
+ await worker2.Reset();
301
+ const newOptions = { ...runnerOptions2 };
302
+ newOptions.sleepDuration = 50;
303
+ await worker2.UpdateOptions(newOptions);
304
+ await worker2.Start();
305
+ setTimeout(async () => {
306
+ await worker2.Pause();
307
+ await worker2.Execute();
308
+ await worker2.Execute();
309
+ await worker2.Execute();
310
+ await worker2.Execute();
311
+ await worker2.Execute();
312
+ setTimeout(async () => {
313
+ await worker2.Resume();
314
+ }, 5000);
315
+ }, 5000);
316
+ }, 5000);
317
+ }, 5000);
318
+ }, 5000);
319
+ }, 5000);
320
+
321
+
265
322
  };
266
323
  PerformTesting();
267
324
 
@@ -28,8 +28,8 @@ export enum eIWMessageCommands {
28
28
  InstrumentTelemetry ='__STS__InstrumentTelemetry', // Used to send instrument telemetry
29
29
  MessagePort = '__STS__MessagePort',
30
30
  MessagePortResponse = '__STS__MessagePortResponse',
31
- AddAsyncRunner = '__STS__AddAsyncRunner',
32
- StopAllAsyncRunners = '__STS__StopAllAsyncRunners',
31
+ AddRunner = '__STS__AddRunner',
32
+ StopAllRunners = '__STS__StopAllRunners',
33
33
  StartRunner = '__STS__StartRunner',
34
34
  StopRunner = '__STS__StopRunner',
35
35
  PauseRunner = '__STS__PauseRunner',
@@ -106,9 +106,9 @@ export interface IRunner {
106
106
  export interface IRunnerEx extends IRunner {
107
107
  publishInstrumentController: PublishInstrumentController
108
108
  Start: () => Promise<boolean> // Start runner iterations
109
+ Stop: () => Promise<boolean> // Stop iteration processing and keep the current iteration number. Currently, this is the same as Pause.
109
110
  Pause: () => Promise<boolean> // Pause iteration processing and keep the current iteration number.
110
111
  Resume: () => Promise<boolean> // Resume iteration processing from the previously paused iteration number.
111
- Stop: () => Promise<boolean> // Stop iteration processing and keep the current iteration number. Currently, this is the same as Pause.
112
112
  Terminate: () => Promise<boolean> // Stop the runner iterations and terminate the instance, stop any instrument publishers.
113
113
  Reset: () => Promise<boolean> // Stop the current iterations and reset the iteration count back to 0.
114
114
  Execute: (iteration: number) => Promise<boolean> // Execute a single iteration for this test.
@@ -117,15 +117,15 @@ export interface IRunnerEx extends IRunner {
117
117
  }
118
118
 
119
119
  export interface IRunnerInstance {
120
- Execute: (iteration: number) => Promise<boolean> // Execute a single iteration for this test
121
120
  StartRunner: () => Promise<boolean>
122
121
  StopRunner: () => Promise<boolean>
123
- TerminateRunner: () => Promise<boolean>
124
- Completed: () => Promise<boolean>
125
122
  PauseRunner: () => Promise<boolean>
126
123
  ResumeRunner: () => Promise<boolean>
124
+ TerminateRunner: () => Promise<boolean>
127
125
  ResetRunner: () => Promise<boolean>
126
+ Execute: (iteration: number) => Promise<boolean> // Execute a single iteration for this test
128
127
  UpdateOptions: () => Promise<boolean>
128
+ Completed: () => Promise<boolean>
129
129
  }
130
130
 
131
131
  export enum IWorkerState {
@@ -133,7 +133,6 @@ export enum IWorkerState {
133
133
  started = 'started',
134
134
  stopped = 'stopped'
135
135
  }
136
-
137
136
 
138
137
  export interface IWorkerOptions {
139
138
  id: string
@@ -174,11 +173,24 @@ export interface IWorkerEx extends IWorker {
174
173
  runnersEvents: Record<string, IRunnerEvent[]>
175
174
  GetRunner(id: string): IRunnerEx | null
176
175
  AddRunner: (runnerOptions: IRunnerOptions) => IRunnerEx
176
+
177
177
  StartRunner: (runner: IRunnerEx) => Promise<boolean>
178
178
  StopRunner: (runner: IRunnerEx) => Promise<boolean>
179
179
  PauseRunner: (runner: IRunnerEx) => Promise<boolean>
180
180
  ResumeRunner: (runner: IRunnerEx) => Promise<boolean>
181
+ TerminateRunner: (runner: IRunnerEx) => Promise<boolean>
182
+ ResetRunner: (runner: IRunnerEx) => Promise<boolean>
183
+ ExecuteRunner: (runner: IRunnerEx) => Promise<boolean>
184
+ UpdateOptionsRunner: (runner: IRunnerEx, options: IRunnerOptions) => Promise<boolean>
185
+
186
+ Start: () => Promise<boolean>
181
187
  Stop: () => Promise<boolean>
188
+ Pause: () => Promise<boolean>
189
+ Resume: () => Promise<boolean>
190
+ Terminate: () => Promise<boolean>
191
+ Reset: () => Promise<boolean>
192
+ Execute: () => Promise<boolean> // Execute a single iteration
193
+ UpdateOptions: (options: IRunnerOptions) => Promise<boolean>
182
194
  }
183
195
 
184
196
  export interface ISTSTestWorkerOptions {
@@ -79,8 +79,8 @@ export class TestCase01 implements IRunnerInstance {
79
79
  this.#runner.instrumentData.requestCount++;
80
80
  this.#runner.instrumentData.velocity = options.messageMod;
81
81
 
82
- //runner.instrumentData.tx += 256;
83
- //runner.instrumentData.rx += 6500;
82
+ //this.#runner.instrumentData.tx += 256000;
83
+ //this.#runner.instrumentData.rx += 6500000;
84
84
 
85
85
  if (this.#runner.instrumentData.requestCount % options.logMessageMod === 0) {
86
86
  this.#GenLogMessage(this.#runner, iteration);
@@ -1,12 +1,12 @@
1
1
  /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
2
2
  import { MessagePort } from 'worker_threads';
3
3
 
4
+ import isNode from 'detect-node'
5
+
4
6
  import { IIWMessagePayload, eIWMessageCommands, IIWMessagePayloadContentBase, IRunnerInstance,
5
7
  ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload, IWorkerOptions
6
8
  } from './commonTypes'
7
9
 
8
- import { RequestResponseHelper } from './requestResponseHelper'
9
-
10
10
  import chalk from 'chalk';
11
11
  // Force chalk level
12
12
  chalk.level = 3;
@@ -28,7 +28,6 @@ export interface IRunnerEx2RunState {
28
28
 
29
29
  export abstract class WorkerInstance {
30
30
  #collectorCollectorPort: MessagePort | null = null;
31
- #requestResponseHelper: RequestResponseHelper | null = null;
32
31
  #runners: Record<string, IRunnerEx2RunState> = { };
33
32
  #options: IWorkerOptions | null = null;
34
33
 
@@ -68,10 +67,6 @@ export abstract class WorkerInstance {
68
67
  }
69
68
  }
70
69
 
71
- get RequestResponseHelper(): RequestResponseHelper | null {
72
- return this.#requestResponseHelper;
73
- }
74
-
75
70
  get CollectorCollectorPort(): MessagePort | null {
76
71
  return this.#collectorCollectorPort;
77
72
  }
@@ -85,18 +80,16 @@ export abstract class WorkerInstance {
85
80
  this.#collectorCollectorPort = workerMessagePort.port as MessagePort;
86
81
 
87
82
  // NodeJS version
88
- this.#collectorCollectorPort.on('message', (data: any) => {
89
- this.#debug(`collectorCollectorPort onmessage: ${data.data}`);
90
- });
91
-
92
- // Browser Version
93
- /*
94
- this.#collectorCollectorPort.onmessage = function(data: MessageEvent) {
95
- console.log(`collectorCollectorPort onmessage: ${data.data}`);
96
- }
97
- */
98
83
 
99
- this.#requestResponseHelper = new RequestResponseHelper(this.#collectorCollectorPort);
84
+ if (isNode) {
85
+ this.#collectorCollectorPort.on('message', (data: any) => {
86
+ this.#debug(`collectorCollectorPort onmessage: ${data.data}`);
87
+ });
88
+ } else {
89
+ (this.#collectorCollectorPort as any).onmessage = function(data: any) { // MessageEvent
90
+ console.log(`collectorCollectorPort onmessage: ${data.data}`);
91
+ }
92
+ }
100
93
 
101
94
  const response: IIWMessagePayload = {
102
95
  command: eIWMessageCommands.MessagePortResponse,
@@ -110,8 +103,8 @@ export abstract class WorkerInstance {
110
103
  return null;
111
104
  }
112
105
 
113
- #AddAsyncRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload): IRunner => {
114
- this.#debug(`AddAsyncRunner`)
106
+ #AddRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload): IRunner => {
107
+ this.#debug(`AddRunner`)
115
108
  const { runner } = testRunnerTelemetryPayload;
116
109
  const asyncRunnerInstance = this.CreateAsyncRunner(testRunnerTelemetryPayload);
117
110
  if (asyncRunnerInstance) {
@@ -128,8 +121,6 @@ export abstract class WorkerInstance {
128
121
  return runner;
129
122
  }
130
123
 
131
- //@@ re4set iteration count - need a reset
132
-
133
124
  #StartRunner = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
134
125
  const { runner } = testRunnerTelemetryPayload;
135
126
  this.#debug(`${chalk.magenta(`runner: [${runner.id}]`)} StartRunner`)
@@ -170,10 +161,10 @@ export abstract class WorkerInstance {
170
161
  ExecuteLoop();
171
162
  }
172
163
 
173
- #StopRunners = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
174
- this.#debug(`StopRunners`);
164
+ #StopAllRunners = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
165
+ this.#debug(`StopAllRunners`);
175
166
  for (const [, runner] of Object.entries(this.#runners)) {
176
- this.#debug(`${chalk.magenta(`runner: [${runner.runner.id}]`)} StopRunners`)
167
+ this.#debug(`${chalk.magenta(`runner: [${runner.runner.id}]`)} StopAllRunners`)
177
168
  runner.terminate = true;
178
169
  await runner.runnerInstance.StopRunner();
179
170
  }
@@ -246,7 +237,6 @@ export abstract class WorkerInstance {
246
237
  ProcessMessage = async(data: any) => {
247
238
  this.#debug(`ProcessMessage: data: [${JSON.stringify(data)}]`)
248
239
  try {
249
- // const payloadMessage: IIWMessagePayload = data.data as IIWMessagePayload; // browser version
250
240
  const payloadMessage: IIWMessagePayload = data as IIWMessagePayload;
251
241
  switch (payloadMessage.command) {
252
242
  case eIWMessageCommands.MessagePort :
@@ -255,13 +245,13 @@ export abstract class WorkerInstance {
255
245
  this.#options = (payloadMessage.payload as ISTSAgentWorkerMessagePort).options;
256
246
  this.#debug(`ProcessMessage::#options: [${JSON.stringify(this.#options)}]`)
257
247
  break;
258
- case eIWMessageCommands.AddAsyncRunner :
259
- this.#debug(`ProcessMessage::AddAsyncRunner`)
260
- this.#AddAsyncRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
248
+ case eIWMessageCommands.AddRunner :
249
+ this.#debug(`ProcessMessage::AddRunner`)
250
+ this.#AddRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
261
251
  break;
262
- case eIWMessageCommands.StopAllAsyncRunners :
263
- this.#debug(`ProcessMessage::StopAllAsyncRunners`)
264
- this.#StopRunners(payloadMessage.payload as ITestRunnerTelemetryPayload);
252
+ case eIWMessageCommands.StopAllRunners :
253
+ this.#debug(`ProcessMessage::StopAllRunners`)
254
+ this.#StopAllRunners(payloadMessage.payload as ITestRunnerTelemetryPayload);
265
255
  break;
266
256
  case eIWMessageCommands.StartRunner :
267
257
  this.#debug(`ProcessMessage::StartRunner`)