@nsshunt/stsappframework 3.1.162 → 3.1.164

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 (29) hide show
  1. package/dist/testertesting/app.js +34 -4
  2. package/dist/testertesting/app.js.map +1 -1
  3. package/dist/testertesting/commonTypes.js +6 -0
  4. package/dist/testertesting/commonTypes.js.map +1 -1
  5. package/dist/testertesting/testCase01.js +84 -0
  6. package/dist/testertesting/testCase01.js.map +1 -0
  7. package/dist/testertesting/workerInstance.js +98 -19
  8. package/dist/testertesting/workerInstance.js.map +1 -1
  9. package/dist/testertesting/workerManager.js +69 -15
  10. package/dist/testertesting/workerManager.js.map +1 -1
  11. package/dist/testertesting/workerWorkerTestRunner01.js +39 -14
  12. package/dist/testertesting/workerWorkerTestRunner01.js.map +1 -1
  13. package/package.json +1 -1
  14. package/src/testertesting/app.ts +42 -7
  15. package/src/testertesting/commonTypes.ts +34 -9
  16. package/src/testertesting/testCase01.ts +107 -0
  17. package/src/testertesting/workerInstance.ts +117 -24
  18. package/src/testertesting/workerManager.ts +78 -18
  19. package/src/testertesting/workerWorkerTestRunner01.ts +24 -2
  20. package/types/testertesting/commonTypes.d.ts +39 -8
  21. package/types/testertesting/commonTypes.d.ts.map +1 -1
  22. package/types/testertesting/testCase01.d.ts +13 -0
  23. package/types/testertesting/testCase01.d.ts.map +1 -0
  24. package/types/testertesting/workerInstance.d.ts +9 -2
  25. package/types/testertesting/workerInstance.d.ts.map +1 -1
  26. package/types/testertesting/workerManager.d.ts +2 -0
  27. package/types/testertesting/workerManager.d.ts.map +1 -1
  28. package/types/testertesting/workerWorkerTestRunner01.d.ts +5 -1
  29. package/types/testertesting/workerWorkerTestRunner01.d.ts.map +1 -1
@@ -3,13 +3,13 @@ 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.WorkerWorkerTestRunner01 = void 0;
6
+ exports.WorkerTestCases = exports.WorkerWorkerTestRunner01 = void 0;
7
7
  /* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF
8
8
  const chalk_1 = __importDefault(require("chalk"));
9
9
  // Force chalk level
10
10
  chalk_1.default.level = 3;
11
- const commonTypes_1 = require("./commonTypes");
12
11
  const workerInstance_1 = require("./workerInstance");
12
+ const testCase01_1 = require("./testCase01");
13
13
  const debug = (message) => {
14
14
  console.log(chalk_1.default.blue(`pid: [${process.pid}] workerWorkerTestRunner01::${message}`));
15
15
  };
@@ -79,53 +79,78 @@ class WorkerWorkerTestRunner01 extends workerInstance_1.WorkerInstance {
79
79
  runner.instrumentData.tx += parseInt(val);
80
80
  });
81
81
  */
