@nsshunt/stsappframework 3.1.159 → 3.1.161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/testertesting/app.js +194 -0
- package/dist/testertesting/app.js.map +1 -0
- package/dist/testertesting/commonTypes.js +16 -0
- package/dist/testertesting/commonTypes.js.map +1 -0
- package/dist/testertesting/requestResponseHelper.js +83 -0
- package/dist/testertesting/requestResponseHelper.js.map +1 -0
- package/dist/testertesting/stsTestWorkerDefinitions.js +34 -0
- package/dist/testertesting/stsTestWorkerDefinitions.js.map +1 -0
- package/dist/testertesting/workerInstance.js +131 -0
- package/dist/testertesting/workerInstance.js.map +1 -0
- package/dist/testertesting/workerManager.js +417 -0
- package/dist/testertesting/workerManager.js.map +1 -0
- package/dist/testertesting/workerPrimaryTestRunner01.js +62 -0
- package/dist/testertesting/workerPrimaryTestRunner01.js.map +1 -0
- package/dist/testertesting/workerWorkerTestRunner01.js +146 -0
- package/dist/testertesting/workerWorkerTestRunner01.js.map +1 -0
- package/dist/webworkertesting/app.js +2 -0
- package/dist/webworkertesting/app.js.map +1 -1
- package/package.json +2 -2
- package/src/testertesting/app.ts +238 -0
- package/src/testertesting/commonTypes.ts +50 -0
- package/src/testertesting/requestResponseHelper.ts +95 -0
- package/src/testertesting/stsTestWorkerDefinitions.ts +150 -0
- package/src/testertesting/workerInstance.ts +154 -0
- package/src/testertesting/workerManager.ts +478 -0
- package/src/testertesting/workerPrimaryTestRunner01.ts +81 -0
- package/src/testertesting/workerWorkerTestRunner01.ts +184 -0
- package/src/webworkertesting/app.ts +4 -0
- package/types/testertesting/app.d.ts +2 -0
- package/types/testertesting/app.d.ts.map +1 -0
- package/types/testertesting/commonTypes.d.ts +44 -0
- package/types/testertesting/commonTypes.d.ts.map +1 -0
- package/types/testertesting/requestResponseHelper.d.ts +8 -0
- package/types/testertesting/requestResponseHelper.d.ts.map +1 -0
- package/types/testertesting/stsTestWorkerDefinitions.d.ts +124 -0
- package/types/testertesting/stsTestWorkerDefinitions.d.ts.map +1 -0
- package/types/testertesting/workerInstance.d.ts +18 -0
- package/types/testertesting/workerInstance.d.ts.map +1 -0
- package/types/testertesting/workerManager.d.ts +14 -0
- package/types/testertesting/workerManager.d.ts.map +1 -0
- package/types/testertesting/workerPrimaryTestRunner01.d.ts +8 -0
- package/types/testertesting/workerPrimaryTestRunner01.d.ts.map +1 -0
- package/types/testertesting/workerWorkerTestRunner01.d.ts +16 -0
- package/types/testertesting/workerWorkerTestRunner01.d.ts.map +1 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { MessagePort } from 'worker_threads';
|
|
2
|
+
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
// Force chalk level
|
|
5
|
+
chalk.level = 3;
|
|
6
|
+
|
|
7
|
+
import { IPrimaryWorker, IWorkerOptions, PublishMessageCommandsTestRunner,
|
|
8
|
+
IIWMessagePayload, IIWMessagePayloadContentBase } from './stsTestWorkerDefinitions'
|
|
9
|
+
|
|
10
|
+
//import { STSOAuth2Manager, STSOAuth2ManagerPluginKey } from '@nsshunt/stsoauth2plugin'
|
|
11
|
+
|
|
12
|
+
// This will execute within the primary thread context and have access to plugins and other Vue application features
|
|
13
|
+
export class WorkerPrimaryTestRunner01 implements IPrimaryWorker {
|
|
14
|
+
// #STSOAuth2Manager: STSOAuth2Manager
|
|
15
|
+
#options: IWorkerOptions
|
|
16
|
+
|
|
17
|
+
#debug = (message: string) => {
|
|
18
|
+
console.log(chalk.magenta(`pid: [${process.pid}] WorkerPrimaryTestRunner01::${message}`));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
+
constructor(app: any, options: IWorkerOptions) {
|
|
23
|
+
this.#debug(`constructor`)
|
|
24
|
+
this.#options = options;
|
|
25
|
+
this.#debug(`constructor::options: [${JSON.stringify(this.#options)}]`);
|
|
26
|
+
// this.#STSOAuth2Manager = app.config.globalProperties.$sts[STSOAuth2ManagerPluginKey]
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload) {
|
|
30
|
+
this.#debug(`ProcessMessageFromWorker`)
|
|
31
|
+
// Process messages received back from the worker
|
|
32
|
+
switch (publishMessagePayload.command as PublishMessageCommandsTestRunner) {
|
|
33
|
+
case PublishMessageCommandsTestRunner.GetAccessToken : {
|
|
34
|
+
//const access_token = await this.#GetAccessToken();
|
|
35
|
+
const access_token = '1234';
|
|
36
|
+
workerPort.postMessage({
|
|
37
|
+
command: PublishMessageCommandsTestRunner.GetAccessTokenResponse,
|
|
38
|
+
payload: {
|
|
39
|
+
messageId: publishMessagePayload.payload.messageId,
|
|
40
|
+
access_token
|
|
41
|
+
} as IIWMessagePayloadContentBase
|
|
42
|
+
})}
|
|
43
|
+
break;
|
|
44
|
+
case PublishMessageCommandsTestRunner.ExecuteRefreshToken : {
|
|
45
|
+
//const access_token = await this.#ExecuteRefreshToken();
|
|
46
|
+
const access_token = '5678';
|
|
47
|
+
workerPort.postMessage({
|
|
48
|
+
command: PublishMessageCommandsTestRunner.ExecuteRefreshTokenResponse,
|
|
49
|
+
payload: {
|
|
50
|
+
messageId: publishMessagePayload.payload.messageId,
|
|
51
|
+
access_token
|
|
52
|
+
} as IIWMessagePayloadContentBase
|
|
53
|
+
})}
|
|
54
|
+
break;
|
|
55
|
+
default :
|
|
56
|
+
throw new Error(`publishMessagePayload.command: [${publishMessagePayload.command}] not allowed`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/*
|
|
61
|
+
#GetAccessToken = async() : Promise<string | null> => {
|
|
62
|
+
debug(`WorkerPrimaryTestRunner01::GetAccessToken`)
|
|
63
|
+
return await this.#STSOAuth2Manager.GetAccessToken();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
#ExecuteRefreshToken = async (): Promise<string | null> => {
|
|
67
|
+
debug(`WorkerPrimaryTestRunner01::ExecuteRefreshToken`)
|
|
68
|
+
const retVal = await this.#STSOAuth2Manager.ExecuteRefreshToken();
|
|
69
|
+
if (retVal) {
|
|
70
|
+
const access_token = await this.#STSOAuth2Manager.GetAccessToken();
|
|
71
|
+
if (access_token) {
|
|
72
|
+
return access_token;
|
|
73
|
+
} else {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
*/
|
|
81
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
// Force chalk level
|
|
4
|
+
chalk.level = 3;
|
|
5
|
+
|
|
6
|
+
import { IRunner, IRunnerOptions, IRunnerState } from './stsTestWorkerDefinitions'
|
|
7
|
+
|
|
8
|
+
import { WorkerInstance } from './workerInstance'
|
|
9
|
+
|
|
10
|
+
export interface IRunnerOptionsEx extends IRunnerOptions {
|
|
11
|
+
iterations: number
|
|
12
|
+
sleepDuration: number
|
|
13
|
+
messageMod: number
|
|
14
|
+
logMessageMod: number
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare interface LogMessageData {
|
|
18
|
+
indent: number
|
|
19
|
+
adder: number
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const debug = (message: string) => {
|
|
23
|
+
console.log(chalk.blue(`pid: [${process.pid}] workerWorkerTestRunner01::${message}`));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
declare type LogMessageDataSet = Record<string, LogMessageData>;
|
|
27
|
+
|
|
28
|
+
// This will execute within a worker thread context
|
|
29
|
+
export class WorkerWorkerTestRunner01 extends WorkerInstance {
|
|
30
|
+
#logMessageDataSet: LogMessageDataSet = { };
|
|
31
|
+
|
|
32
|
+
constructor() {
|
|
33
|
+
super()
|
|
34
|
+
debug(`constructor`)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override StartWork = async (runner: IRunner): Promise<void> => {
|
|
38
|
+
debug(`StartWork::Options: [${JSON.stringify(this.Options)}]`);
|
|
39
|
+
//this.#access_token = await this.#GetAccessToken();
|
|
40
|
+
//await Sleep(this.GetRandomInt(1000));
|
|
41
|
+
return this.PerformTest(runner);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
GenLogMessage = (runner: IRunner) => {
|
|
45
|
+
if (!this.#logMessageDataSet[runner.id]) {
|
|
46
|
+
this.#logMessageDataSet[runner.id] = {
|
|
47
|
+
adder: 1,
|
|
48
|
+
indent: 0
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const logMessageData = this.#logMessageDataSet[runner.id];
|
|
52
|
+
|
|
53
|
+
let message = `${' '.repeat(logMessageData.indent)}>> Hello World <<`;
|
|
54
|
+
const colorCode = runner.asyncRunnerContext.asyncRunnerId % 4;
|
|
55
|
+
switch (colorCode) {
|
|
56
|
+
case 0:
|
|
57
|
+
message = chalk.green(`${message}`);
|
|
58
|
+
break;
|
|
59
|
+
case 1:
|
|
60
|
+
message = chalk.yellow(`${message}`);
|
|
61
|
+
break;
|
|
62
|
+
case 2:
|
|
63
|
+
message = chalk.magenta(`${message}`);
|
|
64
|
+
break;
|
|
65
|
+
case 3:
|
|
66
|
+
message = chalk.white(`${message}`);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
console.log(message);
|
|
71
|
+
runner.instrumentData.message.push(message);
|
|
72
|
+
logMessageData.indent += logMessageData.adder;
|
|
73
|
+
if (logMessageData.indent > 20) {
|
|
74
|
+
logMessageData.adder = -1;
|
|
75
|
+
} else if (logMessageData.indent === 0) {
|
|
76
|
+
logMessageData.adder = 1;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
PerformTest = async(runner: IRunner): Promise<void> => {
|
|
81
|
+
debug(`WorkerWorkerTestRunner01::PerformTest`)
|
|
82
|
+
|
|
83
|
+
const message = `ID: [${runner.asyncRunnerContext.id}], Worker: [${runner.asyncRunnerContext.threadId}], Runner: [${runner.asyncRunnerContext.asyncRunnerId}] starting ...`;
|
|
84
|
+
console.log(message);
|
|
85
|
+
runner.instrumentData.message = [message]
|
|
86
|
+
this.PostTelemetry(runner);
|
|
87
|
+
runner.instrumentData.message = [ ];
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
const tester = new TestRest01Service(this.#access_token, runner.options as IRunnerOptionsEx);
|
|
91
|
+
|
|
92
|
+
tester.on('rx', (val: string) => {
|
|
93
|
+
runner.instrumentData.rx += parseInt(val);
|
|
94
|
+
//console.log(runner.instrumentData.rx);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
tester.on('tx', (val: string) => {
|
|
98
|
+
runner.instrumentData.tx += parseInt(val);
|
|
99
|
+
});
|
|
100
|
+
*/
|
|
101
|
+
|
|
102
|
+
while (runner.state !== IRunnerState.stopped) {
|
|
103
|
+
|
|
104
|
+
await Sleep(0);
|
|
105
|
+
//let retVal = await tester.StartTest();
|
|
106
|
+
|
|
107
|
+
runner.instrumentData.coreCount = 1;
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
const options = runner.options as IRunnerOptionsEx;
|
|
111
|
+
|
|
112
|
+
await Sleep(options.sleepDuration);
|
|
113
|
+
|
|
114
|
+
runner.instrumentData.timer++;
|
|
115
|
+
runner.instrumentData.requestCount++;
|
|
116
|
+
runner.instrumentData.velocity = options.messageMod;
|
|
117
|
+
|
|
118
|
+
//runner.instrumentData.tx += 256;
|
|
119
|
+
//runner.instrumentData.rx += 6500;
|
|
120
|
+
|
|
121
|
+
if (runner.instrumentData.requestCount % options.logMessageMod === 0) {
|
|
122
|
+
this.GenLogMessage(runner);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (runner.instrumentData.requestCount % options.messageMod === 0) {
|
|
126
|
+
this.PostTelemetry(runner);
|
|
127
|
+
runner.instrumentData.message = [ ];
|
|
128
|
+
runner.instrumentData.tx = 0;
|
|
129
|
+
runner.instrumentData.rx = 0;
|
|
130
|
+
}
|
|
131
|
+
if (runner.instrumentData.requestCount % 1000 === 0) {
|
|
132
|
+
const message = `Worker: [${runner.asyncRunnerContext.threadId}], Runner: [${runner.asyncRunnerContext.asyncRunnerId}] has completed: [${runner.instrumentData.requestCount}] iterations of max: [${options.iterations}]`;
|
|
133
|
+
console.log(message);
|
|
134
|
+
runner.instrumentData.message = [message]
|
|
135
|
+
this.PostTelemetry(runner);
|
|
136
|
+
runner.instrumentData.message = [ ];
|
|
137
|
+
runner.instrumentData.tx = 0;
|
|
138
|
+
runner.instrumentData.rx = 0;
|
|
139
|
+
|
|
140
|
+
}
|
|
141
|
+
if (runner.instrumentData.requestCount > options.iterations) {
|
|
142
|
+
runner.state = IRunnerState.stopped;
|
|
143
|
+
const message = `Worker: [${runner.asyncRunnerContext.threadId}], Runner: [${runner.asyncRunnerContext.asyncRunnerId}] stopping ...`;
|
|
144
|
+
console.log(message);
|
|
145
|
+
runner.instrumentData.message = [message]
|
|
146
|
+
this.PostTelemetry(runner);
|
|
147
|
+
runner.instrumentData.message = [ ];
|
|
148
|
+
runner.instrumentData.tx = 0;
|
|
149
|
+
runner.instrumentData.rx = 0;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
import {
|
|
157
|
+
parentPort,
|
|
158
|
+
MessagePort
|
|
159
|
+
} from 'worker_threads';
|
|
160
|
+
import { Sleep } from '@nsshunt/stsutils';
|
|
161
|
+
|
|
162
|
+
let messagePort: MessagePort;
|
|
163
|
+
|
|
164
|
+
const worker = new WorkerWorkerTestRunner01();
|
|
165
|
+
|
|
166
|
+
parentPort?.on('message', (data: any) => {
|
|
167
|
+
|
|
168
|
+
worker.ProcessMessage(data);
|
|
169
|
+
/*
|
|
170
|
+
|
|
171
|
+
if (data.cmd.localeCompare('portmessage') === 0) {
|
|
172
|
+
messagePort = data.port;
|
|
173
|
+
messagePort.on('message', (data) => {
|
|
174
|
+
LogInfoMessage(`webWorker (${process.pid}): message from passed message port = [${data}]`);
|
|
175
|
+
messagePort.postMessage(data);
|
|
176
|
+
});
|
|
177
|
+
} else {
|
|
178
|
+
LogInfoMessage(`webWorker (${process.pid}): message from parent = [${JSON.stringify(data)}]`);
|
|
179
|
+
parentPort?.postMessage(data);
|
|
180
|
+
}
|
|
181
|
+
*/
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
debug(`file completed ...`);
|
|
@@ -34,6 +34,8 @@ if (cluster.isPrimary) {
|
|
|
34
34
|
LogInfoMessage(`cluster.primary (${process.pid}): message from message port = [${data}]`);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
+
LogInfoMessage(`cluster primary completed ...`);
|
|
38
|
+
|
|
37
39
|
|
|
38
40
|
} else {
|
|
39
41
|
LogInfoMessage(`Worker ${process.pid} started`);
|
|
@@ -49,4 +51,6 @@ if (cluster.isPrimary) {
|
|
|
49
51
|
LogInfoMessage(`cluster.worker (${process.pid}): message from worker = [${JSON.stringify(data)}]`);
|
|
50
52
|
});
|
|
51
53
|
|
|
54
|
+
LogInfoMessage(`cluster work completed ...`);
|
|
55
|
+
|
|
52
56
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/testertesting/app.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { IContextBase } from '@nsshunt/stsobservability';
|
|
2
|
+
export declare const URI_BASE_VUEUTILS: string;
|
|
3
|
+
export interface IAsyncRunnerContext extends IContextBase {
|
|
4
|
+
id: string;
|
|
5
|
+
hostName: string;
|
|
6
|
+
agentName: string;
|
|
7
|
+
threadId: string;
|
|
8
|
+
asyncRunnerId: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Inter-Worker (IW) Payload context base.
|
|
12
|
+
*/
|
|
13
|
+
export interface IIWMessagePayloadContentBase {
|
|
14
|
+
messageId?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Inter-Worker (IW) message commands.
|
|
18
|
+
*/
|
|
19
|
+
export declare enum eIWMessageCommands {
|
|
20
|
+
InstrumentTelemetry = "__STS__InstrumentTelemetry",// Used to send instrument telemetry
|
|
21
|
+
MessagePort = "__STS__MessagePort",
|
|
22
|
+
MessagePortResponse = "__STS__MessagePortResponse",
|
|
23
|
+
AddAsyncRunner = "__STS__AddAsyncRunner",
|
|
24
|
+
StopAllAsyncRunners = "__STS__StopAllAsyncRunners"
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Inter-Worker (IW) message command.
|
|
28
|
+
*/
|
|
29
|
+
export type IIWMessageCommand = eIWMessageCommands;
|
|
30
|
+
/**
|
|
31
|
+
* Inter-Worker (IW) message payload.
|
|
32
|
+
*/
|
|
33
|
+
export interface IIWMessagePayload {
|
|
34
|
+
command: IIWMessageCommand;
|
|
35
|
+
payload: IIWMessagePayloadContentBase;
|
|
36
|
+
}
|
|
37
|
+
export interface IObservabilitySubscriberManagerOptions {
|
|
38
|
+
modelId: string;
|
|
39
|
+
consumeInstrumentationMode: string;
|
|
40
|
+
instrumentManagerEndpoint: string;
|
|
41
|
+
instrumentManagerPort: string;
|
|
42
|
+
instrumentManagerAPIRoot: string;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=commonTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../../src/testertesting/commonTypes.ts"],"names":[],"mappings":"AAAA,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;CAClD;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,iBAAiB,CAAA;IAC1B,OAAO,EAAE,4BAA4B,CAAA;CACxC;AAED,MAAM,WAAW,sCAAsC;IACnD,OAAO,EAAE,MAAM,CAAA;IACf,0BAA0B,EAAE,MAAM,CAAA;IAClC,yBAAyB,EAAE,MAAM,CAAA;IACjC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,wBAAwB,EAAE,MAAM,CAAA;CACnC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MessagePort } from 'worker_threads';
|
|
2
|
+
import type { IIWMessagePayload } from './commonTypes';
|
|
3
|
+
export declare class RequestResponseHelper {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(port: MessagePort);
|
|
6
|
+
PostMessage: (message: IIWMessagePayload) => Promise<IIWMessagePayload>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=requestResponseHelper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestResponseHelper.d.ts","sourceRoot":"","sources":["../../src/testertesting/requestResponseHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AActD,qBAAa,qBAAqB;;gBAMlB,IAAI,EAAE,WAAW;IAU7B,WAAW,YAAa,iBAAiB,KAAG,OAAO,CAAC,iBAAiB,CAAC,CAyCrE;CAoBJ"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Worker, MessagePort } from 'worker_threads';
|
|
2
|
+
import { PublishInstrumentController } from '@nsshunt/stsobservability';
|
|
3
|
+
import { IAsyncRunnerContext } from './commonTypes';
|
|
4
|
+
export interface ISTSAgentWorkerMessagePort extends IIWMessagePayloadContentBase {
|
|
5
|
+
port: MessagePort;
|
|
6
|
+
options: IWorkerOptions;
|
|
7
|
+
}
|
|
8
|
+
export declare enum IRunnerState {
|
|
9
|
+
created = "created",
|
|
10
|
+
running = "running",
|
|
11
|
+
stopped = "stopped",
|
|
12
|
+
paused = "paused",
|
|
13
|
+
error = "error"
|
|
14
|
+
}
|
|
15
|
+
export interface IRunnerTelemetry {
|
|
16
|
+
requestCount: number;
|
|
17
|
+
errorCount: number;
|
|
18
|
+
retryCount: number;
|
|
19
|
+
authenticationCount: number;
|
|
20
|
+
authenticationErrorCount: number;
|
|
21
|
+
authenticationRetryCount: number;
|
|
22
|
+
velocity: number;
|
|
23
|
+
coreCount: number;
|
|
24
|
+
timer: number;
|
|
25
|
+
duration: number;
|
|
26
|
+
latency: number;
|
|
27
|
+
activeRequestCount: number;
|
|
28
|
+
message: string[];
|
|
29
|
+
childCount: number;
|
|
30
|
+
rx: number;
|
|
31
|
+
tx: number;
|
|
32
|
+
}
|
|
33
|
+
export interface IRunner {
|
|
34
|
+
id: number;
|
|
35
|
+
asyncRunnerContext: IAsyncRunnerContext;
|
|
36
|
+
options: IRunnerOptions;
|
|
37
|
+
state: IRunnerState;
|
|
38
|
+
instrumentData: IRunnerTelemetry;
|
|
39
|
+
}
|
|
40
|
+
export interface IRunnerEx extends IRunner {
|
|
41
|
+
publishInstrumentController: PublishInstrumentController;
|
|
42
|
+
Stop: () => Promise<boolean>;
|
|
43
|
+
}
|
|
44
|
+
export declare enum IWorkerState {
|
|
45
|
+
starting = "starting",
|
|
46
|
+
started = "started",
|
|
47
|
+
stopped = "stopped"
|
|
48
|
+
}
|
|
49
|
+
export interface IWorkerOptions {
|
|
50
|
+
hostName: string;
|
|
51
|
+
agentId: string;
|
|
52
|
+
userAgent: string;
|
|
53
|
+
}
|
|
54
|
+
export type Runners = Record<string, IRunner>;
|
|
55
|
+
export interface IWorker {
|
|
56
|
+
id: number;
|
|
57
|
+
state: IWorkerState;
|
|
58
|
+
primaryThreadWorkerOptions: IWorkerOptions;
|
|
59
|
+
workerThreadWorkerOptions: IWorkerOptions;
|
|
60
|
+
runners?: Runners;
|
|
61
|
+
}
|
|
62
|
+
export type Workers = Record<string, IWorker>;
|
|
63
|
+
export interface IPrimaryWorker {
|
|
64
|
+
ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>;
|
|
65
|
+
}
|
|
66
|
+
export interface IRunnerOptions {
|
|
67
|
+
}
|
|
68
|
+
export interface IWorkerEx extends IWorker {
|
|
69
|
+
worker: Worker;
|
|
70
|
+
primaryWorker: IPrimaryWorker;
|
|
71
|
+
runnersEx: Record<string, IRunnerEx>;
|
|
72
|
+
AddRunner: (runnerOptions: IRunnerOptions) => IRunnerEx;
|
|
73
|
+
StopRunner: (runner: IRunnerEx) => Promise<boolean>;
|
|
74
|
+
Stop: () => Promise<boolean>;
|
|
75
|
+
}
|
|
76
|
+
export interface ISTSTestWorkerOptions {
|
|
77
|
+
messageMod: number;
|
|
78
|
+
iterations: number;
|
|
79
|
+
}
|
|
80
|
+
export interface ITelemetryStore {
|
|
81
|
+
workers: Workers;
|
|
82
|
+
}
|
|
83
|
+
export interface ITestRunnerTelemetryPayload extends IIWMessagePayloadContentBase {
|
|
84
|
+
runner: IRunner;
|
|
85
|
+
}
|
|
86
|
+
export interface IWorkerFactory {
|
|
87
|
+
createPrimaryThreadWorker: (app: any, options: IWorkerOptions) => IPrimaryWorker;
|
|
88
|
+
createWorkerThreadWorker: () => Worker;
|
|
89
|
+
get workerThreadWorkerOptions(): IWorkerOptions;
|
|
90
|
+
get primaryThreadWorkerOptions(): IWorkerOptions;
|
|
91
|
+
}
|
|
92
|
+
export interface IWorkerManagerOptions {
|
|
93
|
+
workerFactory: IWorkerFactory;
|
|
94
|
+
publishInstrumentController: PublishInstrumentController;
|
|
95
|
+
}
|
|
96
|
+
export declare enum eIWMessageCommands {
|
|
97
|
+
InstrumentTelemetry = "__STS__InstrumentTelemetry",// Used to send instrument telemetry
|
|
98
|
+
MessagePort = "__STS__MessagePort",
|
|
99
|
+
MessagePortResponse = "__STS__MessagePortResponse",
|
|
100
|
+
AddAsyncRunner = "__STS__AddAsyncRunner",
|
|
101
|
+
StopAllAsyncRunners = "__STS__StopAllAsyncRunners"
|
|
102
|
+
}
|
|
103
|
+
export declare const PublishMessageCommandsTestRunner: {
|
|
104
|
+
readonly GetAccessToken: "__GetAccessToken";
|
|
105
|
+
readonly GetAccessTokenResponse: "__GetAccessTokenResponse";
|
|
106
|
+
readonly GetDataFromPrimary: "__GetDataFromPrimary";
|
|
107
|
+
readonly ExecuteRefreshToken: "__ExecuteRefreshToken";
|
|
108
|
+
readonly ExecuteRefreshTokenResponse: "__ExecuteRefreshTokenResponse";
|
|
109
|
+
readonly InstrumentTelemetry: eIWMessageCommands.InstrumentTelemetry;
|
|
110
|
+
readonly MessagePort: eIWMessageCommands.MessagePort;
|
|
111
|
+
readonly MessagePortResponse: eIWMessageCommands.MessagePortResponse;
|
|
112
|
+
readonly AddAsyncRunner: eIWMessageCommands.AddAsyncRunner;
|
|
113
|
+
readonly StopAllAsyncRunners: eIWMessageCommands.StopAllAsyncRunners;
|
|
114
|
+
};
|
|
115
|
+
export type PublishMessageCommandsTestRunner = typeof PublishMessageCommandsTestRunner[keyof typeof PublishMessageCommandsTestRunner];
|
|
116
|
+
export type IIWMessageCommand = eIWMessageCommands;
|
|
117
|
+
export interface IIWMessagePayloadContentBase {
|
|
118
|
+
messageId?: string;
|
|
119
|
+
}
|
|
120
|
+
export interface IIWMessagePayload {
|
|
121
|
+
command: IIWMessageCommand;
|
|
122
|
+
payload: IIWMessagePayloadContentBase;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=stsTestWorkerDefinitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsTestWorkerDefinitions.d.ts","sourceRoot":"","sources":["../../src/testertesting/stsTestWorkerDefinitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MessagePort } from 'worker_threads';
|
|
2
|
+
import type { IRunner } from './stsTestWorkerDefinitions';
|
|
3
|
+
import { RequestResponseHelper } from './requestResponseHelper';
|
|
4
|
+
export interface IWorkerInstanceOptions {
|
|
5
|
+
}
|
|
6
|
+
export declare abstract class WorkerInstance {
|
|
7
|
+
#private;
|
|
8
|
+
constructor();
|
|
9
|
+
GetRandomInt: (max: number) => number;
|
|
10
|
+
StartWork: (runner: IRunner) => Promise<void>;
|
|
11
|
+
PostTelemetry: (runner: IRunner) => void;
|
|
12
|
+
get RequestResponseHelper(): RequestResponseHelper | null;
|
|
13
|
+
get CollectorCollectorPort(): MessagePort | null;
|
|
14
|
+
get Options(): IWorkerInstanceOptions | null;
|
|
15
|
+
StartRunner: (runner: IRunner) => Promise<void>;
|
|
16
|
+
ProcessMessage: (data: any) => Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=workerInstance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workerInstance.d.ts","sourceRoot":"","sources":["../../src/testertesting/workerInstance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,KAAK,EAA8B,OAAO,EAA+B,MAAM,4BAA4B,CAAA;AAGlH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAO/D,MAAM,WAAW,sBAAsB;CAEtC;AAED,8BAAsB,cAAc;;;IAehC,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,WAAW,WAAkB,OAAO,mBAKnC;IAwBD,cAAc,SAAe,GAAG,mBA2B/B;CACJ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IWorkerEx, IRunnerEx, IRunnerOptions, IWorkerManagerOptions, IWorkerFactory } from './stsTestWorkerDefinitions';
|
|
2
|
+
export declare class STSWorkerManager {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(app: any, options?: IWorkerManagerOptions);
|
|
5
|
+
get WorkersEx(): Record<string, IWorkerEx>;
|
|
6
|
+
AddWorker: (useWorkerFactory?: IWorkerFactory) => Promise<IWorkerEx>;
|
|
7
|
+
AddRunnerToWorker: (stsWorkerEx: IWorkerEx, runnerOptions: IRunnerOptions) => IRunnerEx;
|
|
8
|
+
GetNextAvailableWorker: () => IWorkerEx | null;
|
|
9
|
+
GetBusyWorker: () => IWorkerEx | null;
|
|
10
|
+
get Options(): IWorkerManagerOptions;
|
|
11
|
+
set Options(options: IWorkerManagerOptions);
|
|
12
|
+
StopAllWorkers: () => Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=workerManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workerManager.d.ts","sourceRoot":"","sources":["../../src/testertesting/workerManager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAA8B,SAAS,EAAW,SAAS,EACtC,cAAc,EAC3C,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAU7E,qBAAa,gBAAgB;;gBAWb,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAerD,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAEzC;IAED,SAAS,sBAA6B,cAAc,KAAG,OAAO,CAAC,SAAS,CAAC,CA0ExE;IAED,iBAAiB,gBAAiB,SAAS,iBAAiB,cAAc,KAAG,SAAS,CAMrF;IA2SD,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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MessagePort } from 'worker_threads';
|
|
2
|
+
import { IPrimaryWorker, IWorkerOptions, IIWMessagePayload } from './stsTestWorkerDefinitions';
|
|
3
|
+
export declare class WorkerPrimaryTestRunner01 implements IPrimaryWorker {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(app: any, options: IWorkerOptions);
|
|
6
|
+
ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=workerPrimaryTestRunner01.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workerPrimaryTestRunner01.d.ts","sourceRoot":"","sources":["../../src/testertesting/workerPrimaryTestRunner01.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM7C,OAAO,EAAE,cAAc,EAAE,cAAc,EACnC,iBAAiB,EAAgC,MAAM,4BAA4B,CAAA;AAKvF,qBAAa,yBAA0B,YAAW,cAAc;;gBAShD,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc;IAOvC,wBAAwB,CAAC,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,iBAAiB;CAoDnG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IRunner, IRunnerOptions } from './stsTestWorkerDefinitions';
|
|
2
|
+
import { WorkerInstance } from './workerInstance';
|
|
3
|
+
export interface IRunnerOptionsEx extends IRunnerOptions {
|
|
4
|
+
iterations: number;
|
|
5
|
+
sleepDuration: number;
|
|
6
|
+
messageMod: number;
|
|
7
|
+
logMessageMod: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class WorkerWorkerTestRunner01 extends WorkerInstance {
|
|
10
|
+
#private;
|
|
11
|
+
constructor();
|
|
12
|
+
StartWork: (runner: IRunner) => Promise<void>;
|
|
13
|
+
GenLogMessage: (runner: IRunner) => void;
|
|
14
|
+
PerformTest: (runner: IRunner) => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=workerWorkerTestRunner01.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workerWorkerTestRunner01.d.ts","sourceRoot":"","sources":["../../src/testertesting/workerWorkerTestRunner01.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAgB,MAAM,4BAA4B,CAAA;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACxB;AAcD,qBAAa,wBAAyB,SAAQ,cAAc;;;IAQ/C,SAAS,WAAkB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,CAK1D;IAED,aAAa,WAAY,OAAO,UAkC/B;IAED,WAAW,WAAiB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,CAwElD;CACJ"}
|