@nsshunt/ststestrunner 1.1.105 → 1.1.107

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.
@@ -6,6 +6,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
9
10
  var __exportAll = (all, no_symbols) => {
10
11
  let target = {};
11
12
  for (var name in all) __defProp(target, name, {
@@ -36,11 +37,11 @@ let chalk = require("chalk");
36
37
  chalk = __toESM(chalk, 1);
37
38
  let axios = require("axios");
38
39
  axios = __toESM(axios, 1);
39
- let _nsshunt_stsfhirclient = require("@nsshunt/stsfhirclient");
40
40
  let node_http = require("node:http");
41
41
  node_http = __toESM(node_http, 1);
42
42
  let node_https = require("node:https");
43
43
  node_https = __toESM(node_https, 1);
44
+ let _nsshunt_stsfhirclient = require("@nsshunt/stsfhirclient");
44
45
  //#region node_modules/http-status-codes/build/es/status-codes.js
45
46
  var StatusCodes;
46
47
  (function(StatusCodes) {
@@ -493,14 +494,14 @@ var TestCaseFhirBase = class {
493
494
  if (axiosError.response.status === StatusCodes.UNAUTHORIZED) {
494
495
  this.runner.instrumentData.authenticationErrorCount++;
495
496
  this.Error(chalk.default.red(`TestCaseFhirBase:HandleError(): [${this._id}] UNAUTHORIZED - Reset Access Token`));
496
- this.runnerExecutionWorker.ResetAccessToken();
497
+ this.runnerExecutionWorker.authHelper.ResetAccessToken();
497
498
  return true;
498
499
  }
499
500
  } else this.Error(chalk.default.red(`TestCaseFhirBase:HandleError(): [${this._id}] AXIOS Error = [${axiosError}]`));
500
501
  } else if (error.message === "UNAUTHORIZED") {
501
502
  this.runner.instrumentData.authenticationErrorCount++;
502
503
  this.Error(chalk.default.red(`TestCaseFhirBase:HandleError(): [${this._id}] UNAUTHORIZED - Reset Access Token`));
503
- this.runnerExecutionWorker.ResetAccessToken();
504
+ this.runnerExecutionWorker.authHelper.ResetAccessToken();
504
505
  return true;
505
506
  }
506
507
  return false;
@@ -727,9 +728,9 @@ var TestCaseFhirQueryBase = class extends TestCaseFhirBase {
727
728
  var TestCaseFhir01 = class extends TestCaseFhirQueryBase {
728
729
  PerformExecuteQuery = async () => {
729
730
  const __snapshot1 = performance.now();
730
- await this.runnerExecutionWorker.GetAccessToken();
731
+ await this.runnerExecutionWorker.authHelper.GetAccessToken();
731
732
  this._CheckOutputLongDurationError(__snapshot1, "await this.GetAccessToken()");
732
- this.runnerExecutionWorker.ResetAccessToken();
733
+ this.runnerExecutionWorker.authHelper.ResetAccessToken();
733
734
  return null;
734
735
  };
735
736
  };
@@ -36057,78 +36058,99 @@ var ResourceDataGenerator = class {
36057
36058
  };
36058
36059
  };
36059
36060
  //#endregion
36060
- //#region src/libmodule/workerFhirTestCases.ts
36061
- var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunnerExecutionWorker {
36061
+ //#region src/libmodule/lockHelper.ts
36062
+ var import_tiny_emitter = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
36063
+ function E() {}
36064
+ E.prototype = {
36065
+ on: function(name, callback, ctx) {
36066
+ var e = this.e || (this.e = {});
36067
+ (e[name] || (e[name] = [])).push({
36068
+ fn: callback,
36069
+ ctx
36070
+ });
36071
+ return this;
36072
+ },
36073
+ once: function(name, callback, ctx) {
36074
+ var self = this;
36075
+ function listener() {
36076
+ self.off(name, listener);
36077
+ callback.apply(ctx, arguments);
36078
+ }
36079
+ listener._ = callback;
36080
+ return this.on(name, listener, ctx);
36081
+ },
36082
+ emit: function(name) {
36083
+ var data = [].slice.call(arguments, 1);
36084
+ var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
36085
+ var i = 0;
36086
+ var len = evtArr.length;
36087
+ for (; i < len; i++) evtArr[i].fn.apply(evtArr[i].ctx, data);
36088
+ return this;
36089
+ },
36090
+ off: function(name, callback) {
36091
+ var e = this.e || (this.e = {});
36092
+ var evts = e[name];
36093
+ var liveEvents = [];
36094
+ if (evts && callback) {
36095
+ for (var i = 0, len = evts.length; i < len; i++) if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);
36096
+ }
36097
+ liveEvents.length ? e[name] = liveEvents : delete e[name];
36098
+ return this;
36099
+ }
36100
+ };
36101
+ module.exports = E;
36102
+ module.exports.TinyEmitter = E;
36103
+ })))();
36104
+ var LockHelper = class {
36105
+ _onHoldKeys = {};
36106
+ GetOnHold = (holdKey) => {
36107
+ if (this._onHoldKeys[holdKey]) return true;
36108
+ return false;
36109
+ };
36110
+ WaitOnHold = async (holdKey, timeout) => {
36111
+ const start = performance.now();
36112
+ for (;;) {
36113
+ if (this._onHoldKeys[holdKey]) await (0, _nsshunt_stsutils.Sleep)(100);
36114
+ else break;
36115
+ if (performance.now() - start > timeout) throw new Error(`WorkerFhirTestCases:WaitOnHold(): Timeout: [${timeout}] reached.`);
36116
+ }
36117
+ return true;
36118
+ };
36119
+ SetOnHold = (holdKey) => {
36120
+ this._onHoldKeys[holdKey] = true;
36121
+ };
36122
+ ReleaseOnHold = (holdKey) => {
36123
+ delete this._onHoldKeys[holdKey];
36124
+ };
36125
+ };
36126
+ //#endregion
36127
+ //#region src/libmodule/authHelper.ts
36128
+ var AuthHelper = class extends import_tiny_emitter.TinyEmitter {
36062
36129
  _options;
36063
- _resourceDataGenerator;
36064
- fhirClient = void 0;
36065
36130
  _id = crypto.randomUUID();
36066
- _onHoldKeys = {};
36131
+ _lockHelper = new LockHelper();
36067
36132
  #accesssToken = null;
36068
36133
  _authMaxTimeout = 5e3;
36069
36134
  #originRegex = /^(api:\/\/\w+)/;
36070
36135
  #authAgentManager;
36071
- restFhirClient = null;
36072
36136
  logPrefix = `WorkerFhirTestCases:[${this._id}]:`;
36073
36137
  constructor(options) {
36074
36138
  super();
36075
36139
  this._options = options;
36076
- this._resourceDataGenerator = new ResourceDataGenerator();
36077
36140
  this.#authAgentManager = this.GetAuthAgentManager();
36078
36141
  }
36079
36142
  Warning = (message) => {
36080
- this.logger.warn(`${this.logPrefix}${message}`);
36143
+ this._options.logger.warn(`${this.logPrefix}${message}`);
36081
36144
  };
36082
36145
  Error = (message) => {
36083
- this.logger.error(`${this.logPrefix}${message}`);
36146
+ this._options.logger.error(`${this.logPrefix}${message}`);
36084
36147
  };
36085
36148
  Debug = (message) => {
36086
- this.logger.debug(`${this.logPrefix}${message}`);
36149
+ this._options.logger.debug(`${this.logPrefix}${message}`);
36087
36150
  };
36088
36151
  get id() {
36089
36152
  return this._id;
36090
36153
  }
36091
- get resourceDataGenerator() {
36092
- return this._resourceDataGenerator;
36093
- }
36094
- get logger() {
36095
- return this._options.logger;
36096
- }
36097
- CreateAsyncRunner = async (testRunnerTelemetryPayload) => {
36098
- return AsyncRunnerFactory.CreateAsyncRunner(this, testRunnerTelemetryPayload);
36099
- };
36100
- async ProcessPreTerminateWorkerMessage(messagePayload) {
36101
- this.logger.debug(chalk.default.rgb(220, 100, 0)(`ProcessPreTerminateWorkerMessage(): [${JSON.stringify(messagePayload, null, 2)}]`));
36102
- if (this.fhirClient) {
36103
- this.logger.debug(chalk.default.rgb(220, 100, 0)(`ProcessPreTerminateWorkerMessage(): ResetSocket()`));
36104
- this.fhirClient.ResetSocket();
36105
- this.fhirClient = void 0;
36106
- }
36107
- await (0, _nsshunt_stsutils.Sleep)(250);
36108
- return {
36109
- originalMessage: { ...messagePayload },
36110
- myresponsepreterminate: `I got: [${JSON.stringify(messagePayload.payload.data)}]`
36111
- };
36112
- }
36113
- GetOnHold = (holdKey) => {
36114
- if (this._onHoldKeys[holdKey]) return true;
36115
- return false;
36116
- };
36117
- WaitOnHold = async (holdKey, timeout) => {
36118
- const start = performance.now();
36119
- for (;;) {
36120
- if (this._onHoldKeys[holdKey]) await (0, _nsshunt_stsutils.Sleep)(100);
36121
- else break;
36122
- if (performance.now() - start > timeout) throw new Error(`WorkerFhirTestCases:WaitOnHold(): Timeout: [${timeout}] reached.`);
36123
- }
36124
- return true;
36125
- };
36126
- SetOnHold = (holdKey) => {
36127
- this._onHoldKeys[holdKey] = true;
36128
- };
36129
- ReleaseOnHold = (holdKey) => {
36130
- delete this._onHoldKeys[holdKey];
36131
- };
36132
36154
  defaultAgentOptions = {
36133
36155
  keepAlive: true,
36134
36156
  maxSockets: 10,
@@ -36184,9 +36206,6 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36184
36206
  });
