@nsshunt/stsappframework 3.1.164 → 3.1.167
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/testertesting/app.js +18 -13
- package/dist/testertesting/app.js.map +1 -1
- package/dist/testertesting/commonTypes.js +2 -0
- package/dist/testertesting/commonTypes.js.map +1 -1
- package/dist/testertesting/testCase01.js +40 -1
- package/dist/testertesting/testCase01.js.map +1 -1
- package/dist/testertesting/workerInstance.js +66 -17
- package/dist/testertesting/workerInstance.js.map +1 -1
- package/dist/testertesting/workerManager.js +14 -9
- package/dist/testertesting/workerManager.js.map +1 -1
- package/package.json +1 -1
- package/src/testertesting/app.ts +23 -17
- package/src/testertesting/commonTypes.ts +21 -18
- package/src/testertesting/testCase01.ts +49 -1
- package/src/testertesting/workerInstance.ts +68 -19
- package/src/testertesting/workerManager.ts +17 -10
- package/types/testertesting/commonTypes.d.ts +15 -8
- package/types/testertesting/commonTypes.d.ts.map +1 -1
- package/types/testertesting/testCase01.d.ts +8 -0
- package/types/testertesting/testCase01.d.ts.map +1 -1
- package/types/testertesting/workerInstance.d.ts.map +1 -1
- package/types/testertesting/workerManager.d.ts +1 -1
- package/types/testertesting/workerManager.d.ts.map +1 -1
- package/dist/testertesting/workerPrimaryTestRunner01.js +0 -62
- package/dist/testertesting/workerPrimaryTestRunner01.js.map +0 -1
- package/src/testertesting/workerPrimaryTestRunner01.ts +0 -81
- package/types/testertesting/workerPrimaryTestRunner01.d.ts +0 -8
- package/types/testertesting/workerPrimaryTestRunner01.d.ts.map +0 -1
|
@@ -36,7 +36,9 @@ export enum eIWMessageCommands {
|
|
|
36
36
|
ResumeRunner = '__STS__ResumeRunner',
|
|
37
37
|
ResetRunner = '__STS__ResetRunner',
|
|
38
38
|
ExecuteRunner = '__STS__ExecuteRunner',
|
|
39
|
-
Completed = '__STS__Completed'
|
|
39
|
+
Completed = '__STS__Completed',
|
|
40
|
+
UpdateOptions = '__STS__UpdateOptions',
|
|
41
|
+
TerminateRunner = '__STS__TerminateRunner'
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
/**
|
|
@@ -103,18 +105,27 @@ export interface IRunner {
|
|
|
103
105
|
|
|
104
106
|
export interface IRunnerEx extends IRunner {
|
|
105
107
|
publishInstrumentController: PublishInstrumentController
|
|
106
|
-
Start: () => Promise<boolean>
|
|
107
|
-
Pause: () => Promise<boolean>
|
|
108
|
-
Resume: () => Promise<boolean>
|
|
109
|
-
Stop: () => Promise<boolean>
|
|
110
|
-
Terminate: () => Promise<boolean>
|
|
111
|
-
Reset: () => Promise<boolean>
|
|
112
|
-
Execute: (iteration: number) => Promise<boolean> // Execute a single iteration for this test
|
|
113
|
-
|
|
108
|
+
Start: () => Promise<boolean> // Start runner iterations
|
|
109
|
+
Pause: () => Promise<boolean> // Pause iteration processing and keep the current iteration number.
|
|
110
|
+
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
|
+
Terminate: () => Promise<boolean> // Stop the runner iterations and terminate the instance, stop any instrument publishers.
|
|
113
|
+
Reset: () => Promise<boolean> // Stop the current iterations and reset the iteration count back to 0.
|
|
114
|
+
Execute: (iteration: number) => Promise<boolean> // Execute a single iteration for this test.
|
|
115
|
+
UpdateOptions: (options: IRunnerOptions) => Promise<boolean>
|
|
116
|
+
on: (eventName: string, cb: () => void) => IRunnerEx // Register event handler.
|
|
114
117
|
}
|
|
115
118
|
|
|
116
119
|
export interface IRunnerInstance {
|
|
117
120
|
Execute: (iteration: number) => Promise<boolean> // Execute a single iteration for this test
|
|
121
|
+
StartRunner: () => Promise<boolean>
|
|
122
|
+
StopRunner: () => Promise<boolean>
|
|
123
|
+
TerminateRunner: () => Promise<boolean>
|
|
124
|
+
Completed: () => Promise<boolean>
|
|
125
|
+
PauseRunner: () => Promise<boolean>
|
|
126
|
+
ResumeRunner: () => Promise<boolean>
|
|
127
|
+
ResetRunner: () => Promise<boolean>
|
|
128
|
+
UpdateOptions: () => Promise<boolean>
|
|
118
129
|
}
|
|
119
130
|
|
|
120
131
|
export enum IWorkerState {
|
|
@@ -125,6 +136,7 @@ export enum IWorkerState {
|
|
|
125
136
|
|
|
126
137
|
|
|
127
138
|
export interface IWorkerOptions {
|
|
139
|
+
id: string
|
|
128
140
|
hostName: string
|
|
129
141
|
agentId: string
|
|
130
142
|
userAgent: string
|
|
@@ -135,17 +147,12 @@ export type Runners = Record<string, IRunner>
|
|
|
135
147
|
export interface IWorker {
|
|
136
148
|
id: number
|
|
137
149
|
state: IWorkerState
|
|
138
|
-
primaryThreadWorkerOptions: IWorkerOptions
|
|
139
150
|
workerThreadWorkerOptions: IWorkerOptions
|
|
140
151
|
runners?: Runners // Will be created by utility helper
|
|
141
152
|
}
|
|
142
153
|
|
|
143
154
|
export type Workers = Record<string, IWorker>
|
|
144
155
|
|
|
145
|
-
export interface IPrimaryWorker {
|
|
146
|
-
ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>
|
|
147
|
-
}
|
|
148
|
-
|
|
149
156
|
export interface IExecutionProfile {
|
|
150
157
|
iterations: number
|
|
151
158
|
delayBetweenIterations: number
|
|
@@ -163,7 +170,6 @@ export interface IRunnerEvent {
|
|
|
163
170
|
|
|
164
171
|
export interface IWorkerEx extends IWorker {
|
|
165
172
|
worker: Worker
|
|
166
|
-
primaryWorker: IPrimaryWorker
|
|
167
173
|
runnersEx: Record<string, IRunnerEx>
|
|
168
174
|
runnersEvents: Record<string, IRunnerEvent[]>
|
|
169
175
|
GetRunner(id: string): IRunnerEx | null
|
|
@@ -189,11 +195,8 @@ export interface ITestRunnerTelemetryPayload extends IIWMessagePayloadContentBas
|
|
|
189
195
|
}
|
|
190
196
|
|
|
191
197
|
export interface IWorkerFactory {
|
|
192
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
193
|
-
createPrimaryThreadWorker: (app: any, options: IWorkerOptions) => IPrimaryWorker
|
|
194
198
|
createWorkerThreadWorker: () => Worker // | wt.Worker
|
|
195
199
|
get workerThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup
|
|
196
|
-
get primaryThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup
|
|
197
200
|
}
|
|
198
201
|
|
|
199
202
|
export interface IWorkerManagerOptions {
|
|
@@ -38,7 +38,7 @@ export class TestCase01 implements IRunnerInstance {
|
|
|
38
38
|
}
|
|
39
39
|
const logMessageData = this.#logMessageDataSet[runner.id];
|
|
40
40
|
|
|
41
|
-
let message = `${' '.repeat(logMessageData.indent)}>> Hello World << ${iteration}`;
|
|
41
|
+
let message = `${' '.repeat(logMessageData.indent)} [${runner.id}] >> Hello World << ${iteration}`;
|
|
42
42
|
const colorCode = runner.asyncRunnerContext.asyncRunnerId % 4;
|
|
43
43
|
switch (colorCode) {
|
|
44
44
|
case 0:
|
|
@@ -104,4 +104,52 @@ export class TestCase01 implements IRunnerInstance {
|
|
|
104
104
|
|
|
105
105
|
return true;
|
|
106
106
|
}
|
|
107
|
+
|
|
108
|
+
#OutputLogMessage(message: string) {
|
|
109
|
+
const messageOutput = chalk.grey(message);
|
|
110
|
+
console.log(messageOutput);
|
|
111
|
+
this.#runner.instrumentData.message.push(messageOutput);
|
|
112
|
+
this.#workerInstance.PostTelemetry(this.#runner);
|
|
113
|
+
this.#runner.instrumentData.message = [ ];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
StartRunner = async (): Promise<boolean> => {
|
|
117
|
+
this.#OutputLogMessage(`StartRunner [${this.#runner.id}]`);
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
StopRunner = async (): Promise<boolean> => {
|
|
122
|
+
this.#OutputLogMessage(`StopRunner [${this.#runner.id}]`);
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
TerminateRunner = async (): Promise<boolean> => {
|
|
127
|
+
this.#OutputLogMessage(`TerminateRunner [${this.#runner.id}]`);
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
Completed = async (): Promise<boolean> => {
|
|
132
|
+
this.#OutputLogMessage(`Completed [${this.#runner.id}]`);
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
PauseRunner = async (): Promise<boolean> => {
|
|
137
|
+
this.#OutputLogMessage(`PauseRunner [${this.#runner.id}]`);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
ResumeRunner = async (): Promise<boolean> => {
|
|
142
|
+
this.#OutputLogMessage(`ResumeRunner [${this.#runner.id}]`);
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
ResetRunner = async (): Promise<boolean> => {
|
|
147
|
+
this.#OutputLogMessage(`ResetRunner [${this.#runner.id}]`);
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
UpdateOptions = async (): Promise<boolean> => {
|
|
152
|
+
this.#OutputLogMessage(`UpdateOptions [${this.#runner.id}]`);
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
107
155
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { MessagePort } from 'worker_threads';
|
|
3
3
|
|
|
4
4
|
import { IIWMessagePayload, eIWMessageCommands, IIWMessagePayloadContentBase, IRunnerInstance,
|
|
5
|
-
ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload,
|
|
5
|
+
ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload, IWorkerOptions
|
|
6
6
|
} from './commonTypes'
|
|
7
7
|
|
|
8
8
|
import { RequestResponseHelper } from './requestResponseHelper'
|
|
@@ -30,10 +30,14 @@ export abstract class WorkerInstance {
|
|
|
30
30
|
#collectorCollectorPort: MessagePort | null = null;
|
|
31
31
|
#requestResponseHelper: RequestResponseHelper | null = null;
|
|
32
32
|
#runners: Record<string, IRunnerEx2RunState> = { };
|
|
33
|
-
#options:
|
|
33
|
+
#options: IWorkerOptions | null = null;
|
|
34
34
|
|
|
35
35
|
#debug = (message: string) => {
|
|
36
|
-
|
|
36
|
+
if (this.#options) {
|
|
37
|
+
console.log(chalk.green(`pid: [${process.pid}] ${(this.#options as IWorkerOptions).id} WorkerInstance::${message}`));
|
|
38
|
+
} else {
|
|
39
|
+
console.log(chalk.green(`pid: [${process.pid}] WorkerInstance::${message}`));
|
|
40
|
+
}
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
constructor() {
|
|
@@ -126,21 +130,28 @@ export abstract class WorkerInstance {
|
|
|
126
130
|
|
|
127
131
|
//@@ re4set iteration count - need a reset
|
|
128
132
|
|
|
129
|
-
#StartRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
130
|
-
this.#debug(`StartRunner`)
|
|
133
|
+
#StartRunner = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
131
134
|
const { runner } = testRunnerTelemetryPayload;
|
|
135
|
+
this.#debug(`${chalk.magenta(`runner: [${runner.id}]`)} StartRunner`)
|
|
132
136
|
this.#runners[runner.id].terminate = false;
|
|
133
137
|
this.#runners[runner.id].paused = false;
|
|
134
138
|
|
|
139
|
+
await this.#runners[runner.id].runnerInstance.StartRunner();
|
|
135
140
|
const ExecuteLoop = async () => {
|
|
141
|
+
//console.log(`ExecuteLoop: [${runner.id}]`);
|
|
136
142
|
if (this.#runners[runner.id].iteration < this.#runners[runner.id].runner.options.executionProfile.iterations) {
|
|
137
|
-
|
|
138
|
-
|
|
143
|
+
if (!this.#runners[runner.id].paused) {
|
|
144
|
+
await this.#runners[runner.id].runnerInstance.Execute(this.#runners[runner.id].iteration);
|
|
145
|
+
this.#runners[runner.id].iteration++;
|
|
146
|
+
}
|
|
139
147
|
await Sleep(0); // Yield to the event loop to make sure we can process worker messages if any in the event loop queue
|
|
140
148
|
if (!this.#runners[runner.id].terminate) {
|
|
141
149
|
if (!this.#runners[runner.id].paused) {
|
|
142
150
|
await Sleep(this.#runners[runner.id].runner.options.executionProfile.delayBetweenIterations);
|
|
143
151
|
ExecuteLoop();
|
|
152
|
+
} else {
|
|
153
|
+
await Sleep(50);
|
|
154
|
+
ExecuteLoop();
|
|
144
155
|
}
|
|
145
156
|
}
|
|
146
157
|
} else {
|
|
@@ -153,54 +164,84 @@ export abstract class WorkerInstance {
|
|
|
153
164
|
}
|
|
154
165
|
this.#collectorCollectorPort.postMessage(message);
|
|
155
166
|
}
|
|
167
|
+
await this.#runners[runner.id].runnerInstance.Completed();
|
|
156
168
|
}
|
|
157
169
|
}
|
|
158
170
|
ExecuteLoop();
|
|
159
171
|
}
|
|
160
172
|
|
|
161
|
-
#StopRunners = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
173
|
+
#StopRunners = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
162
174
|
this.#debug(`StopRunners`);
|
|
163
175
|
for (const [, runner] of Object.entries(this.#runners)) {
|
|
176
|
+
this.#debug(`${chalk.magenta(`runner: [${runner.runner.id}]`)} StopRunners`)
|
|
164
177
|
runner.terminate = true;
|
|
178
|
+
await runner.runnerInstance.StopRunner();
|
|
165
179
|
}
|
|
180
|
+
await Sleep(0);
|
|
166
181
|
}
|
|
167
182
|
|
|
168
|
-
#StopRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
169
|
-
this.#debug(`StopRunner`)
|
|
183
|
+
#StopRunner = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
170
184
|
const { runner } = testRunnerTelemetryPayload;
|
|
185
|
+
this.#debug(`${chalk.magenta(`runner: [${runner.id}]`)} StopRunner`)
|
|
171
186
|
this.#runners[runner.id].terminate = true;
|
|
187
|
+
await this.#runners[runner.id].runnerInstance.StopRunner();
|
|
188
|
+
await Sleep(0);
|
|
172
189
|
}
|
|
173
190
|
|
|
174
|
-
#
|
|
175
|
-
this.#debug(`PauseRunner`)
|
|
191
|
+
#TerminateRunner = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
176
192
|
const { runner } = testRunnerTelemetryPayload;
|
|
193
|
+
this.#debug(`${chalk.magenta(`runner: [${runner.id}]`)} TerminateRunner`)
|
|
194
|
+
this.#runners[runner.id].terminate = true;
|
|
195
|
+
await this.#runners[runner.id].runnerInstance.TerminateRunner();
|
|
196
|
+
await Sleep(0);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
#PauseRunner = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
200
|
+
const { runner } = testRunnerTelemetryPayload;
|
|
201
|
+
this.#debug(`${chalk.magenta(`runner: [${runner.id}]`)} PauseRunner`)
|
|
177
202
|
this.#runners[runner.id].paused = true;
|
|
203
|
+
await this.#runners[runner.id].runnerInstance.PauseRunner();
|
|
204
|
+
await Sleep(0);
|
|
178
205
|
}
|
|
179
206
|
|
|
180
|
-
#ResumeRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
181
|
-
this.#debug(`ResumeRunner`);
|
|
207
|
+
#ResumeRunner = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
182
208
|
const { runner } = testRunnerTelemetryPayload;
|
|
209
|
+
this.#debug(`${chalk.magenta(`runner: [${runner.id}]`)} ResumeRunner`)
|
|
183
210
|
this.#runners[runner.id].paused = false;
|
|
184
|
-
this.#
|
|
211
|
+
await this.#runners[runner.id].runnerInstance.ResumeRunner();
|
|
212
|
+
await Sleep(0);
|
|
185
213
|
//@@ todo
|
|
186
214
|
}
|
|
187
215
|
|
|
188
|
-
#ResetRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
189
|
-
this.#debug(`ResetRunner`)
|
|
216
|
+
#ResetRunner = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
190
217
|
const { runner } = testRunnerTelemetryPayload;
|
|
218
|
+
this.#debug(`${chalk.magenta(`runner: [${runner.id}]`)} ResetRunner`)
|
|
191
219
|
this.#runners[runner.id].terminate = true;
|
|
192
220
|
this.#runners[runner.id].iteration = 0;
|
|
221
|
+
await this.#runners[runner.id].runnerInstance.ResetRunner();
|
|
222
|
+
await Sleep(0);
|
|
193
223
|
}
|
|
194
224
|
|
|
195
225
|
// Execute a single iteration of this runners work item
|
|
196
|
-
#ExecuteRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
197
|
-
this.#debug(`ExecuteRunner`)
|
|
226
|
+
#ExecuteRunner = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
198
227
|
const { runner } = testRunnerTelemetryPayload;
|
|
228
|
+
this.#debug(`${chalk.magenta(`runner: [${runner.id}]`)} ExecuteRunner`)
|
|
199
229
|
this.#runners[runner.id].runnerInstance.Execute(this.#runners[runner.id].iteration);
|
|
200
230
|
this.#runners[runner.id].iteration++;
|
|
231
|
+
await Sleep(0);
|
|
201
232
|
//@@ todo
|
|
202
233
|
}
|
|
203
234
|
|
|
235
|
+
#UpdateOptions = async (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {
|
|
236
|
+
const { runner } = testRunnerTelemetryPayload;
|
|
237
|
+
this.#debug(`${chalk.magenta(`runner: [${runner.id}]`)} UpdateOptions`)
|
|
238
|
+
console.log(chalk.cyan(`before: [${JSON.stringify(this.#runners[runner.id].runner.options)}]`))
|
|
239
|
+
this.#runners[runner.id].runner.options = { ...runner.options };
|
|
240
|
+
console.log(chalk.cyan(`after: [${JSON.stringify(this.#runners[runner.id].runner.options)}]`))
|
|
241
|
+
await this.#runners[runner.id].runnerInstance.UpdateOptions();
|
|
242
|
+
await Sleep(0);
|
|
243
|
+
}
|
|
244
|
+
|
|
204
245
|
// ProcessMessage = async(data: MessageEvent) => { // Browser version
|
|
205
246
|
ProcessMessage = async(data: any) => {
|
|
206
247
|
this.#debug(`ProcessMessage: data: [${JSON.stringify(data)}]`)
|
|
@@ -230,6 +271,10 @@ export abstract class WorkerInstance {
|
|
|
230
271
|
this.#debug(`ProcessMessage::StopRunner`)
|
|
231
272
|
this.#StopRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
|
|
232
273
|
break;
|
|
274
|
+
case eIWMessageCommands.TerminateRunner :
|
|
275
|
+
this.#debug(`ProcessMessage::TerminateRunner`)
|
|
276
|
+
this.#TerminateRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
|
|
277
|
+
break;
|
|
233
278
|
case eIWMessageCommands.PauseRunner :
|
|
234
279
|
this.#debug(`ProcessMessage::PauseRunner`)
|
|
235
280
|
this.#PauseRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
|
|
@@ -247,6 +292,10 @@ export abstract class WorkerInstance {
|
|
|
247
292
|
this.#ExecuteRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);
|
|
248
293
|
//@@ should return a response ??
|
|
249
294
|
break;
|
|
295
|
+
case eIWMessageCommands.UpdateOptions :
|
|
296
|
+
this.#debug(`ProcessMessage::UpdateOptions`)
|
|
297
|
+
this.#UpdateOptions(payloadMessage.payload as ITestRunnerTelemetryPayload);
|
|
298
|
+
break;
|
|
250
299
|
default :
|
|
251
300
|
this.#debug(`ProcessMessage::default`)
|
|
252
301
|
this.#debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);
|
|
@@ -4,7 +4,8 @@ import { IAsyncRunnerContext, IIWMessagePayload, IIWMessagePayloadContentBase,
|
|
|
4
4
|
IIWMessageCommand, eIWMessageCommands, IWorkerState, IRunnerState,
|
|
5
5
|
ISTSAgentWorkerMessagePort, IWorkerEx, IRunner, IRunnerEx,
|
|
6
6
|
ITestRunnerTelemetryPayload, IRunnerOptions, IRunnerTelemetry,
|
|
7
|
-
IWorkerManagerOptions, IWorkerFactory, IRunnerEvent
|
|
7
|
+
IWorkerManagerOptions, IWorkerFactory, IRunnerEvent,
|
|
8
|
+
IWorkerOptions
|
|
8
9
|
} from './commonTypes'
|
|
9
10
|
|
|
10
11
|
import { ModelDelimeter } from '@nsshunt/stsutils'
|
|
@@ -25,10 +26,8 @@ export class STSWorkerManager {
|
|
|
25
26
|
#options: IWorkerManagerOptions;
|
|
26
27
|
#STSInstrumentController: PublishInstrumentController
|
|
27
28
|
#telemetryProcessor: TelemetryProcessor
|
|
28
|
-
#app: any
|
|
29
29
|
|
|
30
|
-
constructor(
|
|
31
|
-
this.#app = app;
|
|
30
|
+
constructor(options?: IWorkerManagerOptions) {
|
|
32
31
|
if (options) {
|
|
33
32
|
this.#options = options;
|
|
34
33
|
} else {
|
|
@@ -69,10 +68,8 @@ export class STSWorkerManager {
|
|
|
69
68
|
const stsWorkerEx: IWorkerEx = {
|
|
70
69
|
id: workerId,
|
|
71
70
|
worker: workerFactory.createWorkerThreadWorker(),
|
|
72
|
-
primaryWorker: workerFactory.createPrimaryThreadWorker(this.#app, workerFactory.primaryThreadWorkerOptions),
|
|
73
71
|
state: IWorkerState.starting,
|
|
74
72
|
workerThreadWorkerOptions: workerFactory.workerThreadWorkerOptions,
|
|
75
|
-
primaryThreadWorkerOptions: workerFactory.primaryThreadWorkerOptions,
|
|
76
73
|
runnersEx: { } as Record<string, IRunnerEx>,
|
|
77
74
|
runnersEvents: { } as Record<string, IRunnerEvent[]>,
|
|
78
75
|
AddRunner: (runnerOptions: IRunnerOptions): IRunnerEx => this.AddRunnerToWorker(stsWorkerEx, runnerOptions),
|
|
@@ -103,12 +100,14 @@ export class STSWorkerManager {
|
|
|
103
100
|
|
|
104
101
|
const workerPort = port1;
|
|
105
102
|
|
|
106
|
-
this.#debug(`AddWorker::workerThreadWorkerOptions: [${
|
|
103
|
+
this.#debug(`AddWorker::workerThreadWorkerOptions: [${stsWorkerEx.workerThreadWorkerOptions.id}]`);
|
|
107
104
|
|
|
108
105
|
this.#PostMessageToWorker(stsWorkerEx, eIWMessageCommands.MessagePort, {
|
|
109
106
|
port: port2,
|
|
110
107
|
//applicationStoreState: stateCopy,
|
|
111
|
-
options: {
|
|
108
|
+
options: {
|
|
109
|
+
...stsWorkerEx.workerThreadWorkerOptions
|
|
110
|
+
} as IWorkerOptions
|
|
112
111
|
} as ISTSAgentWorkerMessagePort, port2);
|
|
113
112
|
|
|
114
113
|
// Process messages received back from the worker
|
|
@@ -131,7 +130,6 @@ export class STSWorkerManager {
|
|
|
131
130
|
break;
|
|
132
131
|
default :
|
|
133
132
|
this.#debug(`AddWorker::default`);
|
|
134
|
-
stsWorkerEx.primaryWorker.ProcessMessageFromWorker(workerPort, publishMessagePayload);
|
|
135
133
|
}
|
|
136
134
|
});
|
|
137
135
|
|
|
@@ -254,6 +252,7 @@ ${this.#runner}`,
|
|
|
254
252
|
Reset: async (): Promise<boolean> => this.#ResetRunner(workerEx, runnerEx),
|
|
255
253
|
Execute: async (): Promise<boolean> => this.#ExecuteRunner(workerEx, runnerEx),
|
|
256
254
|
Terminate: async (): Promise<boolean> => this.#TerminateRunner(workerEx, runnerEx),
|
|
255
|
+
UpdateOptions: async (options: IRunnerOptions): Promise<boolean> => this.#UpdateOptions(workerEx, runnerEx, options),
|
|
257
256
|
on: (eventName: string, cb: () => void): IRunnerEx => {
|
|
258
257
|
if (!workerEx.runnersEvents[runnerEx.id]) {
|
|
259
258
|
workerEx.runnersEvents[runnerEx.id] = [ ];
|
|
@@ -331,7 +330,7 @@ ${this.#runner}`,
|
|
|
331
330
|
}
|
|
332
331
|
}
|
|
333
332
|
if (runnerEx !== null) {
|
|
334
|
-
this.#PostMessageToWorker(workerEx, eIWMessageCommands.
|
|
333
|
+
this.#PostMessageToWorker(workerEx, eIWMessageCommands.TerminateRunner, {
|
|
335
334
|
runner: this.#CreateRunnerCopy(runnerEx)
|
|
336
335
|
} as ITestRunnerTelemetryPayload);
|
|
337
336
|
|
|
@@ -398,6 +397,14 @@ ${this.#runner}`,
|
|
|
398
397
|
}
|
|
399
398
|
}
|
|
400
399
|
|
|
400
|
+
#UpdateOptions = async (workerEx: IWorkerEx, runnerEx: IRunnerEx, options: IRunnerOptions): Promise<boolean> => {
|
|
401
|
+
runnerEx.options = { ...options };
|
|
402
|
+
this.#PostMessageToWorker(workerEx, eIWMessageCommands.UpdateOptions, {
|
|
403
|
+
runner: this.#CreateRunnerCopy(runnerEx)
|
|
404
|
+
} as ITestRunnerTelemetryPayload);
|
|
405
|
+
return true;
|
|
406
|
+
}
|
|
407
|
+
|
|
401
408
|
GetNextAvailableWorker = (): IWorkerEx | null => {
|
|
402
409
|
// Calculate the worker with the least runners
|
|
403
410
|
let leastRunnerWorker: IWorkerEx | null = null;
|
|
@@ -30,7 +30,9 @@ export declare enum eIWMessageCommands {
|
|
|
30
30
|
ResumeRunner = "__STS__ResumeRunner",
|
|
31
31
|
ResetRunner = "__STS__ResetRunner",
|
|
32
32
|
ExecuteRunner = "__STS__ExecuteRunner",
|
|
33
|
-
Completed = "__STS__Completed"
|
|
33
|
+
Completed = "__STS__Completed",
|
|
34
|
+
UpdateOptions = "__STS__UpdateOptions",
|
|
35
|
+
TerminateRunner = "__STS__TerminateRunner"
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* Inter-Worker (IW) message command.
|
|
@@ -96,10 +98,19 @@ export interface IRunnerEx extends IRunner {
|
|
|
96
98
|
Terminate: () => Promise<boolean>;
|
|
97
99
|
Reset: () => Promise<boolean>;
|
|
98
100
|
Execute: (iteration: number) => Promise<boolean>;
|
|
101
|
+
UpdateOptions: (options: IRunnerOptions) => Promise<boolean>;
|
|
99
102
|
on: (eventName: string, cb: () => void) => IRunnerEx;
|
|
100
103
|
}
|
|
101
104
|
export interface IRunnerInstance {
|
|
102
105
|
Execute: (iteration: number) => Promise<boolean>;
|
|
106
|
+
StartRunner: () => Promise<boolean>;
|
|
107
|
+
StopRunner: () => Promise<boolean>;
|
|
108
|
+
TerminateRunner: () => Promise<boolean>;
|
|
109
|
+
Completed: () => Promise<boolean>;
|
|
110
|
+
PauseRunner: () => Promise<boolean>;
|
|
111
|
+
ResumeRunner: () => Promise<boolean>;
|
|
112
|
+
ResetRunner: () => Promise<boolean>;
|
|
113
|
+
UpdateOptions: () => Promise<boolean>;
|
|
103
114
|
}
|
|
104
115
|
export declare enum IWorkerState {
|
|
105
116
|
starting = "starting",
|
|
@@ -107,6 +118,7 @@ export declare enum IWorkerState {
|
|
|
107
118
|
stopped = "stopped"
|
|
108
119
|
}
|
|
109
120
|
export interface IWorkerOptions {
|
|
121
|
+
id: string;
|
|
110
122
|
hostName: string;
|
|
111
123
|
agentId: string;
|
|
112
124
|
userAgent: string;
|
|
@@ -115,14 +127,10 @@ export type Runners = Record<string, IRunner>;
|
|
|
115
127
|
export interface IWorker {
|
|
116
128
|
id: number;
|
|
117
129
|
state: IWorkerState;
|
|
118
|
-
primaryThreadWorkerOptions: IWorkerOptions;
|
|
119
130
|
workerThreadWorkerOptions: IWorkerOptions;
|
|
120
131
|
runners?: Runners;
|
|
121
132
|
}
|
|
122
133
|
export type Workers = Record<string, IWorker>;
|
|
123
|
-
export interface IPrimaryWorker {
|
|
124
|
-
ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>;
|
|
125
|
-
}
|
|
126
134
|
export interface IExecutionProfile {
|
|
127
135
|
iterations: number;
|
|
128
136
|
delayBetweenIterations: number;
|
|
@@ -137,7 +145,6 @@ export interface IRunnerEvent {
|
|
|
137
145
|
}
|
|
138
146
|
export interface IWorkerEx extends IWorker {
|
|
139
147
|
worker: Worker;
|
|
140
|
-
primaryWorker: IPrimaryWorker;
|
|
141
148
|
runnersEx: Record<string, IRunnerEx>;
|
|
142
149
|
runnersEvents: Record<string, IRunnerEvent[]>;
|
|
143
150
|
GetRunner(id: string): IRunnerEx | null;
|
|
@@ -159,10 +166,8 @@ export interface ITestRunnerTelemetryPayload extends IIWMessagePayloadContentBas
|
|
|
159
166
|
runner: IRunner;
|
|
160
167
|
}
|
|
161
168
|
export interface IWorkerFactory {
|
|
162
|
-
createPrimaryThreadWorker: (app: any, options: IWorkerOptions) => IPrimaryWorker;
|
|
163
169
|
createWorkerThreadWorker: () => Worker;
|
|
164
170
|
get workerThreadWorkerOptions(): IWorkerOptions;
|
|
165
|
-
get primaryThreadWorkerOptions(): IWorkerOptions;
|
|
166
171
|
}
|
|
167
172
|
export interface IWorkerManagerOptions {
|
|
168
173
|
workerFactory: IWorkerFactory;
|
|
@@ -186,6 +191,8 @@ export declare const PublishMessageCommandsTestRunner: {
|
|
|
186
191
|
readonly ResetRunner: eIWMessageCommands.ResetRunner;
|
|
187
192
|
readonly ExecuteRunner: eIWMessageCommands.ExecuteRunner;
|
|
188
193
|
readonly Completed: eIWMessageCommands.Completed;
|
|
194
|
+
readonly UpdateOptions: eIWMessageCommands.UpdateOptions;
|
|
195
|
+
readonly TerminateRunner: eIWMessageCommands.TerminateRunner;
|
|
189
196
|
};
|
|
190
197
|
export type PublishMessageCommandsTestRunner = typeof PublishMessageCommandsTestRunner[keyof typeof PublishMessageCommandsTestRunner];
|
|
191
198
|
export interface IIWMessagePayloadContentBase {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../../src/testertesting/commonTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,eAAO,MAAM,iBAAiB,EAAE,MAAY,CAAC;AAE7C,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACxD,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,oBAAY,kBAAkB;IAC7B,mBAAmB,+BAA8B,CAAE,oCAAoC;IACvF,WAAW,uBAAuB;IAClC,mBAAmB,+BAA+B;IAClD,cAAc,0BAA0B;IACxC,mBAAmB,+BAA+B;IAClD,WAAW,uBAAuB;IAClC,UAAU,sBAAsB;IAChC,WAAW,uBAAuB;IAClC,YAAY,wBAAwB;IACpC,WAAW,uBAAuB;IAClC,aAAa,yBAAyB;IACtC,SAAS,qBAAqB;
|
|
1
|
+
{"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../../src/testertesting/commonTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,13 @@ export declare class TestCase01 implements IRunnerInstance {
|
|
|
9
9
|
#private;
|
|
10
10
|
constructor(workerInstance: WorkerInstance, runner: IRunner);
|
|
11
11
|
Execute: (iteration: number) => Promise<boolean>;
|
|
12
|
+
StartRunner: () => Promise<boolean>;
|
|
13
|
+
StopRunner: () => Promise<boolean>;
|
|
14
|
+
TerminateRunner: () => Promise<boolean>;
|
|
15
|
+
Completed: () => Promise<boolean>;
|
|
16
|
+
PauseRunner: () => Promise<boolean>;
|
|
17
|
+
ResumeRunner: () => Promise<boolean>;
|
|
18
|
+
ResetRunner: () => Promise<boolean>;
|
|
19
|
+
UpdateOptions: () => Promise<boolean>;
|
|
12
20
|
}
|
|
13
21
|
//# sourceMappingURL=testCase01.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testCase01.d.ts","sourceRoot":"","sources":["../../src/testertesting/testCase01.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAIxE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAWjD,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,UAAW,YAAW,eAAe;;gBAKlC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO;IAyC3D,OAAO,cAAqB,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAsCpD;CACJ"}
|
|
1
|
+
{"version":3,"file":"testCase01.d.ts","sourceRoot":"","sources":["../../src/testertesting/testCase01.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAIxE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAWjD,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,UAAW,YAAW,eAAe;;gBAKlC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO;IAyC3D,OAAO,cAAqB,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAsCpD;IAUD,WAAW,QAAa,OAAO,CAAC,OAAO,CAAC,CAGvC;IAED,UAAU,QAAa,OAAO,CAAC,OAAO,CAAC,CAGtC;IAED,eAAe,QAAa,OAAO,CAAC,OAAO,CAAC,CAG3C;IAED,SAAS,QAAa,OAAO,CAAC,OAAO,CAAC,CAGrC;IAED,WAAW,QAAa,OAAO,CAAC,OAAO,CAAC,CAGvC;IAED,YAAY,QAAa,OAAO,CAAC,OAAO,CAAC,CAGxC;IAED,WAAW,QAAa,OAAO,CAAC,OAAO,CAAC,CAGvC;IAED,aAAa,QAAa,OAAO,CAAC,OAAO,CAAC,CAGzC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerInstance.d.ts","sourceRoot":"","sources":["../../src/testertesting/workerInstance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAuE,eAAe,EAC7D,OAAO,EAAE,2BAA2B,EACnE,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAS/D,MAAM,WAAW,sBAAsB;CAEtC;AAED,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,eAAe,CAAA;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,OAAO,CAAA;CAClB;AAED,8BAAsB,cAAc;;;
|
|
1
|
+
{"version":3,"file":"workerInstance.d.ts","sourceRoot":"","sources":["../../src/testertesting/workerInstance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAuE,eAAe,EAC7D,OAAO,EAAE,2BAA2B,EACnE,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAS/D,MAAM,WAAW,sBAAsB;CAEtC;AAED,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,eAAe,CAAA;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,OAAO,CAAA;CAClB;AAED,8BAAsB,cAAc;;;IAkBhC,YAAY,QAAS,MAAM,YAGzB;IAGF,SAAS,WAAkB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,CAGjD;IAED,aAAa,WAAY,OAAO,UAW/B;IAED,IAAI,qBAAqB,IAAI,qBAAqB,GAAG,IAAI,CAExD;IAED,IAAI,sBAAsB,IAAI,WAAW,GAAG,IAAI,CAE/C;IAED,IAAI,OAAO,IAAI,sBAAsB,GAAG,IAAI,CAE3C;IA4BD,iBAAiB,+BAAgC,2BAA2B,KAAG,eAAe,GAAG,IAAI,CAEpG;IAuID,cAAc,SAAe,GAAG,mBA4D/B;CACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IWorkerEx, IRunnerEx, IRunnerOptions, IWorkerManagerOptions, IWorkerFactory } from './commonTypes';
|
|
2
2
|
export declare class STSWorkerManager {
|
|
3
3
|
#private;
|
|
4
|
-
constructor(
|
|
4
|
+
constructor(options?: IWorkerManagerOptions);
|
|
5
5
|
get WorkersEx(): Record<string, IWorkerEx>;
|
|
6
6
|
get runnerId(): number;
|
|
7
7
|
set runnerId(id: number);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerManager.d.ts","sourceRoot":"","sources":["../../src/testertesting/workerManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAEyB,SAAS,EAAW,SAAS,EAC5B,cAAc,EAC3C,qBAAqB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"workerManager.d.ts","sourceRoot":"","sources":["../../src/testertesting/workerManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAEyB,SAAS,EAAW,SAAS,EAC5B,cAAc,EAC3C,qBAAqB,EAAE,cAAc,EAExC,MAAM,eAAe,CAAA;AAYtB,qBAAa,gBAAgB;;gBASb,OAAO,CAAC,EAAE,qBAAqB;IAe3C,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAEzC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,EAAE,EAAE,MAAM,EAEtB;IAED,SAAS,sBAA6B,cAAc,KAAG,OAAO,CAAC,SAAS,CAAC,CAoFxE;IAED,iBAAiB,gBAAiB,SAAS,iBAAiB,cAAc,KAAG,SAAS,CAMrF;IAmQD,sBAAsB,QAAO,SAAS,GAAG,IAAI,CAa5C;IAED,aAAa,QAAO,SAAS,GAAG,IAAI,CAanC;IAED,IAAI,OAAO,IAAI,qBAAqB,CAEnC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,qBAAqB,EAEzC;IAED,cAAc,sBAMb;CACJ"}
|
|
@@ -1,62 +0,0 @@
|
|
|
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.WorkerPrimaryTestRunner01 = void 0;
|
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
// Force chalk level
|
|
9
|
-
chalk_1.default.level = 3;
|
|
10
|
-
const commonTypes_1 = require("./commonTypes");
|
|
11
|
-
//import { STSOAuth2Manager, STSOAuth2ManagerPluginKey } from '@nsshunt/stsoauth2plugin'
|
|
12
|
-
// This will execute within the primary thread context and have access to plugins and other Vue application features
|
|
13
|
-
class WorkerPrimaryTestRunner01 {
|
|
14
|
-
// #STSOAuth2Manager: STSOAuth2Manager
|
|
15
|
-
#options;
|
|
16
|
-
#debug = (message) => {
|
|
17
|
-
console.log(chalk_1.default.magenta(`pid: [${process.pid}] WorkerPrimaryTestRunner01::${message}`));
|
|
18
|
-
};
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
-
constructor(app, options) {
|
|
21
|
-
this.#debug(`constructor`);
|
|
22
|
-
this.#options = options;
|
|
23
|
-
this.#debug(`constructor::options: [${JSON.stringify(this.#options)}]`);
|
|
24
|
-
// this.#STSOAuth2Manager = app.config.globalProperties.$sts[STSOAuth2ManagerPluginKey]
|
|
25
|
-
}
|
|
26
|
-
async ProcessMessageFromWorker(workerPort, publishMessagePayload) {
|
|
27
|
-
this.#debug(`ProcessMessageFromWorker`);
|
|
28
|
-
// Process messages received back from the worker
|
|
29
|
-
switch (publishMessagePayload.command) {
|
|
30
|
-
case commonTypes_1.PublishMessageCommandsTestRunner.GetAccessToken:
|
|
31
|
-
{
|
|
32
|
-
//const access_token = await this.#GetAccessToken();
|
|
33
|
-
const access_token = '1234';
|
|
34
|
-
workerPort.postMessage({
|
|
35
|
-
command: commonTypes_1.PublishMessageCommandsTestRunner.GetAccessTokenResponse,
|
|
36
|
-
payload: {
|
|
37
|
-
messageId: publishMessagePayload.payload.messageId,
|
|
38
|
-
access_token
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
break;
|
|
43
|
-
case commonTypes_1.PublishMessageCommandsTestRunner.ExecuteRefreshToken:
|
|
44
|
-
{
|
|
45
|
-
//const access_token = await this.#ExecuteRefreshToken();
|
|
46
|
-
const access_token = '5678';
|
|
47
|
-
workerPort.postMessage({
|
|
48
|
-
command: commonTypes_1.PublishMessageCommandsTestRunner.ExecuteRefreshTokenResponse,
|
|
49
|
-
payload: {
|
|
50
|
-
messageId: publishMessagePayload.payload.messageId,
|
|
51
|
-
access_token
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
break;
|
|
56
|
-
default:
|
|
57
|
-
throw new Error(`publishMessagePayload.command: [${publishMessagePayload.command}] not allowed`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.WorkerPrimaryTestRunner01 = WorkerPrimaryTestRunner01;
|
|
62
|
-
//# sourceMappingURL=workerPrimaryTestRunner01.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workerPrimaryTestRunner01.js","sourceRoot":"","sources":["../../src/testertesting/workerPrimaryTestRunner01.ts"],"names":[],"mappings":";;;;;;AAEA,kDAA0B;AAC1B,oBAAoB;AACpB,eAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAEhB,+CAC0E;AAE1E,wFAAwF;AAExF,oHAAoH;AACpH,MAAa,yBAAyB;IACtC,yCAAyC;IACrC,QAAQ,CAAgB;IAExB,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,OAAO,CAAC,SAAS,OAAO,CAAC,GAAG,gCAAgC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAA;IAED,+DAA+D;IAC/D,YAAY,GAAQ,EAAE,OAAuB;QACzC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxE,8FAA8F;IAClG,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,UAAuB,EAAE,qBAAwC;QAC5F,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;QACvC,iDAAiD;QACjD,QAAQ,qBAAqB,CAAC,OAA2C,EAAE,CAAC;YAC5E,KAAK,8CAAgC,CAAC,cAAc;gBAAG,CAAC;oBACpD,oDAAoD;oBACpD,MAAM,YAAY,GAAG,MAAM,CAAC;oBAC5B,UAAU,CAAC,WAAW,CAAC;wBACnB,OAAO,EAAE,8CAAgC,CAAC,sBAAsB;wBAChE,OAAO,EAAE;4BACL,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS;4BAClD,YAAY;yBACiB;qBACpC,CAAC,CAAA;gBAAA,CAAC;gBACH,MAAM;YACV,KAAK,8CAAgC,CAAC,mBAAmB;gBAAG,CAAC;oBACzD,yDAAyD;oBACzD,MAAM,YAAY,GAAG,MAAM,CAAC;oBAC5B,UAAU,CAAC,WAAW,CAAC;wBACnB,OAAO,EAAE,8CAAgC,CAAC,2BAA2B;wBACrE,OAAO,EAAE;4BACL,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS;4BAClD,YAAY;yBACiB;qBACpC,CAAC,CAAA;gBAAA,CAAC;gBACH,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,mCAAmC,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;QACrG,CAAC;IACL,CAAC;CAuBJ;AApED,8DAoEC"}
|