@nsshunt/stsappframework 3.1.161 → 3.1.162

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 (39) hide show
  1. package/dist/testertesting/app.js +7 -3
  2. package/dist/testertesting/app.js.map +1 -1
  3. package/dist/testertesting/commonTypes.js +24 -1
  4. package/dist/testertesting/commonTypes.js.map +1 -1
  5. package/dist/testertesting/telemetryProcessor.js +114 -0
  6. package/dist/testertesting/telemetryProcessor.js.map +1 -0
  7. package/dist/testertesting/workerInstance.js +14 -4
  8. package/dist/testertesting/workerInstance.js.map +1 -1
  9. package/dist/testertesting/workerManager.js +34 -112
  10. package/dist/testertesting/workerManager.js.map +1 -1
  11. package/dist/testertesting/workerPrimaryTestRunner01.js +5 -5
  12. package/dist/testertesting/workerPrimaryTestRunner01.js.map +1 -1
  13. package/dist/testertesting/workerWorkerTestRunner01.js +3 -3
  14. package/dist/testertesting/workerWorkerTestRunner01.js.map +1 -1
  15. package/package.json +1 -1
  16. package/src/testertesting/app.ts +10 -5
  17. package/src/testertesting/commonTypes.ts +147 -0
  18. package/src/testertesting/telemetryProcessor.ts +128 -0
  19. package/src/testertesting/workerInstance.ts +16 -5
  20. package/src/testertesting/workerManager.ts +40 -132
  21. package/src/testertesting/workerPrimaryTestRunner01.ts +1 -1
  22. package/src/testertesting/workerWorkerTestRunner01.ts +1 -1
  23. package/types/testertesting/commonTypes.d.ts +124 -1
  24. package/types/testertesting/commonTypes.d.ts.map +1 -1
  25. package/types/testertesting/telemetryProcessor.d.ts +6 -0
  26. package/types/testertesting/telemetryProcessor.d.ts.map +1 -0
  27. package/types/testertesting/workerInstance.d.ts +1 -1
  28. package/types/testertesting/workerInstance.d.ts.map +1 -1
  29. package/types/testertesting/workerManager.d.ts +1 -1
  30. package/types/testertesting/workerManager.d.ts.map +1 -1
  31. package/types/testertesting/workerPrimaryTestRunner01.d.ts +1 -1
  32. package/types/testertesting/workerPrimaryTestRunner01.d.ts.map +1 -1
  33. package/types/testertesting/workerWorkerTestRunner01.d.ts +1 -1
  34. package/types/testertesting/workerWorkerTestRunner01.d.ts.map +1 -1
  35. package/dist/testertesting/stsTestWorkerDefinitions.js +0 -34
  36. package/dist/testertesting/stsTestWorkerDefinitions.js.map +0 -1
  37. package/src/testertesting/stsTestWorkerDefinitions.ts +0 -150
  38. package/types/testertesting/stsTestWorkerDefinitions.d.ts +0 -124
  39. package/types/testertesting/stsTestWorkerDefinitions.d.ts.map +0 -1
@@ -8,7 +8,7 @@ exports.WorkerWorkerTestRunner01 = void 0;
8
8
  const chalk_1 = __importDefault(require("chalk"));
9
9
  // Force chalk level
10
10
  chalk_1.default.level = 3;
11
- const stsTestWorkerDefinitions_1 = require("./stsTestWorkerDefinitions");
11
+ const commonTypes_1 = require("./commonTypes");
12
12
  const workerInstance_1 = require("./workerInstance");
13
13
  const debug = (message) => {
14
14
  console.log(chalk_1.default.blue(`pid: [${process.pid}] workerWorkerTestRunner01::${message}`));
@@ -79,7 +79,7 @@ class WorkerWorkerTestRunner01 extends workerInstance_1.WorkerInstance {
79
79
  runner.instrumentData.tx += parseInt(val);
80
80
  });
81
81
  */