82
- while (runner.state !== commonTypes_1.IRunnerState.stopped) {
83
- await (0, stsutils_1.Sleep)(0);
82
+ /*
83
+ while (runner.state !== IRunnerState.stopped) {
84
+
85
+ await Sleep(0);
84
86
  //let retVal = await tester.StartTest();
87
+
85
88
  runner.instrumentData.coreCount = 1;
86
- const options = runner.options;
87
- await (0, stsutils_1.Sleep)(options.sleepDuration);
89
+
90
+
91
+ const options = runner.options as IRunnerOptionsEx;
92
+
93
+ await Sleep(options.sleepDuration);
94
+
88
95
  runner.instrumentData.timer++;
89
96
  runner.instrumentData.requestCount++;
90
97
  runner.instrumentData.velocity = options.messageMod;
98
+
91
99
  //runner.instrumentData.tx += 256;
92
100
  //runner.instrumentData.rx += 6500;
101
+
93
102
  if (runner.instrumentData.requestCount % options.logMessageMod === 0) {
94
103
  this.GenLogMessage(runner);
95
104
  }
105
+
96
106
  if (runner.instrumentData.requestCount % options.messageMod === 0) {
97
107
  this.PostTelemetry(runner);
98
- runner.instrumentData.message = [];
108
+ runner.instrumentData.message = [ ];
99
109
  runner.instrumentData.tx = 0;
100
110
  runner.instrumentData.rx = 0;
101
111
  }
102
112
  if (runner.instrumentData.requestCount % 1000 === 0) {
103
113
  const message = `Worker: [${runner.asyncRunnerContext.threadId}], Runner: [${runner.asyncRunnerContext.asyncRunnerId}] has completed: [${runner.instrumentData.requestCount}] iterations of max: [${options.iterations}]`;
104
114
  console.log(message);
105
- runner.instrumentData.message = [message];
115
+ runner.instrumentData.message = [message]
106
116
  this.PostTelemetry(runner);
107
- runner.instrumentData.message = [];
117
+ runner.instrumentData.message = [ ];
108
118
  runner.instrumentData.tx = 0;
109
119
  runner.instrumentData.rx = 0;
120
+
110
121
  }
111
122
  if (runner.instrumentData.requestCount > options.iterations) {
112
- runner.state = commonTypes_1.IRunnerState.stopped;
123
+ runner.state = IRunnerState.stopped;
113
124
  const message = `Worker: [${runner.asyncRunnerContext.threadId}], Runner: [${runner.asyncRunnerContext.asyncRunnerId}] stopping ...`;
114
125
  console.log(message);
115
- runner.instrumentData.message = [message];
126
+ runner.instrumentData.message = [message]
116
127
  this.PostTelemetry(runner);
117
- runner.instrumentData.message = [];
128
+ runner.instrumentData.message = [ ];
118
129
  runner.instrumentData.tx = 0;
119
130
  runner.instrumentData.rx = 0;
120
131
  }
121
132
  }
133
+ */
122
134
  };
123
135
  }
124
136
  exports.WorkerWorkerTestRunner01 = WorkerWorkerTestRunner01;
137
+ class WorkerTestCases extends workerInstance_1.WorkerInstance {
138
+ constructor() {
139
+ super();
140
+ }
141
+ CreateAsyncRunner = (testRunnerTelemetryPayload) => {
142
+ const { runner } = testRunnerTelemetryPayload;
143
+ switch (runner.options.testType) {
144
+ case 'TestCase01':
145
+ return new testCase01_1.TestCase01(this, runner);
146
+ }
147
+ return null;
148
+ };
149
+ }
150
+ exports.WorkerTestCases = WorkerTestCases;
125
151
  const worker_threads_1 = require("worker_threads");
126
- const stsutils_1 = require("@nsshunt/stsutils");
127
152
  let messagePort;