36185
36207
  return agentManager;
36186
36208
  };
36187
- GetFhirAgentManager = () => {
36188
- return this.GetAgentManager(this._options.fhirOptions.stsfhiragentOptions);
36189
- };
36190
36209
  GetAuthAgentManager = () => {
36191
36210
  return this.GetAgentManager(this._options.authOptions.asagentoptions);
36192
36211
  };
@@ -36242,14 +36261,14 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36242
36261
  retryJitterMs: 150,
36243
36262
  maxRetryDurationMs: 5e3,
36244
36263
  onRetryAttempt: (attempt, error, delayMs) => {
36245
- this._options.runner.instrumentData.authenticationErrorCount++;
36246
- this._options.runner.instrumentData.authenticationRetryCount++;
36264
+ this.emit("authenticationErrorCount", 1);
36265
+ this.emit("authenticationRetryCount", 1);
36247
36266
  const message = `GetAPITokenFromAuthServerUsingScope(): [${this._id}] Retry #${attempt} after ${delayMs}ms due to ${error.code || error.response?.status}`;
36248
36267
  this.Warning(message);
36249
- this._options.runner.instrumentData.message.push(chalk.default.red(message));
36268
+ this.emit("logMessage", chalk.default.red(message));
36250
36269
  }
36251
36270
  })(url, axiosConfig.config);