82
- while (runner.state !== stsTestWorkerDefinitions_1.IRunnerState.stopped) {
82
+ while (runner.state !== commonTypes_1.IRunnerState.stopped) {
83
83
  await (0, stsutils_1.Sleep)(0);
84
84
  //let retVal = await tester.StartTest();
85
85
  runner.instrumentData.coreCount = 1;
@@ -109,7 +109,7 @@ class WorkerWorkerTestRunner01 extends workerInstance_1.WorkerInstance {
109
109
  runner.instrumentData.rx = 0;
110
110
  }
111
111
  if (runner.instrumentData.requestCount > options.iterations) {
112
- runner.state = stsTestWorkerDefinitions_1.IRunnerState.stopped;
112
+ runner.state = commonTypes_1.IRunnerState.stopped;
113
113
  const message = `Worker: [${runner.asyncRunnerContext.threadId}], Runner: [${runner.asyncRunnerContext.asyncRunnerId}] stopping ...`;
114
114
  console.log(message);
115
115
  runner.instrumentData.message = [message];
@@ -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.161",
3
+ "version": "3.1.162",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -1,8 +1,8 @@
1
1
  /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
2
2
  import cluster from 'cluster';
3
- import { Worker, MessageChannel } from 'worker_threads';
3
+ import { Worker } from 'worker_threads';
4
4
 
5
- import { IWorkerFactory, IWorkerOptions, IPrimaryWorker, IRunnerOptions } from './stsTestWorkerDefinitions'
5
+ import { IWorkerFactory, IWorkerOptions, IPrimaryWorker, IRunnerOptions } from './commonTypes'
6
6
 
7
7
  import { WorkerPrimaryTestRunner01 } from './workerPrimaryTestRunner01'
8
8
  import { STSWorkerManager } from './workerManager';
@@ -200,7 +200,7 @@ if (cluster.isPrimary) {
200
200
  }
201
201
  }
202
202
 
203
- const xx = async () => {
203
+ const PerformTesting = async () => {
204
204
  const wm = new STSWorkerManager(null, {
205
205
  workerFactory,
206
206
  publishInstrumentController: agentInstrumentController
@@ -214,10 +214,15 @@ if (cluster.isPrimary) {
214
214
  logMessageMod: 1
215
215
  } as IRunnerOptions;
216
216
 
217
- const runner = wm.AddRunnerToWorker(worker, runnerOptions);
217
+ const runner1 = worker.AddRunner(runnerOptions);
218
+ runner1.Start();
218
219
 
220
+ const runner2 = wm.AddRunnerToWorker(worker, runnerOptions);
221
+ runner2.Start();
222
+
223
+ wm.AddRunnerToWorker(worker, runnerOptions).Start();
219
224
  };
220
- xx();
225
+ PerformTesting();
221
226
 
222
227
 
223
228
  /*
@@ -1,3 +1,7 @@
1
+ import { Worker, MessagePort } from 'worker_threads';
2
+
3
+ import { PublishInstrumentController } from '@nsshunt/stsobservability'
4
+
1
5
  import { IContextBase } from '@nsshunt/stsobservability'
2
6
 
3
7
  export const URI_BASE_VUEUTILS: string = '/';
@@ -26,6 +30,7 @@ export enum eIWMessageCommands {
26
30
  MessagePortResponse = '__STS__MessagePortResponse',
27
31
  AddAsyncRunner = '__STS__AddAsyncRunner',
28
32
  StopAllAsyncRunners = '__STS__StopAllAsyncRunners',
33
+ StartRunner = '__STS__StartRunner',
29
34
  }
30
35
 
31
36
  /**
@@ -48,3 +53,145 @@ export interface IObservabilitySubscriberManagerOptions {
48
53
  instrumentManagerPort: string
49
54
  instrumentManagerAPIRoot: string
50
55
  }
56
+
57
+ export interface ISTSAgentWorkerMessagePort extends IIWMessagePayloadContentBase {
58
+ port: MessagePort
59
+ options: IWorkerOptions
60
+ }
61
+
62
+ export enum IRunnerState {
63
+ created = 'created',
64
+ running = 'running',
65
+ stopped = 'stopped',
66
+ paused = 'paused',
67
+ error = 'error',
68
+ }
69
+
70
+ export interface IRunnerTelemetry {
71
+ requestCount: number // requestCount
72
+ errorCount: number
73
+ retryCount: number
74
+ authenticationCount: number
75
+ authenticationErrorCount: number
76
+ authenticationRetryCount: number
77
+ velocity: number
78
+ coreCount: number
79
+ timer: number
80
+ duration: number
81
+ latency: number
82
+ activeRequestCount: number
83
+ message: string[]
84
+ childCount: number
85
+ rx: number
86
+ tx: number
87
+ }
88
+
89
+ export interface IRunner {
90
+ id: number
91
+ asyncRunnerContext: IAsyncRunnerContext
92
+ options: IRunnerOptions
93
+ state: IRunnerState
94
+ instrumentData: IRunnerTelemetry
95
+ }
96
+
97
+ export interface IRunnerEx extends IRunner {
98
+ publishInstrumentController: PublishInstrumentController
99
+ Start: () => Promise<boolean>
100
+ Pause: () => Promise<boolean>
101
+ Resume: () => Promise<boolean>
102
+ Stop: () => Promise<boolean>
103
+ ApplyConfig: (config: IRunnerOptions) => Promise<boolean>
104
+ GetConfig(): IRunnerOptions
105
+ }
106
+
107
+ export enum IWorkerState {
108
+ starting = 'starting',
109
+ started = 'started',
110
+ stopped = 'stopped'
111
+ }
112
+
113
+
114
+ export interface IWorkerOptions {
115
+ hostName: string
116
+ agentId: string
117
+ userAgent: string
118
+ }
119
+
120
+ export type Runners = Record<string, IRunner>
121
+
122
+ export interface IWorker {
123
+ id: number
124
+ state: IWorkerState
125
+ primaryThreadWorkerOptions: IWorkerOptions
126
+ workerThreadWorkerOptions: IWorkerOptions
127
+ runners?: Runners // Will be created by utility helper
128
+ }
129
+
130
+ export type Workers = Record<string, IWorker>
131
+
132
+ export interface IPrimaryWorker {
133
+ ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>
134
+ }
135
+
136
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
137
+ export interface IRunnerOptions {
138
+
139
+ }
140
+
141
+ export interface IWorkerEx extends IWorker {
142
+ worker: Worker
143
+ primaryWorker: IPrimaryWorker
144
+ runnersEx: Record<string, IRunnerEx>
145
+ GetRunner(id: string): IRunnerEx | null
146
+ AddRunner: (runnerOptions: IRunnerOptions) => IRunnerEx
147
+ StartRunner: (runner: IRunnerEx) => Promise<boolean>
148
+ StopRunner: (runner: IRunnerEx) => Promise<boolean>
149
+ Stop: () => Promise<boolean>
150
+ }
151
+
152
+ export interface ISTSTestWorkerOptions {
153
+ messageMod: number
154
+ iterations: number
155
+ }
156
+
157
+ export interface ITelemetryStore {
158
+ workers: Workers
159
+ }
160
+
161
+ export interface ITestRunnerTelemetryPayload extends IIWMessagePayloadContentBase {
162
+ runner: IRunner
163
+ }
164
+
165
+ export interface IWorkerFactory {
166
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
167
+ createPrimaryThreadWorker: (app: any, options: IWorkerOptions) => IPrimaryWorker
168
+ createWorkerThreadWorker: () => Worker // | wt.Worker
169
+ get workerThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup
170
+ get primaryThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup
171
+ }
172
+
173
+ export interface IWorkerManagerOptions {
174
+ workerFactory: IWorkerFactory
175
+ publishInstrumentController: PublishInstrumentController
176
+ }
177
+
178
+ export const PublishMessageCommandsTestRunner = {
179
+ ...eIWMessageCommands,
180
+ GetAccessToken: '__GetAccessToken',
181
+ GetAccessTokenResponse: '__GetAccessTokenResponse',
182
+ GetDataFromPrimary: '__GetDataFromPrimary',
183
+ ExecuteRefreshToken: '__ExecuteRefreshToken',
184
+ ExecuteRefreshTokenResponse: '__ExecuteRefreshTokenResponse'
185
+ } as const
186
+
187
+ export type PublishMessageCommandsTestRunner = typeof PublishMessageCommandsTestRunner[keyof typeof PublishMessageCommandsTestRunner];
188
+
189
+ export interface IIWMessagePayloadContentBase {
190
+ messageId?: string;
191
+ }
192
+
193
+ export interface IIWMessagePayload {
194
+ command: IIWMessageCommand;
195
+ payload: IIWMessagePayloadContentBase;
196
+ }
197
+
@@ -0,0 +1,128 @@
1
+ import { PublishInstrumentController, InstrumentGaugeTelemetry, Gauge } from "@nsshunt/stsobservability";
2
+ import { IRunnerTelemetry } from "./commonTypes";
3
+
4
+ export class TelemetryProcessor {
5
+ ProcessTelemetry = (publishInstrumentController: PublishInstrumentController, telemetry: IRunnerTelemetry): boolean => {
6
+ let update = false;
7
+
8
+ if (telemetry.message) {
9
+ telemetry.message.forEach((message) => {
10
+ publishInstrumentController.LogEx(message);
11
+ });
12
+ update = true;
13
+ }
14
+
15
+ if (telemetry.requestCount) {
16
+ publishInstrumentController.UpdateInstrument(Gauge.REQUEST_COUNT_GAUGE, {
17
+ val: telemetry.requestCount
18
+ } as InstrumentGaugeTelemetry);
19
+ update = true;
20
+ }
21
+
22
+ if (telemetry.errorCount) {
23
+ publishInstrumentController.UpdateInstrument(Gauge.ERROR_COUNT_GAUGE, {
24
+ val: telemetry.errorCount
25
+ } as InstrumentGaugeTelemetry);
26
+ update = true;
27
+ }
28
+
29
+ if (telemetry.retryCount) {
30
+ publishInstrumentController.UpdateInstrument(Gauge.RETRY_COUNT_GAUGE, {
31
+ val: telemetry.retryCount
32
+ } as InstrumentGaugeTelemetry);
33
+ update = true;
34
+ }
35
+
36
+ if (telemetry.authenticationCount) {
37
+ publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_COUNT_GAUGE, {
38
+ val: telemetry.authenticationCount
39
+ } as InstrumentGaugeTelemetry);
40
+ update = true;
41
+ }
42
+
43
+ if (telemetry.authenticationErrorCount) {
44
+ publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, {
45
+ val: telemetry.authenticationCount
46
+ } as InstrumentGaugeTelemetry);
47
+ update = true;
48
+ }
49
+
50
+ if (telemetry.authenticationRetryCount) {
51
+ publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, {
52
+ val: telemetry.authenticationCount
53
+ } as InstrumentGaugeTelemetry);
54
+ update = true;
55
+ }
56
+
57
+ if (telemetry.coreCount) {
58
+ publishInstrumentController.UpdateInstrument(Gauge.CORE_COUNT_GAUGE, {
59
+ val: telemetry.coreCount
60
+ } as InstrumentGaugeTelemetry);
61
+ update = true;
62
+ }
63
+
64
+ if (telemetry.timer) {
65
+ publishInstrumentController.UpdateInstrument(Gauge.TIMER_GAUGE, {
66
+ val: telemetry.timer
67
+ } as InstrumentGaugeTelemetry);
68
+ update = true;
69
+ }
70
+
71
+ if (telemetry.activeRequestCount) {
72
+ publishInstrumentController.UpdateInstrument(Gauge.ACTIVE_REQUEST_GAUGE, {
73
+ val: telemetry.activeRequestCount
74
+ } as InstrumentGaugeTelemetry);
75
+ update = true;
76
+ }
77
+
78
+ if (telemetry.velocity) {
79
+ publishInstrumentController.UpdateInstrument(Gauge.VELOCITY_GAUGE, {
80
+ Inc: telemetry.velocity
81
+ } as InstrumentGaugeTelemetry);
82
+ update = true;
83
+ }
84
+
85
+ if (telemetry.duration) {
86
+ publishInstrumentController.UpdateInstrument(Gauge.DURATION_GAUGE, {
87
+ val: telemetry.duration
88
+ } as InstrumentGaugeTelemetry);
89
+ publishInstrumentController.UpdateInstrument(Gauge.DURATION_HISTOGRAM_GAUGE, {
90
+ val: telemetry.duration
91
+ } as InstrumentGaugeTelemetry);
92
+ update = true;
93
+ }
94
+
95
+ if (telemetry.latency) {
96
+ publishInstrumentController.UpdateInstrument(Gauge.LATENCY_GAUGE, {
97
+ val: telemetry.latency
98
+ } as InstrumentGaugeTelemetry);
99
+ publishInstrumentController.UpdateInstrument(Gauge.LATENCY_HISTOGRAM_GAUGE, {
100
+ val: telemetry.latency
101
+ } as InstrumentGaugeTelemetry);
102
+ update = true;
103
+ }
104
+
105
+ if (telemetry.childCount) {
106
+ publishInstrumentController.UpdateInstrument(Gauge.CHILD_COUNT, {
107
+ val: telemetry.childCount
108
+ } as InstrumentGaugeTelemetry);
109
+ update = true;
110
+ }
111
+
112
+ if (telemetry.rx) {
113
+ publishInstrumentController.UpdateInstrument(Gauge.NETWORK_RX_GAUGE, {
114
+ Inc: telemetry.rx
115
+ } as InstrumentGaugeTelemetry);
116
+ update = true;
117
+ }
118
+
119
+ if (telemetry.tx) {
120
+ publishInstrumentController.UpdateInstrument(Gauge.NETWORK_TX_GAUGE, {
121
+ Inc: telemetry.tx
122
+ } as InstrumentGaugeTelemetry);
123
+ update = true;
124
+ }
125
+
126
+ return update;
127
+ }
128
+ }
@@ -1,10 +1,9 @@
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 } from './commonTypes'
5
-
6
- import type { ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload } from './stsTestWorkerDefinitions'
7
- import { IRunnerState } from './stsTestWorkerDefinitions'
4
+ import { IIWMessagePayload, eIWMessageCommands, IIWMessagePayloadContentBase, IRunnerState,
5
+ ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload
6
+ } from './commonTypes'
8
7
 
9
8
  import { RequestResponseHelper } from './requestResponseHelper'
10
9
 
@@ -101,11 +100,19 @@ export abstract class WorkerInstance {
101
100
  this.StartWork(runner);
102
101
  }
103
102
 
104
- #AddAsyncRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
103
+ #AddAsyncRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload): IRunner => {
105
104
  this.#debug(`AddAsyncRunner`)
106
105
  const { runner } = testRunnerTelemetryPayload;
107
106
  this.#runners[runner.id] = runner;
107
+ return runner;
108
+ //this.StartRunner(runner);
109
+ }
110
+
111
+ #StartRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload): IRunner => {
112
+ this.#debug(`StartRunner`)
113
+ const { runner } = testRunnerTelemetryPayload;
108
114
  this.StartRunner(runner);
115
+ return runner;
109
116
  }
110
117
 
111
118
  #StopRunners = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
@@ -143,6 +150,10 @@ export abstract class WorkerInstance {
143
150
  this.#debug(`ProcessMessage::StopAllAsyncRunners`)
144
151
  this.#StopRunners(payloadMessage.payload as ITestRunnerTelemetryPayload);
145
152
  break;
153
+ case eIWMessageCommands.StartRunner :
154
+ this.#debug(`ProcessMessage::StartRunner`)
155
+ this.#StartRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
156
+ break;
146
157
  default :
147
158
  this.#debug(`ProcessMessage::default`)
148
159
  this.#debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);
@@ -1,22 +1,20 @@
1
1
  /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
2
2
  //import MyWorker from './sts-worker?worker' // https://vitejs.dev/guide/features.html#web-workers
3
- import { type IAsyncRunnerContext, IIWMessagePayload, IIWMessagePayloadContentBase,
4
- type IIWMessageCommand, eIWMessageCommands } from './commonTypes'
5
-
6
- import { Gauge, InstrumentGaugeTelemetry } from '@nsshunt/stsobservability'
3
+ import { IAsyncRunnerContext, IIWMessagePayload, IIWMessagePayloadContentBase,
4
+ IIWMessageCommand, eIWMessageCommands, IWorkerState, IRunnerState,
5
+ ISTSAgentWorkerMessagePort, IWorkerEx, IRunner, IRunnerEx,
6
+ ITestRunnerTelemetryPayload, IRunnerOptions, IRunnerTelemetry,
7
+ IWorkerManagerOptions, IWorkerFactory
8
+ } from './commonTypes'
7
9
 
8
10
  import { ModelDelimeter } from '@nsshunt/stsutils'
9
11
 
10
- import type { ISTSAgentWorkerMessagePort, IWorkerEx, IRunner, IRunnerEx,
11
- ITestRunnerTelemetryPayload, IRunnerOptions, IRunnerTelemetry,
12
- IWorkerManagerOptions, IWorkerFactory } from './stsTestWorkerDefinitions'
13
-
14
- import { IWorkerState, IRunnerState } from './stsTestWorkerDefinitions'
15
12
  import { Sleep } from '@nsshunt/stsutils';
16
13
 
17
14
  import { AgentInstrumentController, PublishInstrumentController } from '@nsshunt/stsobservability'
18
15
 
19
16
  import chalk from 'chalk';
17
+ import { TelemetryProcessor } from './telemetryProcessor'
20
18
  chalk.level = 3;
21
19
 
22
20
  export class STSWorkerManager {
@@ -26,9 +24,8 @@ export class STSWorkerManager {
26
24
  #workerId = 0;
27
25
  #options: IWorkerManagerOptions;
28
26
  #STSInstrumentController: PublishInstrumentController
29
-
27
+ #telemetryProcessor: TelemetryProcessor
30
28
  #app: any
31
-
32
29
 
33
30
  constructor(app: any, options?: IWorkerManagerOptions) {
34
31
  this.#app = app;
@@ -39,6 +36,7 @@ export class STSWorkerManager {
39
36
  }
40
37
 
41
38
  this.#STSInstrumentController = this.#options.publishInstrumentController;
39
+ this.#telemetryProcessor = new TelemetryProcessor();
42
40
  }
43
41
 
44
42
  #debug = (message: string) => {
@@ -58,8 +56,10 @@ export class STSWorkerManager {
58
56
  // Use the default workFactory
59
57
  workerFactory = this.#options.workerFactory
60
58
  }
59
+
60
+ const workerId = this.#workerId++;
61
61
  const stsWorkerEx: IWorkerEx = {
62
- id: this.#workerId++, // uuidv4()
62
+ id: workerId,
63
63
  worker: workerFactory.createWorkerThreadWorker(),
64
64
  primaryWorker: workerFactory.createPrimaryThreadWorker(this.#app, workerFactory.primaryThreadWorkerOptions),
65
65
  state: IWorkerState.starting,
@@ -67,8 +67,10 @@ export class STSWorkerManager {
67
67
  primaryThreadWorkerOptions: workerFactory.primaryThreadWorkerOptions,
68
68
  runnersEx: { } as Record<string, IRunnerEx>,
69
69
  AddRunner: (runnerOptions: IRunnerOptions): IRunnerEx => this.AddRunnerToWorker(stsWorkerEx, runnerOptions),
70
+ StartRunner: (runner: IRunnerEx): Promise<boolean> => this.#StartRunner(stsWorkerEx, runner),
70
71
  StopRunner: (runner: IRunnerEx): Promise<boolean> => this.#StopRunner(stsWorkerEx, runner),
71
- Stop: async (): Promise<boolean> => this.#StopWorker(stsWorkerEx)
72
+ Stop: async (): Promise<boolean> => this.#StopWorker(stsWorkerEx),
73
+ GetRunner: (id: string): IRunnerEx | null => this.#workersEx[workerId].GetRunner(id)
72
74
  }
73
75
  this.#STSInstrumentController.LogEx(chalk.yellow(`pid: [${process.pid}] Creating new worker: [${stsWorkerEx.id}]`));
74
76
  this.#debug(`Adding worker: [${stsWorkerEx.id}]`);
@@ -159,7 +161,6 @@ export class STSWorkerManager {
159
161
 
160
162
  if (workerEx.runnersEx[runner.id]) {
161
163
  const runnerEx: IRunnerEx = workerEx.runnersEx[runner.id];
162
- let update = false;
163
164
 
164
165
  // Copy telemetry
165
166
  runnerEx.instrumentData = { ...runner.instrumentData };
@@ -172,123 +173,7 @@ export class STSWorkerManager {
172
173
  runnerEx.instrumentData.message = [ ];
173
174
  }
174
175
 
175
- if (runner.instrumentData.message) {
176
- runner.instrumentData.message.forEach((message) => {
177
- runnerEx.publishInstrumentController.LogEx(message);
178
- });
179
- update = true;
180
- }
181
-
182
- if (runner.instrumentData.requestCount) {
183
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.REQUEST_COUNT_GAUGE, {
184
- val: runnerEx.instrumentData.requestCount
185
- } as InstrumentGaugeTelemetry);
186
- update = true;
187
- }
188
-
189
- if (runner.instrumentData.errorCount) {
190
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ERROR_COUNT_GAUGE, {
191
- val: runnerEx.instrumentData.errorCount
192
- } as InstrumentGaugeTelemetry);
193
- update = true;
194
- }
195
-
196
- if (runner.instrumentData.retryCount) {
197
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.RETRY_COUNT_GAUGE, {
198
- val: runnerEx.instrumentData.retryCount
199
- } as InstrumentGaugeTelemetry);
200
- update = true;
201
- }
202
-
203
- if (runner.instrumentData.authenticationCount) {
204
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_COUNT_GAUGE, {
205
- val: runnerEx.instrumentData.authenticationCount
206
- } as InstrumentGaugeTelemetry);
207
- update = true;
208
- }
209
-
210
- if (runner.instrumentData.authenticationErrorCount) {
211
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, {
212
- val: runnerEx.instrumentData.authenticationCount
213
- } as InstrumentGaugeTelemetry);
214
- update = true;
215
- }
216
-
217
- if (runner.instrumentData.authenticationRetryCount) {
218
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, {
219
- val: runnerEx.instrumentData.authenticationCount
220
- } as InstrumentGaugeTelemetry);
221
- update = true;
222
- }
223
-
224
- if (runner.instrumentData.coreCount) {
225
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CORE_COUNT_GAUGE, {
226
- val: runnerEx.instrumentData.coreCount
227
- } as InstrumentGaugeTelemetry);
228
- update = true;
229
- }
230
-
231
- if (runner.instrumentData.timer) {
232
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.TIMER_GAUGE, {
233
- val: runnerEx.instrumentData.timer
234
- } as InstrumentGaugeTelemetry);
235
- update = true;
236
- }
237
-
238
- if (runner.instrumentData.activeRequestCount) {
239
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ACTIVE_REQUEST_GAUGE, {
240
- val: runnerEx.instrumentData.activeRequestCount
241
- } as InstrumentGaugeTelemetry);
242
- update = true;
243
- }
244
-
245
- if (runner.instrumentData.velocity) {
246
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.VELOCITY_GAUGE, {
247
- Inc: runnerEx.instrumentData.velocity
248
- } as InstrumentGaugeTelemetry);
249
- update = true;
250
- }
251
-
252
- if (runner.instrumentData.duration) {
253
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_GAUGE, {
254
- val: runnerEx.instrumentData.duration
255
- } as InstrumentGaugeTelemetry);
256
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_HISTOGRAM_GAUGE, {
257
- val: runnerEx.instrumentData.duration
258
- } as InstrumentGaugeTelemetry);
259
- update = true;
260
- }
261
-
262
- if (runner.instrumentData.latency) {
263
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_GAUGE, {
264
- val: runnerEx.instrumentData.latency
265
- } as InstrumentGaugeTelemetry);
266
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_HISTOGRAM_GAUGE, {
267
- val: runnerEx.instrumentData.latency
268
- } as InstrumentGaugeTelemetry);
269
- update = true;
270
- }
271
-
272
- if (runner.instrumentData.childCount) {
273
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CHILD_COUNT, {
274
- val: runnerEx.instrumentData.childCount
275
- } as InstrumentGaugeTelemetry);
276
- update = true;
277
- }
278
-
279
- if (runner.instrumentData.rx) {
280
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_RX_GAUGE, {
281
- Inc: runnerEx.instrumentData.rx
282
- } as InstrumentGaugeTelemetry);
283
- update = true;
284
- }
285
-
286
- if (runner.instrumentData.tx) {
287
- runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_TX_GAUGE, {
288
- Inc: runnerEx.instrumentData.tx
289
- } as InstrumentGaugeTelemetry);
290
- update = true;
291
- }
176
+ const update = this.#telemetryProcessor.ProcessTelemetry(runnerEx.publishInstrumentController, runnerEx.instrumentData);
292
177
 
293
178
  if (update) {
294
179
  //store.Update(workerEx, runnerEx);
@@ -337,7 +222,15 @@ ${this.#runner}`,
337
222
  rx: 0,
338
223
  tx: 0
339
224
  } as IRunnerTelemetry,
340
- Stop: async (): Promise<boolean> => this.#StopRunner(workerEx, runnerEx)
225
+ Stop: async (): Promise<boolean> => this.#StopRunner(workerEx, runnerEx),
226
+ Start: async (): Promise<boolean> => this.#StartRunner(workerEx, runnerEx),
227
+ Pause: async (): Promise<boolean> => this.#PauseRunner(workerEx, runnerEx),
228
+ Resume: async (): Promise<boolean> => this.#ResumeRunner(workerEx, runnerEx),
229
+ ApplyConfig: async (config: IRunnerOptions): Promise<boolean> => {
230
+ runnerEx.options = config;
231
+ return true;
232
+ },
233
+ GetConfig: (): IRunnerOptions => runnerEx.options
341
234
  }
342
235
  return runnerEx;
343
236
  }
@@ -367,6 +260,13 @@ ${this.#runner}`,
367
260
  }
368
261
  }
369
262
 
263
+ #StartRunner = async (workerEx: IWorkerEx, runnerEx: IRunnerEx): Promise<boolean> => {
264
+ this.#PostMessageToWorker(workerEx, eIWMessageCommands.StartRunner, {
265
+ runner: this.#CreateRunnerCopy(runnerEx)
266
+ } as ITestRunnerTelemetryPayload);
267
+ return true;
268
+ }
269
+
370
270
  #StopRunner = async (workerEx: IWorkerEx, runnerEx: IRunnerEx | null = null): Promise<boolean> => {
371
271
  // If runnerEx not provided, Remove the first runner in the collection
372
272
  if (runnerEx === null) {
@@ -401,6 +301,14 @@ ${this.#runner}`,
401
301
  return true;
402
302
  }
403
303
 
304
+ #PauseRunner = async (workerEx: IWorkerEx, runnerEx: IRunnerEx | null = null): Promise<boolean> => {
305
+ return true;
306
+ }
307
+
308
+ #ResumeRunner = async (workerEx: IWorkerEx, runnerEx: IRunnerEx | null = null): Promise<boolean> => {
309
+ return true;
310
+ }
311
+
404
312
  #StopWorker = async (workerEx: IWorkerEx): Promise<boolean> => {
405
313
  try {
406
314
  if (workerEx.state !== IWorkerState.stopped) {