@nsshunt/stsvueutils 0.0.10 → 0.0.11

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/index.js CHANGED
@@ -18,4 +18,9 @@ __exportStar(require("./plugins/stsPluginKeys"), exports);
18
18
  __exportStar(require("./plugins/emitter"), exports);
19
19
  __exportStar(require("./plugins/storage"), exports);
20
20
  __exportStar(require("./plugins/stsStorage"), exports);
21
+ __exportStar(require("./plugins/workerManager"), exports);
22
+ __exportStar(require("./plugins/requestResponseHelper"), exports);
23
+ __exportStar(require("./plugins/stsTestWorkerDefinitions"), exports);
24
+ __exportStar(require("./plugins/workerInstance"), exports);
25
+ __exportStar(require("./stores/TelemetryStore"), exports);
21
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAuC;AAEvC,oDAAiC;AACjC,oDAAiC;AACjC,uDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAuC;AAEvC,oDAAiC;AACjC,oDAAiC;AACjC,uDAAoC;AAEpC,0DAAuC;AACvC,kEAA+C;AAC/C,qEAAkD;AAClD,2DAAwC;AAExC,0DAAuC"}
@@ -0,0 +1,82 @@
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.RequestResponseHelper = void 0;
7
+ const debug_1 = __importDefault(require("debug"));
8
+ const debug = (0, debug_1.default)(`proc:${process.pid}`);
9
+ class RequestResponseHelper {
10
+ #requestResponseMessages = {};
11
+ #requestResponseMessageTimeout = 10000; //@@ config
12
+ #port;
13
+ constructor(port) {
14
+ this.#port = port;
15
+ this.#SetupListener();
16
+ }
17
+ PostMessage = (message) => {
18
+ return new Promise((resolve, reject) => {
19
+ const { messageId } = message.payload;
20
+ if (messageId) {
21
+ if (this.#requestResponseMessages[messageId]) {
22
+ reject(`RequestResponseHelper: Message with id: [${messageId}] already exists within the Request/Response record structure`);
23
+ }
24
+ else {
25
+ this.#requestResponseMessages[messageId] = {
26
+ publishMessagePayload: { ...message },
27
+ cb: () => {
28
+ const detail = this.#requestResponseMessages[messageId].publishMessagePayloadResponse;
29
+ clearTimeout(this.#requestResponseMessages[messageId].timeout);
30
+ setTimeout(() => {
31
+ delete this.#requestResponseMessages[messageId];
32
+ }, 0);
33
+ if (detail) {
34
+ debug(`RequestResponseHelper: Resolving response message with id: [${messageId}] from target worker port. Details: [${JSON.stringify(detail)}]`);
35
+ resolve(detail);
36
+ }
37
+ else {
38
+ const msg = `Could not get detail from this.#requestResponseMessages[messageId].publishMessagePayloadResponse`;
39
+ debug(msg);
40
+ reject(msg);
41
+ }
42
+ },
43
+ timeout: setTimeout(() => {
44
+ setTimeout(() => {
45
+ delete this.#requestResponseMessages[messageId];
46
+ }, 0);
47
+ debug(`RequestResponseHelper: Timeout has occurred after: [${this.#requestResponseMessageTimeout}]ms with message id: [${messageId}]. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);
48
+ reject('RequestResponseHelper: Did not receive response form parent process.');
49
+ }, this.#requestResponseMessageTimeout) // max message timeout allowed
50
+ };
51
+ debug(`RequestResponseHelper: Sending message with id: [${messageId}] to target worker port. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);
52
+ this.#port.postMessage(message);
53
+ }
54
+ }
55
+ else {
56
+ const msg = `RequestResponseHelper: Response did not include a message id`;
57
+ debug(msg);
58
+ reject(msg);
59
+ }
60
+ });
61
+ };
62
+ #SetupListener = () => {
63
+ this.#port.onmessage = async (msg) => {
64
+ const publishMessagePayload = msg.data;
65
+ if (publishMessagePayload.payload.messageId) {
66
+ const messageId = publishMessagePayload.payload.messageId;
67
+ if (messageId && messageId !== '') {
68
+ if (this.#requestResponseMessages[messageId]) {
69
+ const requestResponseMessage = this.#requestResponseMessages[messageId];
70
+ requestResponseMessage.publishMessagePayloadResponse = { ...publishMessagePayload };
71
+ requestResponseMessage.cb();
72
+ }
73
+ else {
74
+ throw new Error(`RequestResponseHelper: Could not find Request/Response message with id: [${messageId}]`);
75
+ }
76
+ }
77
+ }
78
+ };
79
+ };
80
+ }
81
+ exports.RequestResponseHelper = RequestResponseHelper;
82
+ //# sourceMappingURL=requestResponseHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestResponseHelper.js","sourceRoot":"","sources":["../../src/plugins/requestResponseHelper.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA+B;AAC/B,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAajD,MAAa,qBAAqB;IAE9B,wBAAwB,GAA4B,EAAG,CAAA;IACvD,8BAA8B,GAAG,KAAK,CAAC,CAAC,WAAW;IACnD,KAAK,CAAa;IAElB,YAAY,IAAiB;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW,GAAG,CAAC,OAA8B,EAAkC,EAAE;QAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;YACtC,IAAI,SAAS,EAAE;gBACX,IAAI,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE;oBAC1C,MAAM,CAAC,4CAA4C,SAAS,+DAA+D,CAAC,CAAC;iBAChI;qBAAM;oBACH,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,GAAG;wBACvC,qBAAqB,EAAE,EAAE,GAAG,OAAO,EAAE;wBACrC,EAAE,EAAE,GAAG,EAAE;4BACL,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,6BAA6B,CAAC;4BACtF,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;4BAC/D,UAAU,CAAC,GAAG,EAAE;gCACZ,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;4BACpD,CAAC,EAAE,CAAC,CAAC,CAAC;4BACN,IAAI,MAAM,EAAE;gCACR,KAAK,CAAC,+DAA+D,SAAS,wCAAwC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gCACjJ,OAAO,CAAC,MAAM,CAAC,CAAC;6BACnB;iCAAM;gCACH,MAAM,GAAG,GAAG,kGAAkG,CAAC;gCAC/G,KAAK,CAAC,GAAG,CAAC,CAAC;gCACX,MAAM,CAAC,GAAG,CAAC,CAAC;6BACf;wBACL,CAAC;wBACD,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE;4BACrB,UAAU,CAAC,GAAG,EAAE;gCACZ,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;4BACpD,CAAC,EAAE,CAAC,CAAC,CAAC;4BACN,KAAK,CAAC,uDAAuD,IAAI,CAAC,8BAA8B,yBAAyB,SAAS,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;4BACrO,MAAM,CAAC,sEAAsE,CAAC,CAAC;wBACnF,CAAC,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,8BAA8B;qBACzE,CAAA;oBACD,KAAK,CAAC,oDAAoD,SAAS,sCAAsC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;oBAC5L,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBACnC;aACJ;iBAAM;gBACH,MAAM,GAAG,GAAG,8DAA8D,CAAC;gBAC3E,KAAK,CAAC,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,GAAG,CAAC,CAAC;aACf;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAA;IAED,cAAc,GAAG,GAAG,EAAE;QAClB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,EAAE,GAAiB,EAAE,EAAE;YAC/C,MAAM,qBAAqB,GAA0B,GAAG,CAAC,IAA6B,CAAC;YACvF,IAAI,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE;gBACzC,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC1D,IAAI,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE;oBAC/B,IAAI,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE;wBAC1C,MAAM,sBAAsB,GAA2B,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;wBAChG,sBAAsB,CAAC,6BAA6B,GAAG,EAAE,GAAG,qBAAqB,EAAE,CAAC;wBACpF,sBAAsB,CAAC,EAAE,EAAE,CAAC;qBAC/B;yBAAM;wBACH,MAAM,IAAI,KAAK,CAAC,4EAA4E,SAAS,GAAG,CAAC,CAAC;qBAC7G;iBACJ;aACJ;QACL,CAAC,CAAA;IACL,CAAC,CAAA;CACJ;AAvED,sDAuEC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IWorkerState = exports.IRunnerState = void 0;
4
+ var IRunnerState;
5
+ (function (IRunnerState) {
6
+ IRunnerState["created"] = "created";
7
+ IRunnerState["running"] = "running";
8
+ IRunnerState["stopped"] = "stopped";
9
+ IRunnerState["paused"] = "paused";
10
+ IRunnerState["error"] = "error";
11
+ })(IRunnerState = exports.IRunnerState || (exports.IRunnerState = {}));
12
+ var IWorkerState;
13
+ (function (IWorkerState) {
14
+ IWorkerState["starting"] = "starting";
15
+ IWorkerState["started"] = "started";
16
+ IWorkerState["stopped"] = "stopped";
17
+ })(IWorkerState = exports.IWorkerState || (exports.IWorkerState = {}));
18
+ //# sourceMappingURL=stsTestWorkerDefinitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsTestWorkerDefinitions.js","sourceRoot":"","sources":["../../src/plugins/stsTestWorkerDefinitions.ts"],"names":[],"mappings":";;;AASA,IAAY,YAMX;AAND,WAAY,YAAY;IACvB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,+BAAe,CAAA;AAChB,CAAC,EANW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAMvB;AAqBD,IAAY,YAIX;AAJD,WAAY,YAAY;IACvB,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACpB,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB"}
@@ -0,0 +1,115 @@
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.WorkerInstance = void 0;
7
+ const debug_1 = __importDefault(require("debug"));
8
+ const debug = (0, debug_1.default)(`proc:${process.pid}:workerInstance`);
9
+ const stspublisherserver_1 = require("@nsshunt/stspublisherserver"); // '@nsshunt/stspublisherserver' //'./plugins/publishers/publisherAgent'
10
+ const stsTestWorkerDefinitions_1 = require("./stsTestWorkerDefinitions");
11
+ const requestResponseHelper_1 = require("./requestResponseHelper");
12
+ class WorkerInstance {
13
+ #collectorCollectorPort = null;
14
+ #requestResponseHelper = null;
15
+ #runners = {};
16
+ #options = null;
17
+ constructor() {
18
+ debug(`WorkerInstance::constructor`);
19
+ }
20
+ GetRandomInt = (max) => {
21
+ debug(`WorkerInstance::GetRandomInt`);
22
+ return Math.floor(Math.random() * Math.floor(max));
23
+ };
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
+ StartWork = async (runner) => {
26
+ debug(`WorkerInstance::StartWork`);
27
+ return;
28
+ };
29
+ PostTelemetry = (runner) => {
30
+ //debug(`WorkerInstance::PostTelemetry`)
31
+ if (this.#collectorCollectorPort) {
32
+ const message = {
33
+ command: stspublisherserver_1.PublishMessageCommands.InstrumentTelemetry,
34
+ payload: {
35
+ runner
36
+ }
37
+ };
38
+ this.#collectorCollectorPort.postMessage(message);
39
+ }
40
+ };
41
+ get RequestResponseHelper() {
42
+ return this.#requestResponseHelper;
43
+ }
44
+ get CollectorCollectorPort() {
45
+ return this.#collectorCollectorPort;
46
+ }
47
+ get Options() {
48
+ return this.#options;
49
+ }
50
+ #SetMessagePort = (workerMessagePort) => {
51
+ debug(`WorkerInstance::SetMessagePort`);
52
+ this.#collectorCollectorPort = workerMessagePort.port;
53
+ this.#collectorCollectorPort.onmessage = function (data) {
54
+ console.log(`collectorCollectorPort onmessage: ${data.data}`);
55
+ };
56
+ this.#requestResponseHelper = new requestResponseHelper_1.RequestResponseHelper(this.#collectorCollectorPort);
57
+ const response = {
58
+ command: stspublisherserver_1.PublishMessageCommands.MessagePortResponse,
59
+ payload: new stspublisherserver_1.PublishMessagePayloadContentBase()
60
+ };
61
+ this.#collectorCollectorPort.postMessage(response);
62
+ };
63
+ StartRunner = async (runner) => {
64
+ debug(`WorkerInstance::StartRunner`);
65
+ console.log(`StartTests: [${JSON.stringify(runner)}]`);
66
+ runner.state = stsTestWorkerDefinitions_1.IRunnerState.running;
67
+ this.StartWork(runner);
68
+ };
69
+ #AddAsyncRunner = (testRunnerTelemetryPayload) => {
70
+ debug(`WorkerInstance::AddAsyncRunner`);
71
+ const { runner } = testRunnerTelemetryPayload;
72
+ this.#runners[runner.id] = runner;
73
+ this.StartRunner(runner);
74
+ };
75
+ #StopRunners = (testRunnerTelemetryPayload) => {
76
+ debug(`WorkerInstance::StopRunners`);
77
+ if (testRunnerTelemetryPayload === null) {
78
+ for (const [, testRunner] of Object.entries(this.#runners)) {
79
+ testRunner.state = stsTestWorkerDefinitions_1.IRunnerState.stopped;
80
+ }
81
+ }
82
+ else {
83
+ const runner = this.#runners[testRunnerTelemetryPayload.runner.id];
84
+ if (runner) {
85
+ runner.state = stsTestWorkerDefinitions_1.IRunnerState.stopped;
86
+ }
87
+ }
88
+ };
89
+ ProcessMessage = async (data) => {
90
+ debug(`WorkerInstance::ProcessMessage`);
91
+ try {
92
+ const payloadMessage = data.data;
93
+ switch (payloadMessage.command) {
94
+ case stspublisherserver_1.PublishMessageCommands.MessagePort:
95
+ this.#SetMessagePort(payloadMessage.payload);
96
+ this.#options = payloadMessage.payload.options;
97
+ debug(`WorkerInstance::ProcessMessage::#options: [${JSON.stringify(this.#options)}]`);
98
+ break;
99
+ case stspublisherserver_1.PublishMessageCommands.Add:
100
+ this.#AddAsyncRunner(payloadMessage.payload);
101
+ break;
102
+ case stspublisherserver_1.PublishMessageCommands.Stop:
103
+ this.#StopRunners(payloadMessage.payload);
104
+ break;
105
+ default:
106
+ debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);
107
+ }
108
+ }
109
+ catch (error) {
110
+ console.log(error);
111
+ }
112
+ };
113
+ }
114
+ exports.WorkerInstance = WorkerInstance;
115
+ //# sourceMappingURL=workerInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerInstance.js","sourceRoot":"","sources":["../../src/plugins/workerInstance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSTSWorkerManager = exports.STSWorkerManager = void 0;
4
+ //import MyWorker from './sts-worker?worker' // https://vitejs.dev/guide/features.html#web-workers
5
+ const stspublisherserver_1 = require("@nsshunt/stspublisherserver");
6
+ const stsinstrumentation_1 = require("@nsshunt/stsinstrumentation");
7
+ const stsmodels_1 = require("@nsshunt/stsmodels");
8
+ const TelemetryStore_1 = require("./../stores/TelemetryStore");
9
+ const stsTestWorkerDefinitions_1 = require("./stsTestWorkerDefinitions");
10
+ const stsutils_1 = require("@nsshunt/stsutils");
11
+ const vue_1 = require("vue");
12
+ const stspublisherserver_2 = require("@nsshunt/stspublisherserver");
13
+ const stsPluginKeys_1 = require("./stsPluginKeys");
14
+ class STSWorkerManager {
15
+ //#agentSession: string = null;
16
+ #workersEx = {};
17
+ #runner = 0;
18
+ #workerId = 0;
19
+ #options;
20
+ #STSInstrumentController;
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ #app;
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ constructor(app, options) {
25
+ this.#app = app;
26
+ this.#options = options;
27
+ this.#STSInstrumentController = app.config.globalProperties.$sts[stspublisherserver_2.STSInstrumentControllerPluginKey];
28
+ }
29
+ get WorkersEx() {
30
+ return this.#workersEx;
31
+ }
32
+ AddWorker = async (useWorkerFactory) => {
33
+ let workerFactory;
34
+ if (useWorkerFactory) {
35
+ // Use the supplied workFactory
36
+ workerFactory = useWorkerFactory;
37
+ }
38
+ else {
39
+ // Use the default workFactory
40
+ workerFactory = this.#options.workerFactory;
41
+ }
42
+ const stsWorkerEx = {
43
+ id: this.#workerId++,
44
+ worker: workerFactory.createWorkerThreadWorker(),
45
+ primaryWorker: workerFactory.createPrimaryThreadWorker(this.#app, workerFactory.primaryThreadWorkerOptions),
46
+ state: stsTestWorkerDefinitions_1.IWorkerState.starting,
47
+ workerThreadWorkerOptions: workerFactory.workerThreadWorkerOptions,
48
+ primaryThreadWorkerOptions: workerFactory.primaryThreadWorkerOptions,
49
+ runnersEx: {},
50
+ AddRunner: (runnerOptions) => this.AddRunnerToWorker(stsWorkerEx, runnerOptions),
51
+ StopRunner: (runner) => this.#StopRunner(stsWorkerEx, runner),
52
+ Stop: async () => this.#StopWorker(stsWorkerEx)
53
+ };
54
+ console.log(`Adding worker: [${stsWorkerEx.id}]`);
55
+ stsWorkerEx.worker.onmessage = function (data) {
56
+ console.log(data.data);
57
+ };
58
+ stsWorkerEx.worker.onerror = function (error) {
59
+ console.log(error);
60
+ };
61
+ const { port1, // process message port
62
+ port2 // collector message port
63
+ } = new MessageChannel();
64
+ const workerPort = port1;
65
+ console.log(`STSWorkerManager::AddWorker::workerThreadWorkerOptions: [${JSON.stringify(stsWorkerEx.workerThreadWorkerOptions)}]`);
66
+ this.#PostMessageToWorker(stsWorkerEx, stspublisherserver_1.PublishMessageCommands.MessagePort, {
67
+ port: port2,
68
+ //applicationStoreState: stateCopy,
69
+ options: { ...stsWorkerEx.workerThreadWorkerOptions }
70
+ }, port2);
71
+ // Process messages received back from the worker
72
+ workerPort.onmessage = async (data) => {
73
+ const publishMessagePayload = data.data;
74
+ switch (publishMessagePayload.command) {
75
+ case stspublisherserver_1.PublishMessageCommands.MessagePortResponse:
76
+ stsWorkerEx.state = stsTestWorkerDefinitions_1.IWorkerState.started;
77
+ break;
78
+ case stspublisherserver_1.PublishMessageCommands.InstrumentTelemetry:
79
+ this.#ProcessTelemetry(stsWorkerEx, publishMessagePayload.payload);
80
+ break;
81
+ default:
82
+ stsWorkerEx.primaryWorker.ProcessMessageFromWorker(workerPort, publishMessagePayload);
83
+ }
84
+ };
85
+ this.#workersEx[stsWorkerEx.id] = stsWorkerEx;
86
+ console.log(`Added worker: [${stsWorkerEx.id}]`);
87
+ return stsWorkerEx;
88
+ };
89
+ AddRunnerToWorker = (stsWorkerEx, runnerOptions) => {
90
+ const runnerEx = this.#CreateAsyncRunner(stsWorkerEx, runnerOptions);
91
+ stsWorkerEx.runnersEx[runnerEx.id] = runnerEx;
92
+ this.#SetRunnerIntoWorker(stsWorkerEx, runnerEx);
93
+ return runnerEx;
94
+ };
95
+ #CreateRunnerCopy(runnerEx) {
96
+ return {
97
+ id: runnerEx.id,
98
+ asyncRunnerContext: { ...runnerEx.asyncRunnerContext },
99
+ options: { ...runnerEx.options },
100
+ state: runnerEx.state,
101
+ instrumentData: { ...runnerEx.instrumentData }
102
+ };
103
+ }
104
+ #SetRunnerIntoWorker = (workerEx, runnerEx) => {
105
+ // Now that the worker is setup, send the options
106
+ //@@ wait until worker in running state
107
+ const payload = {
108
+ runner: this.#CreateRunnerCopy(runnerEx)
109
+ };
110
+ this.#PostMessageToWorker(workerEx, stspublisherserver_1.PublishMessageCommands.Add, payload);
111
+ };
112
+ #ProcessTelemetry = (workerEx, payloadContents) => {
113
+ const store = (0, TelemetryStore_1.TelemetryStore)();
114
+ const { runner } = payloadContents;
115
+ if (workerEx.runnersEx[runner.id]) {
116
+ const runnerEx = workerEx.runnersEx[runner.id];
117
+ let update = false;
118
+ // Copy telemetry
119
+ runnerEx.instrumentData.count = runner.instrumentData.count;
120
+ runnerEx.instrumentData.velocity = runner.instrumentData.velocity;
121
+ if (runner.instrumentData.message) {
122
+ runnerEx.instrumentData.message = [...runner.instrumentData.message];
123
+ }
124
+ else {
125
+ runnerEx.instrumentData.message = [];
126
+ }
127
+ if (runner.instrumentData.message) {
128
+ runner.instrumentData.message.forEach((message) => {
129
+ runnerEx.publishInstrumentController.LogEx(message);
130
+ });
131
+ update = true;
132
+ }
133
+ if (runner.instrumentData.count) {
134
+ runnerEx.publishInstrumentController.UpdateInstrument(stsinstrumentation_1.Gauge.REQUEST_COUNT_GAUGE, {
135
+ val: runnerEx.instrumentData.count
136
+ });
137
+ runnerEx.publishInstrumentController.UpdateInstrument(stsinstrumentation_1.Gauge.VELOCITY_GAUGE, {
138
+ Inc: runnerEx.instrumentData.velocity
139
+ });
140
+ update = true;
141
+ }
142
+ if (update) {
143
+ store.Update(workerEx, runnerEx);
144
+ }
145
+ }
146
+ };
147
+ #CreateAsyncRunner = (workerEx, runnerOptions) => {
148
+ //const applicationStore = ApplicationStore();
149
+ this.#runner++; // The runner number always increases
150
+ const asyncRunnerContext = {
151
+ nid: `\
152
+ ${workerEx.workerThreadWorkerOptions.hostName}${stsmodels_1.ModelDelimeter.COMPONENT_SEPERATOR}${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}\
153
+ ${stsmodels_1.ModelDelimeter.NID_SEPERATOR}\
154
+ worker${workerEx.id}\
155
+ ${stsmodels_1.ModelDelimeter.SEPERATOR}\
156
+ ${this.#runner}`,
157
+ id: this.#runner.toString(),
158
+ hostName: (workerEx.workerThreadWorkerOptions.hostName ? workerEx.workerThreadWorkerOptions.hostName : 'host'),
159
+ agentName: `${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}`,
160
+ threadId: `worker${workerEx.id}`,
161
+ asyncRunnerId: this.#runner
162
+ };
163
+ const runnerEx = {
164
+ id: this.#runner,
165
+ publishInstrumentController: this.#STSInstrumentController.AddPublishInstrumentController(asyncRunnerContext),
166
+ asyncRunnerContext: asyncRunnerContext,
167
+ state: stsTestWorkerDefinitions_1.IRunnerState.created,
168
+ options: runnerOptions,
169
+ instrumentData: {
170
+ count: 0,
171
+ velocity: 0,
172
+ message: []
173
+ },
174
+ Stop: async () => this.#StopRunner(workerEx, runnerEx)
175
+ };
176
+ return runnerEx;
177
+ };
178
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
179
+ #PostMessageToWorker = (workerEx, command, payload, transferObject) => {
180
+ if (transferObject) {
181
+ console.log(`#PostMessageToWorker with transfer object`);
182
+ workerEx.worker.postMessage({ command, payload }, [transferObject]);
183
+ console.log(`#PostMessageToWorker with transfer object - done...`);
184
+ }
185
+ else {
186
+ console.log(`#PostMessageToWorker`);
187
+ workerEx.worker.postMessage({ command, payload });
188
+ }
189
+ };
190
+ #TerminateWorker = (workerEx) => {
191
+ if (workerEx.worker) {
192
+ const store = (0, TelemetryStore_1.TelemetryStore)();
193
+ workerEx.worker.terminate();
194
+ //@@workerEx.worker = null;
195
+ console.log(`Terminated worker: [${workerEx.id}]`);
196
+ store.RemoveWorker(workerEx);
197
+ delete this.#workersEx[workerEx.id];
198
+ }
199
+ else {
200
+ // Some other runner has already removed the parent worker, do nothing
201
+ // console.log(`WORKER ALREADY NULL`);
202
+ }
203
+ };
204
+ #StopRunner = async (workerEx, runnerEx = null) => {
205
+ // If runnerEx not provided, Remove the first runner in the collection
206
+ if (runnerEx === null) {
207
+ const ids = Object.keys(workerEx.runnersEx);
208
+ if (ids.length > 0) {
209
+ const id = ids[0];
210
+ runnerEx = workerEx.runnersEx[id];
211
+ }
212
+ }
213
+ if (runnerEx !== null) {
214
+ this.#PostMessageToWorker(workerEx, stspublisherserver_1.PublishMessageCommands.Stop, {
215
+ runner: this.#CreateRunnerCopy(runnerEx)
216
+ });
217
+ runnerEx.publishInstrumentController.LogEx(`Terminating runner: [${runnerEx.id}]`);
218
+ const promArray = [];
219
+ promArray.push((async () => {
220
+ await (0, stsutils_1.Sleep)(100);
221
+ return runnerEx.publishInstrumentController.InstrumentTerminate();
222
+ })());
223
+ const store = (0, TelemetryStore_1.TelemetryStore)();
224
+ store.RemoveRunner(workerEx, runnerEx);
225
+ delete workerEx.runnersEx[runnerEx.id];
226
+ const retVal = await Promise.all(promArray);
227
+ console.log(`Removed instrument workers: [${retVal}]`);
228
+ /*
229
+ // If the removed runner was the last runner, remove the worker
230
+ if (Object.keys(workerEx.runnersEx).length === 0) {
231
+ this.#TerminateWorker(workerEx);
232
+ }
233
+ */
234
+ }
235
+ return true;
236
+ };
237
+ #StopWorker = async (workerEx) => {
238
+ try {
239
+ if (workerEx.state !== stsTestWorkerDefinitions_1.IWorkerState.stopped) {
240
+ this.#PostMessageToWorker(workerEx, stspublisherserver_1.PublishMessageCommands.Stop, null);
241
+ //@@ Now wait until we get an ack back from the worker
242
+ // This is because we may be trying to stop BEFORE the worker has had a chance to startup ...
243
+ console.log(`Terminating worker: [${workerEx.id}]`);
244
+ const promArray = [];
245
+ // Terminate only those that are currently running...
246
+ const ids = Object.keys(workerEx.runnersEx);
247
+ ids.forEach((id) => {
248
+ const runnerEx = workerEx.runnersEx[id];
249
+ promArray.push(this.#StopRunner(workerEx, runnerEx));
250
+ });
251
+ await Promise.all(promArray);
252
+ this.#TerminateWorker(workerEx);
253
+ }
254
+ return true;
255
+ }
256
+ catch (error) {
257
+ console.log(`Error in STSTestWorker:StopWorker: [${error}]`);
258
+ return false;
259
+ }
260
+ };
261
+ GetNextAvailableWorker = () => {
262
+ // Calculate the worker with the least runners
263
+ let leastRunnerWorker = null;
264
+ for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
265
+ if (leastRunnerWorker) {
266
+ if (Object.keys(stsWorker.runnersEx).length < Object.keys(leastRunnerWorker.runnersEx).length) {
267
+ leastRunnerWorker = stsWorker;
268
+ }
269
+ }
270
+ else {
271
+ leastRunnerWorker = stsWorker;
272
+ }
273
+ }
274
+ return leastRunnerWorker;
275
+ };
276
+ GetBusyWorker = () => {
277
+ // Calculate the worker with the least runners
278
+ let busyWorker = null;
279
+ for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
280
+ if (busyWorker) {
281
+ if (Object.keys(stsWorker.runnersEx).length > Object.keys(busyWorker.runnersEx).length) {
282
+ busyWorker = stsWorker;
283
+ }
284
+ }
285
+ else {
286
+ busyWorker = stsWorker;
287
+ }
288
+ }
289
+ return busyWorker;
290
+ };
291
+ get Options() {
292
+ return this.#options;
293
+ }
294
+ set Options(options) {
295
+ this.#options = options;
296
+ }
297
+ /*
298
+ StopRunner = async () => {
299
+ // Calculate the worker with the most runners
300
+ let largestRunnerWorker: IWorkerEx | null = null;
301
+ for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
302
+ if (largestRunnerWorker) {
303
+ if (Object.keys(stsWorker.runnersEx).length > Object.keys(largestRunnerWorker.runnersEx).length) {
304
+ largestRunnerWorker = stsWorker;
305
+ }
306
+ } else {
307
+ largestRunnerWorker = stsWorker;
308
+ }
309
+ }
310
+ if (largestRunnerWorker) largestRunnerWorker.StopRunner();
311
+ }
312
+ */
313
+ /*
314
+ StopWorker = async () => {
315
+ // Calculate the worker with the least runners
316
+ let largestRunnerWorker: IWorkerEx | null = null;
317
+ for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
318
+ if (largestRunnerWorker) {
319
+ if (Object.keys(stsWorker.runnersEx).length < Object.keys(largestRunnerWorker.runnersEx).length) {
320
+ largestRunnerWorker = stsWorker;
321
+ }
322
+ } else {
323
+ largestRunnerWorker = stsWorker;
324
+ }
325
+ }
326
+ if (largestRunnerWorker) largestRunnerWorker.Stop();
327
+ }
328
+ */
329
+ StopAllWorkers = async () => {
330
+ const promArray = [];
331
+ for (const [, stsWorker] of Object.entries(this.WorkersEx)) {
332
+ promArray.push(stsWorker.Stop());
333
+ }
334
+ await Promise.all(promArray);
335
+ };
336
+ }
337
+ exports.STSWorkerManager = STSWorkerManager;
338
+ // Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.
339
+ // https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject
340
+ const useSTSWorkerManager = () => (0, vue_1.inject)(stsPluginKeys_1.STSWorkerManagerPluginKey);
341
+ exports.useSTSWorkerManager = useSTSWorkerManager;
342
+ const STSWorkerManagerPlugin = {
343
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
344
+ install: (app, options) => {
345
+ const wm = new STSWorkerManager(app, options);
346
+ // Assign plugin instance to global $sts object (legacy method - see below)
347
+ if (!app.config.globalProperties.$sts) {
348
+ app.config.globalProperties.$sts = {};
349
+ }
350
+ app.config.globalProperties.$sts[stsPluginKeys_1.STSWorkerManagerPluginKey] = wm;
351
+ // Assign App level provide for this STS plugin using symbol keys
352
+ // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys
353
+ app.provide(stsPluginKeys_1.STSWorkerManagerPluginKey, wm);
354
+ }
355
+ };
356
+ exports.default = STSWorkerManagerPlugin;
357
+ //# sourceMappingURL=workerManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerManager.js","sourceRoot":"","sources":["../../src/plugins/workerManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelemetryStore = void 0;
4
+ const pinia_1 = require("pinia");
5
+ // https://pinia.vuejs.org/
6
+ // https://seb-l.github.io/pinia-plugin-persist/
7
+ exports.TelemetryStore = (0, pinia_1.defineStore)('__sts__TelemetryStore', {
8
+ // State
9
+ // https://pinia.vuejs.org/core-concepts/state.html
10
+ state: () => {
11
+ return {
12
+ workers: {}
13
+ };
14
+ },
15
+ // Getters
16
+ // https://pinia.vuejs.org/core-concepts/getters.html
17
+ // Actions
18
+ // https://pinia.vuejs.org/core-concepts/actions.html
19
+ actions: {
20
+ RemoveWorker(workerEx) {
21
+ delete this.workers[workerEx.id];
22
+ },
23
+ RemoveRunner(workerEx, runnerEx) {
24
+ const worker = this.workers[workerEx.id];
25
+ if (worker && worker.runners) {
26
+ delete worker.runners[runnerEx.id];
27
+ }
28
+ },
29
+ Update(workerEx, runnerEx) {
30
+ if (!this.workers[workerEx.id]) {
31
+ // Create a new telemetry record
32
+ this.workers[workerEx.id] = {
33
+ id: workerEx.id,
34
+ state: workerEx.state,
35
+ primaryThreadWorkerOptions: { ...workerEx.primaryThreadWorkerOptions },
36
+ workerThreadWorkerOptions: { ...workerEx.workerThreadWorkerOptions },
37
+ runners: {}
38
+ };
39
+ }
40
+ const worker = this.workers[workerEx.id];
41
+ // Now check for the async runner
42
+ if (worker.runners) {
43
+ if (!worker.runners[runnerEx.id]) {
44
+ // Create a new asyncRunnerInstance telemetry record
45
+ const runner = {
46
+ id: runnerEx.id,
47
+ asyncRunnerContext: { ...runnerEx.asyncRunnerContext },
48
+ options: { ...runnerEx.options },
49
+ state: runnerEx.state,
50
+ instrumentData: { ...runnerEx.instrumentData },
51
+ };
52
+ worker.runners[runner.id] = runner;
53
+ }
54
+ else {
55
+ const runner = worker.runners[runnerEx.id];
56
+ runner.instrumentData = { ...runnerEx.instrumentData };
57
+ }
58
+ }
59
+ }
60
+ }
61
+ });
62
+ //# sourceMappingURL=TelemetryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryStore.js","sourceRoot":"","sources":["../../src/stores/TelemetryStore.ts"],"names":[],"mappings":";;;AAAA,iCAAmC;AAInC,2BAA2B;AAC3B,gDAAgD;AACnC,QAAA,cAAc,GAAG,IAAA,mBAAW,EAAC,uBAAuB,EAAE;IAC/D,QAAQ;IACR,mDAAmD;IACnD,KAAK,EAAE,GAAoB,EAAE;QACzB,OAAO;YACH,OAAO,EAAE,EAAG;SACf,CAAA;IACL,CAAC;IAED,UAAU;IACV,qDAAqD;IAErD,UAAU;IACV,qDAAqD;IACrD,OAAO,EAAE;QACL,YAAY,CAAC,QAAmB;YAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,YAAY,CAAC,QAAmB,EAAE,QAAmB;YACjD,MAAM,MAAM,GAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;gBAC1B,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aACtC;QACL,CAAC;QAED,MAAM,CAAC,QAAmB,EAAE,QAAmB;YAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;gBAC5B,gCAAgC;gBAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;oBACxB,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,0BAA0B,EAAE,EAAE,GAAG,QAAQ,CAAC,0BAA0B,EAAG;oBACvE,yBAAyB,EAAE,EAAE,GAAG,QAAQ,CAAC,yBAAyB,EAAG;oBACrE,OAAO,EAAE,EAAG;iBACJ,CAAA;aACf;YACD,MAAM,MAAM,GAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClD,iCAAiC;YACjC,IAAI,MAAM,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;oBAC9B,oDAAoD;oBACpD,MAAM,MAAM,GAAY;wBACpB,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,kBAAkB,EAAE,EAAE,GAAG,QAAQ,CAAC,kBAAkB,EAAE;wBACtD,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE;wBAChC,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,cAAc,EAAE,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE;qBACjD,CAAA;oBACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;iBACtC;qBAAM;oBACH,MAAM,MAAM,GAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBACpD,MAAM,CAAC,cAAc,GAAG,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAA;iBACzD;aACJ;QACL,CAAC;KACJ;CACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsvueutils",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "Vue 3 framework utilities and plugins",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
package/types/index.d.ts CHANGED
@@ -2,4 +2,9 @@ export * from './plugins/stsPluginKeys';
2
2
  export * from './plugins/emitter';