128
- const worker = new WorkerWorkerTestRunner01();
153
+ const worker = new WorkerTestCases();
129
154
  worker_threads_1.parentPort?.on('message', (data) => {
130
155
  worker.ProcessMessage(data);
131
156
  /*
@@ -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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "3.1.162",
3
+ "version": "3.1.164",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -15,11 +15,14 @@ import { IContextBase, AgentInstrumentController, IPublishInstrumentControllerOp
15
15
  InstrumentDefinitions, InstrumentLogOptions, InstrumentGaugeOptions, PublishTransportRESTServer,
16
16
  TransportType, IPublishTransportRESTServerOptions } from '@nsshunt/stsobservability'
17
17
 
18
- import { ModelDelimeter, type ISTSLogger, defaultLogger } from '@nsshunt/stsutils'
18
+ import { ModelDelimeter, type ISTSLogger, defaultLogger, JSONObject } from '@nsshunt/stsutils'
19
19
 
20
20
  import { v4 as uuidv4 } from 'uuid';
21
21
 
22
22
  import { goptions } from '@nsshunt/stsconfig'
23
+ import { JsonWebTokenError } from 'jsonwebtoken';
24
+
25
+ import { IRunnerOptionsEx } from './testCase01'
23
26
 
24
27
  declare interface IAsyncRunnerContext extends IContextBase {
25
28
  id: string;
@@ -207,20 +210,52 @@ if (cluster.isPrimary) {
207
210
  });
208
211
  const worker = await wm.AddWorker();
209
212
 
210
- const runnerOptions: IRunnerOptions = {
211
- iterations: 100000,
212
- sleepDuration: 250,
213
+ const runnerOptions: IRunnerOptionsEx = {
214
+ testType: 'TestCase01',
215
+ executionProfile: {
216
+ iterations: 50,
217
+ delayBetweenIterations: 250
218
+ },
219
+ sleepDuration: 0,
213
220
  messageMod: 1,
214
221
  logMessageMod: 1
215
- } as IRunnerOptions;
222
+ };
216
223
 
217
224
  const runner1 = worker.AddRunner(runnerOptions);
218
- runner1.Start();
225
+ runner1.on('Completed', () => {
226
+ console.log(chalk.rgb(10, 100, 250)(`Completed event handler for runner 1`));
227
+ });
228
+
229
+ worker.StartRunner(runner1);
219
230
 
220
231
  const runner2 = wm.AddRunnerToWorker(worker, runnerOptions);
221
232
  runner2.Start();
233
+ runner2.on('Completed', () => {
234
+ console.log(chalk.rgb(100, 10, 250)(`Completed event handler for runner 2`));
235
+ });
222
236
 
223
- wm.AddRunnerToWorker(worker, runnerOptions).Start();
237
+ wm.AddRunnerToWorker(worker, runnerOptions).on('Completed', () => {
238
+ console.log(chalk.rgb(250, 100, 25)(`Completed event handler for runner 3`));
239
+ }).Start();
240
+
241
+ setTimeout(() => {
242
+ runner2.Pause();
243
+ setTimeout(() => {
244
+ runner2.Resume();
245
+ setTimeout(() => {
246
+ runner2.Reset();
247
+ setTimeout(() => {
248
+ runner2.Start();
249
+ setTimeout(() => {
250
+ runner2.Stop();
251
+ setTimeout(() => {
252
+ runner2.Terminate();
253
+ }, 2000);
254
+ }, 2000);
255
+ }, 100);
256
+ }, 2000);
257
+ }, 2000);
258
+ }, 2000);
224
259
  };
225
260
  PerformTesting();
226
261
 
@@ -31,6 +31,12 @@ export enum eIWMessageCommands {
31
31
  AddAsyncRunner = '__STS__AddAsyncRunner',
32
32
  StopAllAsyncRunners = '__STS__StopAllAsyncRunners',
33
33
  StartRunner = '__STS__StartRunner',
34
+ StopRunner = '__STS__StopRunner',
35
+ PauseRunner = '__STS__PauseRunner',
36
+ ResumeRunner = '__STS__ResumeRunner',
37
+ ResetRunner = '__STS__ResetRunner',
38
+ ExecuteRunner = '__STS__ExecuteRunner',
39
+ Completed = '__STS__Completed'
34
40
  }
35
41
 
36
42
  /**
@@ -87,11 +93,12 @@ export interface IRunnerTelemetry {
87
93
  }
88
94
 
89
95
  export interface IRunner {
90
- id: number
91
- asyncRunnerContext: IAsyncRunnerContext
92
- options: IRunnerOptions
93
- state: IRunnerState
94
- instrumentData: IRunnerTelemetry
96
+ get id(): number
97
+ get asyncRunnerContext(): IAsyncRunnerContext
98
+ get options(): IRunnerOptions
99
+ set options(options: IRunnerOptions)
100
+ get instrumentData(): IRunnerTelemetry
101
+ set instrumentData(newRunnerTelemetry: IRunnerTelemetry)
95
102
  }
96
103
 
97
104
  export interface IRunnerEx extends IRunner {
@@ -100,8 +107,14 @@ export interface IRunnerEx extends IRunner {
100
107
  Pause: () => Promise<boolean>
101
108
  Resume: () => Promise<boolean>
102
109
  Stop: () => Promise<boolean>
103
- ApplyConfig: (config: IRunnerOptions) => Promise<boolean>
104
- GetConfig(): IRunnerOptions
110
+ Terminate: () => Promise<boolean>
111
+ Reset: () => Promise<boolean>
112
+ Execute: (iteration: number) => Promise<boolean> // Execute a single iteration for this test
113
+ on: (eventName: string, cb: () => void) => IRunnerEx
114
+ }
115
+
116
+ export interface IRunnerInstance {
117
+ Execute: (iteration: number) => Promise<boolean> // Execute a single iteration for this test
105
118
  }
106
119
 
107
120
  export enum IWorkerState {
@@ -133,19 +146,32 @@ export interface IPrimaryWorker {
133
146
  ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>
134
147
  }
135
148
 
136
- // eslint-disable-next-line @typescript-eslint/no-empty-object-type
149
+ export interface IExecutionProfile {
150
+ iterations: number
151
+ delayBetweenIterations: number
152
+ }
153
+
137
154
  export interface IRunnerOptions {
155
+ testType: string
156
+ executionProfile: IExecutionProfile
157
+ }
138
158
 
159
+ export interface IRunnerEvent {
160
+ eventName: string
161
+ cb: () => void
139
162
  }
140
163
 
141
164
  export interface IWorkerEx extends IWorker {
142
165
  worker: Worker
143
166
  primaryWorker: IPrimaryWorker
144
167
  runnersEx: Record<string, IRunnerEx>
168
+ runnersEvents: Record<string, IRunnerEvent[]>
145
169
  GetRunner(id: string): IRunnerEx | null
146
170
  AddRunner: (runnerOptions: IRunnerOptions) => IRunnerEx
147
171
  StartRunner: (runner: IRunnerEx) => Promise<boolean>
148
172
  StopRunner: (runner: IRunnerEx) => Promise<boolean>
173
+ PauseRunner: (runner: IRunnerEx) => Promise<boolean>
174
+ ResumeRunner: (runner: IRunnerEx) => Promise<boolean>
149
175
  Stop: () => Promise<boolean>
150
176
  }
151
177
 
@@ -194,4 +220,3 @@ export interface IIWMessagePayload {
194
220
  command: IIWMessageCommand;
195
221
  payload: IIWMessagePayloadContentBase;
196
222
  }
197
-
@@ -0,0 +1,107 @@
1
+ import { IRunnerInstance, IRunnerOptions, IRunner } from './commonTypes'
2
+
3
+ import chalk from 'chalk';
4
+
5
+ import { WorkerInstance } from './workerInstance'
6
+
7
+ import { Sleep } from '@nsshunt/stsutils'
8
+
9
+ declare interface LogMessageData {
10
+ indent: number
11
+ adder: number
12
+ }
13
+
14
+ declare type LogMessageDataSet = Record<string, LogMessageData>;
15
+
16
+ export interface IRunnerOptionsEx extends IRunnerOptions {
17
+ sleepDuration: number
18
+ messageMod: number
19
+ logMessageMod: number
20
+ }
21
+
22
+ export class TestCase01 implements IRunnerInstance {
23
+ #runner: IRunner
24
+ #workerInstance: WorkerInstance;
25
+ #logMessageDataSet: LogMessageDataSet = { };
26
+
27
+ constructor(workerInstance: WorkerInstance, runner: IRunner) {
28
+ this.#workerInstance = workerInstance;
29
+ this.#runner = runner;
30
+ }
31
+
32
+ #GenLogMessage = (runner: IRunner, iteration: number) => {
33
+ if (!this.#logMessageDataSet[runner.id]) {
34
+ this.#logMessageDataSet[runner.id] = {
35
+ adder: 1,
36
+ indent: 0
37
+ }
38
+ }
39
+ const logMessageData = this.#logMessageDataSet[runner.id];
40
+
41
+ let message = `${' '.repeat(logMessageData.indent)}>> Hello World << ${iteration}`;
42
+ const colorCode = runner.asyncRunnerContext.asyncRunnerId % 4;
43
+ switch (colorCode) {
44
+ case 0:
45
+ message = chalk.green(`${message}`);
46
+ break;
47
+ case 1:
48
+ message = chalk.yellow(`${message}`);
49
+ break;
50
+ case 2:
51
+ message = chalk.magenta(`${message}`);
52
+ break;
53
+ case 3:
54
+ message = chalk.white(`${message}`);
55
+ break;
56
+ }
57
+
58
+ console.log(message);
59
+ runner.instrumentData.message.push(message);
60
+ logMessageData.indent += logMessageData.adder;
61
+ if (logMessageData.indent > 20) {
62
+ logMessageData.adder = -1;
63
+ } else if (logMessageData.indent === 0) {
64
+ logMessageData.adder = 1;
65
+ }
66
+ }
67
+
68
+ Execute = async (iteration: number): Promise<boolean> => {
69
+ //console.log(chalk.magenta(`Execute! [${iteration}]`));
70
+ //console.log(chalk.magenta(JSON.stringify(this.#runner)));
71
+
72
+ this.#runner.instrumentData.coreCount = 1;
73
+
74
+ const options = this.#runner.options as IRunnerOptionsEx;
75
+
76
+ await Sleep(options.sleepDuration);
77
+
78
+ //this.#runner.instrumentData.timer++;
79
+ this.#runner.instrumentData.requestCount++;
80
+ this.#runner.instrumentData.velocity = options.messageMod;
81
+
82
+ //runner.instrumentData.tx += 256;
83
+ //runner.instrumentData.rx += 6500;
84
+
85
+ if (this.#runner.instrumentData.requestCount % options.logMessageMod === 0) {
86
+ this.#GenLogMessage(this.#runner, iteration);
87
+ }
88
+
89
+ if (this.#runner.instrumentData.requestCount % options.messageMod === 0) {
90
+ this.#workerInstance.PostTelemetry(this.#runner);
91
+ this.#runner.instrumentData.message = [ ];
92
+ this.#runner.instrumentData.tx = 0;
93
+ this.#runner.instrumentData.rx = 0;
94
+ }
95
+ if (this.#runner.instrumentData.requestCount % 1000 === 0) {
96
+ const message = `Worker: [${this.#runner.asyncRunnerContext.threadId}], Runner: [${this.#runner.asyncRunnerContext.asyncRunnerId}] has completed: [${this.#runner.instrumentData.requestCount}] iterations of max: [${options.executionProfile.iterations}]`;
97
+ console.log(message);
98
+ this.#runner.instrumentData.message = [message]
99
+ this.#workerInstance.PostTelemetry(this.#runner);
100
+ this.#runner.instrumentData.message = [ ];
101
+ this.#runner.instrumentData.tx = 0;
102
+ this.#runner.instrumentData.rx = 0;
103
+ }
104
+
105
+ return true;
106
+ }
107
+ }
@@ -1,8 +1,8 @@
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 { IIWMessagePayload, eIWMessageCommands, IIWMessagePayloadContentBase, IRunnerState,
5
- ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload
4
+ import { IIWMessagePayload, eIWMessageCommands, IIWMessagePayloadContentBase, IRunnerInstance,
5
+ ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload, IRunnerEx
6
6
  } from './commonTypes'
7
7
 
8
8
  import { RequestResponseHelper } from './requestResponseHelper'
@@ -11,22 +11,31 @@ import chalk from 'chalk';
11
11
  // Force chalk level
12
12
  chalk.level = 3;
13
13
 
14
+ import { Sleep } from '@nsshunt/stsutils';
15
+
14
16
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
15
17
  export interface IWorkerInstanceOptions {
16
18
 
17
19
  }
18
20
 
21
+ export interface IRunnerEx2RunState {
22
+ runnerInstance: IRunnerInstance
23
+ runner: IRunner
24
+ iteration: number
25
+ terminate: boolean
26
+ paused: boolean
27
+ }
28
+
19
29
  export abstract class WorkerInstance {
20
30
  #collectorCollectorPort: MessagePort | null = null;
21
31
  #requestResponseHelper: RequestResponseHelper | null = null;
22
- #runners: Record<string, IRunner> = { };
32
+ #runners: Record<string, IRunnerEx2RunState> = { };
23
33
  #options: IWorkerInstanceOptions | null = null;
24
34
 
25
35
  #debug = (message: string) => {
26
36
  console.log(chalk.green(`pid: [${process.pid}] WorkerInstance::${message}`));
27
37
  }
28
38
 
29
-
30
39
  constructor() {
31
40
  this.#debug(`constructor`)
32
41
  }
@@ -93,42 +102,105 @@ export abstract class WorkerInstance {
93
102
  this.#collectorCollectorPort.postMessage(response);
94
103
  }
95
104
 
96
- StartRunner = async (runner: IRunner) => {
97
- this.#debug(`StartRunner`)
98
- this.#debug(`StartTests: [${JSON.stringify(runner)}]`);
99
- runner.state = IRunnerState.running;
100
- this.StartWork(runner);
105
+ CreateAsyncRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload): IRunnerInstance | null => {
106
+ return null;
101
107
  }
102
108
 
103
109
  #AddAsyncRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload): IRunner => {
104
110
  this.#debug(`AddAsyncRunner`)
105
111
  const { runner } = testRunnerTelemetryPayload;
106
- this.#runners[runner.id] = runner;
112
+ const asyncRunnerInstance = this.CreateAsyncRunner(testRunnerTelemetryPayload);
113
+ if (asyncRunnerInstance) {
114
+ this.#runners[runner.id] = {
115
+ runnerInstance: asyncRunnerInstance,
116
+ runner: testRunnerTelemetryPayload.runner,
117
+ iteration: 0,
118
+ terminate: false,
119
+ paused: false
120
+ }
121
+ } else {
122
+ //@@ exception - implementation not found
123
+ }
107
124
  return runner;
108
- //this.StartRunner(runner);
109
125
  }
110
126
 
111
- #StartRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload): IRunner => {
127
+ //@@ re4set iteration count - need a reset
128
+
129
+ #StartRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
112
130
  this.#debug(`StartRunner`)
113
131
  const { runner } = testRunnerTelemetryPayload;
114
- this.StartRunner(runner);
115
- return runner;
132
+ this.#runners[runner.id].terminate = false;
133
+ this.#runners[runner.id].paused = false;
134
+
135
+ const ExecuteLoop = async () => {
136
+ if (this.#runners[runner.id].iteration < this.#runners[runner.id].runner.options.executionProfile.iterations) {
137
+ await this.#runners[runner.id].runnerInstance.Execute(this.#runners[runner.id].iteration);
138
+ this.#runners[runner.id].iteration++;
139
+ await Sleep(0); // Yield to the event loop to make sure we can process worker messages if any in the event loop queue
140
+ if (!this.#runners[runner.id].terminate) {
141
+ if (!this.#runners[runner.id].paused) {
142
+ await Sleep(this.#runners[runner.id].runner.options.executionProfile.delayBetweenIterations);
143
+ ExecuteLoop();
144
+ }
145
+ }
146
+ } else {
147
+ if (this.#collectorCollectorPort) {
148
+ const message: IIWMessagePayload = {
149
+ command: eIWMessageCommands.Completed,
150
+ payload: {
151
+ runner
152
+ } as ITestRunnerTelemetryPayload
153
+ }
154
+ this.#collectorCollectorPort.postMessage(message);
155
+ }
156
+ }
157
+ }
158
+ ExecuteLoop();
116
159
  }
117
160
 
118
161
  #StopRunners = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
119
- this.#debug(`StopRunners`)
120
- if (testRunnerTelemetryPayload === null) {
121
- for (const [, testRunner] of Object.entries(this.#runners)) {
122
- testRunner.state = IRunnerState.stopped;
123
- }
124
- } else {
125
- const runner: IRunner = this.#runners[testRunnerTelemetryPayload.runner.id];
126
- if (runner) {
127
- runner.state = IRunnerState.stopped;
128
- }
162
+ this.#debug(`StopRunners`);
163
+ for (const [, runner] of Object.entries(this.#runners)) {
164
+ runner.terminate = true;
129
165
  }
130
166
  }
131
167
 
168
+ #StopRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
169
+ this.#debug(`StopRunner`)
170
+ const { runner } = testRunnerTelemetryPayload;
171
+ this.#runners[runner.id].terminate = true;
172
+ }
173
+
174
+ #PauseRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
175
+ this.#debug(`PauseRunner`)
176
+ const { runner } = testRunnerTelemetryPayload;
177
+ this.#runners[runner.id].paused = true;
178
+ }
179
+
180
+ #ResumeRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
181
+ this.#debug(`ResumeRunner`);
182
+ const { runner } = testRunnerTelemetryPayload;
183
+ this.#runners[runner.id].paused = false;
184
+ this.#StartRunner(testRunnerTelemetryPayload);
185
+ //@@ todo
186
+ }
187
+
188
+ #ResetRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
189
+ this.#debug(`ResetRunner`)
190
+ const { runner } = testRunnerTelemetryPayload;
191
+ this.#runners[runner.id].terminate = true;
192
+ this.#runners[runner.id].iteration = 0;
193
+ }
194
+
195
+ // Execute a single iteration of this runners work item
196
+ #ExecuteRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
197
+ this.#debug(`ExecuteRunner`)
198
+ const { runner } = testRunnerTelemetryPayload;
199
+ this.#runners[runner.id].runnerInstance.Execute(this.#runners[runner.id].iteration);
200
+ this.#runners[runner.id].iteration++;
201
+ //@@ todo
202
+ }
203
+
132
204
  // ProcessMessage = async(data: MessageEvent) => { // Browser version
133
205
  ProcessMessage = async(data: any) => {
134
206
  this.#debug(`ProcessMessage: data: [${JSON.stringify(data)}]`)
@@ -154,6 +226,27 @@ export abstract class WorkerInstance {
154
226
  this.#debug(`ProcessMessage::StartRunner`)
155
227
  this.#StartRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
156
228
  break;
229
+ case eIWMessageCommands.StopRunner :
230
+ this.#debug(`ProcessMessage::StopRunner`)
231
+ this.#StopRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
232
+ break;
233
+ case eIWMessageCommands.PauseRunner :
234
+ this.#debug(`ProcessMessage::PauseRunner`)
235
+ this.#PauseRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
236
+ break;
237
+ case eIWMessageCommands.ResumeRunner :
238
+ this.#debug(`ProcessMessage::ResumeRunner`)
239
+ this.#ResumeRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
240
+ break;
241
+ case eIWMessageCommands.ResetRunner :
242
+ this.#debug(`ProcessMessage::ResetRunner`)
243
+ this.#ResetRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
244
+ break;
245
+ case eIWMessageCommands.ExecuteRunner :
246
+ this.#debug(`ProcessMessage::ExecuteRunner`)
247
+ this.#ExecuteRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
248
+ //@@ should return a response ??
249
+ break;
157
250
  default :
158
251
  this.#debug(`ProcessMessage::default`)
159
252
  this.#debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);