36252
- this._options.runner.instrumentData.authenticationCount++;
36271
+ this.emit("authenticationCount", 1);
36253
36272
  stage = "7";
36254
36273
  if (retVal.status) {
36255
36274
  if (retVal.status !== 200) this.Warning(chalk.default.magenta(`GetAPITokenFromAuthServerUsingScope(): [${this._id}] Invalid response from server: [${retVal.status}]`));
@@ -36287,11 +36306,11 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36287
36306
  if (this.#accesssToken) return this.#accesssToken;
36288
36307
  const lockKey = "GetAccessToken";
36289
36308
  const lockTimeout = 6e4;
36290
- if (this.GetOnHold(lockKey) === true) {
36309
+ if (this._lockHelper.GetOnHold(lockKey) === true) {
36291
36310
  this.Debug(chalk.default.magenta(`GetAccessToken(): accesssToken does not exist - some other client setting up the new accesssToken (on hold/lock), lock key: [${lockKey}] - waiting ...`));
36292
36311
  try {
36293
36312
  const miniStart = performance.now();
36294
- await this.WaitOnHold(lockKey, lockTimeout);
36313
+ await this._lockHelper.WaitOnHold(lockKey, lockTimeout);
36295
36314
  this.Debug(chalk.default.yellow(`GetAccessToken(): hold (lock) released after: [${performance.now() - miniStart}ms], lock key: [${lockKey}]`));
36296
36315
  if (this.#accesssToken) {
36297
36316
  this.Debug(chalk.default.green(`GetAccessToken(): Getting existing accesssToken (post hold release), lock key: [${lockKey}]`));
@@ -36306,7 +36325,7 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36306
36325
  }
36307
36326
  this.Debug(chalk.default.yellow(`GetAccessToken(): accesssToken does not exist - setting up new accesssToken`));
36308
36327
  this.Debug(chalk.default.yellow(`GetAccessToken(): setting hold (lock), lock key: [${lockKey}]`));
36309
- this.SetOnHold(lockKey);
36328
+ this._lockHelper.SetOnHold(lockKey);
36310
36329
  timeout = setTimeout(() => {
36311
36330
  this.Warning(chalk.default.magenta(`GetAccessToken(): Timeout: [${this._authMaxTimeout}] exceeded for getting access token ...`));
36312
36331
  }, this._authMaxTimeout);
@@ -36322,8 +36341,8 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36322
36341
  const totalTime = performance.now() - start;
36323
36342
  if (totalTime > this._authMaxTimeout) this.Warning(chalk.default.magenta(`GetAccessToken(): The total time for getting the access token: [${totalTime}]`));
36324
36343
  this.#accesssToken = workingAaccesssToken;
36325
- this.ReleaseOnHold(lockKey);
36326
- this.Debug(chalk.default.yellow(`GetAccessToken(): release hold (lock) Time taken for get access token: [${performance.now() - start}ms]`));
36344
+ this._lockHelper.ReleaseOnHold(lockKey);
36345
+ this.Debug(chalk.default.yellow(`GetAccessToken(): release hold (lock) Time taken for get access token: [${performance.now() - start}ms], lock key: [${lockKey}]`));
36327
36346
  return this.#accesssToken;
36328
36347
  } catch (error) {
36329
36348
  if (timeout) clearTimeout(timeout);
@@ -36360,16 +36379,100 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36360
36379
  ResetAccessToken = () => {
36361
36380
  this.#accesssToken = null;
36362
36381
  };
36382
+ };
36383
+ //#endregion
36384
+ //#region src/libmodule/clientHelper.ts
36385
+ var ClientHelper = class extends import_tiny_emitter.TinyEmitter {
36386
+ _options;
36387
+ fhirClient = void 0;
36388
+ _id = crypto.randomUUID();
36389
+ _lockHelper = new LockHelper();
36390
+ restFhirClient = null;
36391
+ logPrefix = `WorkerFhirTestCases:[${this._id}]:`;
36392
+ constructor(options) {
36393
+ super();
36394
+ this._options = options;
36395
+ }
36396
+ Warning = (message) => {
36397
+ this._options.logger.warn(`${this.logPrefix}${message}`);
36398
+ };
36399
+ Error = (message) => {
36400
+ this._options.logger.error(`${this.logPrefix}${message}`);
36401
+ };
36402
+ Debug = (message) => {
36403
+ this._options.logger.debug(`${this.logPrefix}${message}`);
36404
+ };
36405
+ get id() {
36406
+ return this._id;
36407
+ }
36408
+ defaultAgentOptions = {
36409
+ keepAlive: true,
36410
+ maxSockets: 10,
36411
+ maxTotalSockets: 20,
36412
+ maxFreeSockets: 10,
36413
+ timeout: 6e4,
36414
+ rejectUnauthorized: false
36415
+ };
36416
+ stressTestAgentOptions = {
36417
+ keepAlive: true,
36418
+ maxSockets: 200,
36419
+ maxTotalSockets: 500,
36420
+ maxFreeSockets: 50,
36421
+ timeout: 3e4,
36422
+ rejectUnauthorized: false
36423
+ };
36424
+ stressTestExtremeAgentOptions = {
36425
+ keepAlive: true,
36426
+ maxSockets: 500,
36427
+ maxTotalSockets: 1e3,
36428
+ maxFreeSockets: 500,
36429
+ timeout: 3e4,
36430
+ rejectUnauthorized: false
36431
+ };
36432
+ GetAgentManager = (testingAgentOptions) => {
36433
+ let agentManager = void 0;
36434
+ let agentOptions = void 0;
36435
+ switch (testingAgentOptions.nodeAgentMode) {
36436
+ case "no-agent": break;
36437
+ case "custom-agent-options":
36438
+ if (testingAgentOptions.nodeAgentCustomOptions) agentOptions = { ...testingAgentOptions.nodeAgentCustomOptions };
36439
+ else agentOptions = { ...this.defaultAgentOptions };
36440
+ break;
36441
+ case "default-agent-options":
36442
+ agentOptions = { ...this.defaultAgentOptions };
36443
+ break;
36444
+ case "stress-test-agent-options":
36445
+ agentOptions = { ...this.stressTestAgentOptions };
36446
+ break;
36447
+ case "stress-test-extreme-agent-options":
36448
+ agentOptions = { ...this.stressTestExtremeAgentOptions };
36449
+ break;
36450
+ default: throw new Error(`TestCaseFhirBase:GetAgentManager(): [${this._id}] unknown nodeAgentMode: [${testingAgentOptions.nodeAgentMode}]`);
36451
+ }
36452
+ if (agentOptions) agentManager = (0, _nsshunt_stsutils.createAgentManager)({
36453
+ agentOptions,
36454
+ httpAgentFactory(options) {
36455
+ return new node_http.default.Agent(options);
36456
+ },
36457
+ httpsAgentFactory(options) {
36458
+ return new node_https.default.Agent(options);
36459
+ }
36460
+ });
36461
+ return agentManager;
36462
+ };
36463
+ GetFhirAgentManager = () => {
36464
+ return this.GetAgentManager(this._options.fhirOptions.stsfhiragentOptions);
36465
+ };
36363
36466
  GetFhirSocketClient = async () => {
36364
36467
  try {
36365
36468
  if (this.fhirClient) return this.fhirClient;
36366
36469
  const lockKey = "GetFhirSocketClient";
36367
36470
  const lockTimeout = 6e4;
36368
- if (this.GetOnHold(lockKey) === true) {
36471
+ if (this._lockHelper.GetOnHold(lockKey) === true) {
36369
36472
  this.Debug(chalk.default.magenta(`GetFhirSocketClient(): fhir client does not exist - some other client setting up the new client (on hold/lock), lock key: [${lockKey}] - waiting ...`));
36370
36473
  try {
36371
36474
  const start = performance.now();
36372
- await this.WaitOnHold(lockKey, lockTimeout);
36475
+ await this._lockHelper.WaitOnHold(lockKey, lockTimeout);
36373
36476
  this.Debug(chalk.default.yellow(`GetFhirSocketClient(): hold (lock) released after: [${performance.now() - start}ms], lock key: [${lockKey}]`));
36374
36477
  if (this.fhirClient) {
36375
36478
  this.Debug(chalk.default.green(`GetFhirSocketClient(): Getting existing fhir client (post hold release), lock key: [${lockKey}]`));
@@ -36385,7 +36488,7 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36385
36488
  const start = performance.now();
36386
36489
  this.Debug(chalk.default.yellow(`GetFhirSocketClient(): fhir client does not exist - setting up new client`));
36387
36490
  this.Debug(chalk.default.yellow(`GetFhirSocketClient(): setting hold (lock), lock key: [${lockKey}]`));
36388
- this.SetOnHold(lockKey);
36491
+ this._lockHelper.SetOnHold(lockKey);
36389
36492
  const fhirOptions = this._options.fhirOptions;
36390
36493
  const options = {
36391
36494
  fhirServerEndpoint: fhirOptions.stsfhirserverendpoint,
@@ -36397,18 +36500,18 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36397
36500
  baseUrl: fhirOptions.stsfhirbaseurl,
36398
36501
  agentManager: this.GetFhirAgentManager(),
36399
36502
  joinRooms: [],
36400
- logger: this.logger,
36503
+ logger: this._options.logger,
36401
36504
  verboseLogging: true,
36402
- GetConnectionAccessToken: this.GetAccessTokenForSocketClientAccess,
36403
- GetAccessToken: this.GetAccessToken
36505
+ GetConnectionAccessToken: this._options.authHelper.GetAccessTokenForSocketClientAccess,
36506
+ GetAccessToken: this._options.authHelper.GetAccessToken
36404
36507
  };
36405
36508
  let workingFhirClient;
36406
- if (this._options.runner.options.fhirOptions.stsfhirsocketclientmode === "socket-client-all-in-one") workingFhirClient = new _nsshunt_stsfhirclient.FhirSocketClientAllInOne("FhirSocketClient", options);
36509
+ if (this._options.fhirOptions.stsfhirsocketclientmode === "socket-client-all-in-one") workingFhirClient = new _nsshunt_stsfhirclient.FhirSocketClientAllInOne("FhirSocketClient", options);
36407
36510
  else workingFhirClient = new _nsshunt_stsfhirclient.FhirSocketClientIndividual("FhirSocketClient", options);
36408
36511
  await workingFhirClient.WaitForSocketConnected();
36409
36512
  this.Debug(chalk.default.yellow(`GetFhirSocketClient(): setting fhir client into object`));
36410
36513
  this.fhirClient = workingFhirClient;
36411
- this.ReleaseOnHold(lockKey);
36514
+ this._lockHelper.ReleaseOnHold(lockKey);
36412
36515
  this.Debug(chalk.default.yellow(`GetFhirSocketClient(): release hold (lock) Time taken for socket connection and set object: [${performance.now() - start}ms], lock key: [${lockKey}]`));
36413
36516
  return this.fhirClient;
36414
36517
  } catch (error) {
@@ -36419,20 +36522,18 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36419
36522
  GetRESTClient = async () => {
36420
36523
  if (this.restFhirClient) return this.restFhirClient;
36421
36524
  const onRetryAttempt = (attempt, error, delayMs) => {
36422
- this._options.runner.instrumentData.errorCount++;
36423
- this._options.runner.instrumentData.requestCount++;
36424
36525
  const message = `TestCaseFhirBase:onRetryAttempt(): [${this._id}] Retry #${attempt} after ${delayMs}ms due to ${error.code || error.response?.status}`;
36425
36526
  this.Warning(message);
36426
- this._options.runner.instrumentData.message.push(chalk.default.red(message));
36527
+ this.emit("retry", message);
36427
36528
  };
36428
36529
  const fhirOptions = this._options.fhirOptions;
36429
36530
  const fhirRESTClient = new _nsshunt_stsfhirclient.FhirRESTClient({
36430
- GetAccessToken: this.GetAccessToken,
36531
+ GetAccessToken: this._options.authHelper.GetAccessToken,
36431
36532
  user: "USR_user01@stsmda.com.au",
36432
36533
  endpoint: fhirOptions.stsfhirserverendpoint,
36433
36534
  stsfhirapiroot: fhirOptions.stsfhirapiroot,
36434
36535
  stsfhirport: fhirOptions.stsfhirport,
36435
- logger: this.logger,
36536
+ logger: this._options.logger,
36436
36537
  agentManager: this.GetFhirAgentManager(),
36437
36538
  onRetryAttempt
36438
36539
  });
@@ -36441,12 +36542,136 @@ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunn
36441
36542
  };
36442
36543
  GetClient = async () => {
36443
36544
  let client;
36444
- if (this._options.runner.options.fhirOptions.stsfhirsocketclientmode === "no-socket-client") client = await this.GetRESTClient();
36545
+ if (this._options.fhirOptions.stsfhirsocketclientmode === "no-socket-client") client = await this.GetRESTClient();
36445
36546
  else client = await this.GetFhirSocketClient();
36446
36547
  return client;
36447
36548
  };
36448
36549
  };
36449
36550
  //#endregion
36551
+ //#region src/libmodule/workerFhirTestCases.ts
36552
+ var WorkerFhirTestCases = class extends _nsshunt_stsrunnerframework.AbstractRunnerExecutionWorker {
36553
+ _options;
36554
+ _resourceDataGenerator;
36555
+ fhirClient = void 0;
36556
+ _id = crypto.randomUUID();
36557
+ _clientHelper;
36558
+ _authHelper;
36559
+ restFhirClient = null;
36560
+ logPrefix = `WorkerFhirTestCases:[${this._id}]:`;
36561
+ constructor(options) {
36562
+ super();
36563
+ this._options = options;
36564
+ this._resourceDataGenerator = new ResourceDataGenerator();
36565
+ this._authHelper = new AuthHelper({
36566
+ authOptions: options.authOptions,
36567
+ logger: options.logger
36568
+ });
36569
+ this._clientHelper = new ClientHelper({
36570
+ authHelper: this._authHelper,
36571
+ logger: options.logger,
36572
+ fhirOptions: options.fhirOptions
36573
+ });
36574
+ }
36575
+ get authHelper() {
36576
+ return this._authHelper;
36577
+ }
36578
+ Warning = (message) => {
36579
+ this.logger.warn(`${this.logPrefix}${message}`);
36580
+ };
36581
+ Error = (message) => {
36582
+ this.logger.error(`${this.logPrefix}${message}`);
36583
+ };
36584
+ Debug = (message) => {
36585
+ this.logger.debug(`${this.logPrefix}${message}`);
36586
+ };
36587
+ get id() {
36588
+ return this._id;
36589
+ }
36590
+ get resourceDataGenerator() {
36591
+ return this._resourceDataGenerator;
36592
+ }
36593
+ get logger() {
36594
+ return this._options.logger;
36595
+ }
36596
+ CreateAsyncRunner = async (testRunnerTelemetryPayload) => {
36597
+ return AsyncRunnerFactory.CreateAsyncRunner(this, testRunnerTelemetryPayload);
36598
+ };
36599
+ async ProcessPreTerminateWorkerMessage(messagePayload) {
36600
+ this.logger.debug(chalk.default.rgb(220, 100, 0)(`ProcessPreTerminateWorkerMessage(): [${JSON.stringify(messagePayload, null, 2)}]`));
36601
+ if (this.fhirClient) {
36602
+ this.logger.debug(chalk.default.rgb(220, 100, 0)(`ProcessPreTerminateWorkerMessage(): ResetSocket()`));
36603
+ this.fhirClient.ResetSocket();
36604
+ this.fhirClient = void 0;
36605
+ }
36606
+ await (0, _nsshunt_stsutils.Sleep)(250);
36607
+ return {
36608
+ originalMessage: { ...messagePayload },
36609
+ myresponsepreterminate: `I got: [${JSON.stringify(messagePayload.payload.data)}]`
36610
+ };
36611
+ }
36612
+ defaultAgentOptions = {
36613
+ keepAlive: true,
36614
+ maxSockets: 10,
36615
+ maxTotalSockets: 20,
36616
+ maxFreeSockets: 10,
36617
+ timeout: 6e4,
36618
+ rejectUnauthorized: false
36619
+ };
36620
+ stressTestAgentOptions = {
36621
+ keepAlive: true,
36622
+ maxSockets: 200,
36623
+ maxTotalSockets: 500,
36624
+ maxFreeSockets: 50,
36625
+ timeout: 3e4,
36626
+ rejectUnauthorized: false
36627
+ };
36628
+ stressTestExtremeAgentOptions = {
36629
+ keepAlive: true,
36630
+ maxSockets: 500,
36631
+ maxTotalSockets: 1e3,
36632
+ maxFreeSockets: 500,
36633
+ timeout: 3e4,
36634
+ rejectUnauthorized: false
36635
+ };
36636
+ GetAgentManager = (testingAgentOptions) => {
36637
+ let agentManager = void 0;
36638
+ let agentOptions = void 0;
36639
+ switch (testingAgentOptions.nodeAgentMode) {
36640
+ case "no-agent": break;
36641
+ case "custom-agent-options":
36642
+ if (testingAgentOptions.nodeAgentCustomOptions) agentOptions = { ...testingAgentOptions.nodeAgentCustomOptions };
36643
+ else agentOptions = { ...this.defaultAgentOptions };
36644
+ break;
36645
+ case "default-agent-options":
36646
+ agentOptions = { ...this.defaultAgentOptions };
36647
+ break;
36648
+ case "stress-test-agent-options":
36649
+ agentOptions = { ...this.stressTestAgentOptions };
36650
+ break;
36651
+ case "stress-test-extreme-agent-options":
36652
+ agentOptions = { ...this.stressTestExtremeAgentOptions };
36653
+ break;
36654
+ default: throw new Error(`TestCaseFhirBase:GetAgentManager(): [${this._id}] unknown nodeAgentMode: [${testingAgentOptions.nodeAgentMode}]`);
36655
+ }
36656
+ if (agentOptions) agentManager = (0, _nsshunt_stsutils.createAgentManager)({
36657
+ agentOptions,
36658
+ httpAgentFactory(options) {
36659
+ return new node_http.default.Agent(options);
36660
+ },
36661
+ httpsAgentFactory(options) {
36662
+ return new node_https.default.Agent(options);
36663
+ }
36664
+ });
36665
+ return agentManager;
36666
+ };
36667
+ GetFhirAgentManager = () => {
36668
+ return this.GetAgentManager(this._options.fhirOptions.stsfhiragentOptions);
36669
+ };
36670
+ GetClient = async () => {
36671
+ return this._clientHelper.GetClient();
36672
+ };
36673
+ };
36674
+ //#endregion
36450
36675
  exports.WorkerFhirTestCases = WorkerFhirTestCases;
36451
36676
 
36452
36677
  //# sourceMappingURL=ststestrunner.cjs.map