3
3
  export * from './plugins/storage';
4
4
  export * from './plugins/stsStorage';
5
+ export * from './plugins/workerManager';
6
+ export * from './plugins/requestResponseHelper';
7
+ export * from './plugins/stsTestWorkerDefinitions';
8
+ export * from './plugins/workerInstance';
9
+ export * from './stores/TelemetryStore';
5
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AAEvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AAEvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,oCAAoC,CAAA;AAClD,cAAc,0BAA0B,CAAA;AAExC,cAAc,yBAAyB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { PublishMessagePayload } from '@nsshunt/stspublisherserver';
2
+ export declare class RequestResponseHelper {
3
+ #private;
4
+ constructor(port: MessagePort);
5
+ PostMessage: (message: PublishMessagePayload) => Promise<PublishMessagePayload>;
6
+ }
7
+ //# sourceMappingURL=requestResponseHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestResponseHelper.d.ts","sourceRoot":"","sources":["../../src/plugins/requestResponseHelper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAWzE,qBAAa,qBAAqB;;gBAMlB,IAAI,EAAE,WAAW;IAK7B,WAAW,YAAa,qBAAqB,KAAG,QAAQ,qBAAqB,CAAC,CAyC7E;CAmBJ"}
@@ -0,0 +1,130 @@
1
+ import type { PublishMessagePayloadContentBase, AsyncRunnerContext, PublishInstrumentController, PublishMessagePayload } from '@nsshunt/stspublisherserver';
2
+ import type { ClientStorageType } from './stsStorage';
3
+ export interface ISTSAgentWorkerMessagePort extends PublishMessagePayloadContentBase {
4
+ port: MessagePort;
5
+ options: IWorkerOptions;
6
+ }
7
+ export declare enum IRunnerState {
8
+ created = "created",
9
+ running = "running",
10
+ stopped = "stopped",
11
+ paused = "paused",
12
+ error = "error"
13
+ }
14
+ export interface IRunnerTelemetry {
15
+ count: number;
16
+ velocity: number;
17
+ message: string[];
18
+ }
19
+ export interface IRunner {
20
+ id: number;
21
+ asyncRunnerContext: AsyncRunnerContext;
22
+ options: IRunnerOptions;
23
+ state: IRunnerState;
24
+ instrumentData: IRunnerTelemetry;
25
+ }
26
+ export interface IRunnerEx extends IRunner {
27
+ publishInstrumentController: PublishInstrumentController;
28
+ Stop: () => Promise<boolean>;
29
+ }
30
+ export declare enum IWorkerState {
31
+ starting = "starting",
32
+ started = "started",
33
+ stopped = "stopped"
34
+ }
35
+ export interface IWorkerOptions {
36
+ hostName: string;
37
+ agentId: string;
38
+ userAgent: string;
39
+ }
40
+ export type Runners = Record<string, IRunner>;
41
+ export interface IWorker {
42
+ id: number;
43
+ state: IWorkerState;
44
+ primaryThreadWorkerOptions: IWorkerOptions;
45
+ workerThreadWorkerOptions: IWorkerOptions;
46
+ runners?: Runners;
47
+ }
48
+ export type Workers = Record<string, IWorker>;
49
+ export interface IPrimaryWorker {
50
+ ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: PublishMessagePayload): Promise<void>;
51
+ }
52
+ export interface IRunnerOptions {
53
+ }
54
+ export interface IWorkerEx extends IWorker {
55
+ worker: Worker;
56
+ primaryWorker: IPrimaryWorker;
57
+ runnersEx: Record<string, IRunnerEx>;
58
+ AddRunner: (runnerOptions: IRunnerOptions) => IRunnerEx;
59
+ StopRunner: (runner: IRunnerEx) => Promise<boolean>;
60
+ Stop: () => Promise<boolean>;
61
+ }
62
+ export interface ISTSTestWorkerOptions {
63
+ messageMod: number;
64
+ iterations: number;
65
+ }
66
+ export interface ITelemetryStore {
67
+ workers: Workers;
68
+ }
69
+ export interface ITestRunnerTelemetryPayload extends PublishMessagePayloadContentBase {
70
+ runner: IRunner;
71
+ }
72
+ export interface ITestProfile {
73
+ profileName: string;
74
+ profileConfig: {
75
+ leadInDuration: number;
76
+ runDuration: number;
77
+ };
78
+ }
79
+ export interface ITestConfiguration {
80
+ workers: number;
81
+ runners: number;
82
+ iterations: number;
83
+ maxIterations: number;
84
+ minIterations: number;
85
+ stepIterations: number;
86
+ useBrokerForM2M: boolean;
87
+ useCookiesToBroker: boolean;
88
+ randomStartDelay: number;
89
+ }
90
+ export interface IApplicationStore {
91
+ agentId: string;
92
+ testConfiguration: ITestConfiguration;
93
+ testProfiles: ITestProfile[];
94
+ applicationConfig: Partial<{
95
+ AGENT_ID: string;
96
+ HOST: string;
97
+ USER_AGENT: string;
98
+ PROFILE: string;
99
+ AUTHORIZE_ENDPOINT: string;
100
+ AUTHORIZE_PORT: string;
101
+ AUTHORIZE_API_ROOT: string;
102
+ AUTHORIZE_API: string;
103
+ STORAGE: ClientStorageType;
104
+ CLIENT_ID: string;
105
+ AUDIENCE: string;
106
+ REDIRECT_URI: string;
107
+ SCOPE: string;
108
+ BROKER_ENDPOINT: string;
109
+ BROKER_PORT: string;
110
+ BROKER_API_ROOT: string;
111
+ AUTORUN_DELAY: string;
112
+ AUTORUN_MAX_ITERATION: string;
113
+ IM_ENDPOINT: string;
114
+ IM_HOST_PORT: string;
115
+ IM_PORT: string;
116
+ IM_APIROOT: string;
117
+ DEBUG: string;
118
+ TIMEOUT: string;
119
+ }>;
120
+ }
121
+ export interface IWorkerFactory {
122
+ createPrimaryThreadWorker: (app: any, options: IWorkerOptions) => IPrimaryWorker;
123
+ createWorkerThreadWorker: () => Worker;
124
+ get workerThreadWorkerOptions(): IWorkerOptions;
125
+ get primaryThreadWorkerOptions(): IWorkerOptions;
126
+ }
127
+ export interface IWorkerManagerOptions {
128
+ workerFactory: IWorkerFactory;
129
+ }
130
+ //# sourceMappingURL=stsTestWorkerDefinitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsTestWorkerDefinitions.d.ts","sourceRoot":"","sources":["../../src/plugins/stsTestWorkerDefinitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { IRunner } from './stsTestWorkerDefinitions';
2
+ import { RequestResponseHelper } from './requestResponseHelper';
3
+ export interface IWorkerInstanceOptions {
4
+ }
5
+ export declare abstract class WorkerInstance {
6
+ #private;
7
+ constructor();
8
+ GetRandomInt: (max: number) => number;
9
+ StartWork: (runner: IRunner) => Promise<void>;
10
+ PostTelemetry: (runner: IRunner) => void;
11
+ get RequestResponseHelper(): RequestResponseHelper | null;
12
+ get CollectorCollectorPort(): MessagePort | null;
13
+ get Options(): IWorkerInstanceOptions | null;
14
+ StartRunner: (runner: IRunner) => Promise<void>;
15
+ ProcessMessage: (data: MessageEvent) => Promise<void>;
16
+ }
17
+ //# sourceMappingURL=workerInstance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerInstance.d.ts","sourceRoot":"","sources":["../../src/plugins/workerInstance.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAA8B,OAAO,EAA+B,MAAM,4BAA4B,CAAA;AAGlH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAG/D,MAAM,WAAW,sBAAsB;CAEtC;AAED,8BAAsB,cAAc;;;IAUhC,YAAY,QAAS,MAAM,YAGzB;IAGF,SAAS,WAAkB,OAAO,KAAG,QAAQ,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;IAmBD,WAAW,WAAkB,OAAO,mBAKnC;IAuBD,cAAc,SAAe,YAAY,mBAsBxC;CACJ"}
@@ -0,0 +1,19 @@
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
+ export declare const useSTSWorkerManager: () => STSWorkerManager;
15
+ declare const STSWorkerManagerPlugin: {
16
+ install: (app: any, options: IWorkerManagerOptions) => void;
17
+ };
18
+ export default STSWorkerManagerPlugin;
19
+ //# sourceMappingURL=workerManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerManager.d.ts","sourceRoot":"","sources":["../../src/plugins/workerManager.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAA8B,SAAS,EAAW,SAAS,EACtC,cAAc,EAC3C,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAS7E,qBAAa,gBAAgB;;gBAWb,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,qBAAqB;IAOpD,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAGzC;IAED,SAAS,sBAA6B,cAAc,KAAG,QAAQ,SAAS,CAAC,CAkExE;IAED,iBAAiB,gBAAiB,SAAS,iBAAiB,cAAc,KAAG,SAAS,CAKrF;IAkMD,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;IAoCD,cAAc,sBAOb;CACJ;AAID,eAAO,MAAM,mBAAmB,QAAO,gBAAyE,CAAA;AAEhH,QAAA,MAAM,sBAAsB;mBAET,GAAG,WAAW,qBAAqB;CAarD,CAAA;AAED,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { IWorkerEx, IRunnerEx, ITelemetryStore } from './../plugins/stsTestWorkerDefinitions';
2
+ export declare const TelemetryStore: import("pinia").StoreDefinition<"__sts__TelemetryStore", ITelemetryStore, {}, {
3
+ RemoveWorker(workerEx: IWorkerEx): void;
4
+ RemoveRunner(workerEx: IWorkerEx, runnerEx: IRunnerEx): void;
5
+ Update(workerEx: IWorkerEx, runnerEx: IRunnerEx): void;
6
+ }>;
7
+ //# sourceMappingURL=TelemetryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryStore.d.ts","sourceRoot":"","sources":["../../src/stores/TelemetryStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,SAAS,EAAE,SAAS,EAAW,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAIpH,eAAO,MAAM,cAAc;2BAeI,SAAS;2BAIT,SAAS,YAAY,SAAS;qBAOpC,SAAS,YAAY,SAAS;EA+BrD,CAAC"}