@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.
@@ -2,11 +2,12 @@ import { AbstractRunnerExecutionWorker } from "@nsshunt/stsrunnerframework";
2
2
  import { STSAxiosConfig, Sleep, createAgentManager, isNode } from "@nsshunt/stsutils";
3
3
  import chalk from "chalk";
4
4
  import axios from "axios";
5
- import { FhirRESTClient, FhirSocketClientAllInOne, FhirSocketClientIndividual, createRetryAxiosClient } from "@nsshunt/stsfhirclient";
6
5
  import http from "node:http";
7
6
  import https from "node:https";
7
+ import { FhirRESTClient, FhirSocketClientAllInOne, FhirSocketClientIndividual, createRetryAxiosClient } from "@nsshunt/stsfhirclient";
8
8
  //#region \0rolldown/runtime.js
9
9
  var __defProp = Object.defineProperty;
10
+ var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
10
11
  var __exportAll = (all, no_symbols) => {
11
12
  let target = {};
12
13
  for (var name in all) __defProp(target, name, {
@@ -469,14 +470,14 @@ var TestCaseFhirBase = class {
469
470
  if (axiosError.response.status === StatusCodes.UNAUTHORIZED) {
470
471
  this.runner.instrumentData.authenticationErrorCount++;
471
472
  this.Error(chalk.red(`TestCaseFhirBase:HandleError(): [${this._id}] UNAUTHORIZED - Reset Access Token`));
472
- this.runnerExecutionWorker.ResetAccessToken();
473
+ this.runnerExecutionWorker.authHelper.ResetAccessToken();
473
474
  return true;
474
475
  }
475
476
  } else this.Error(chalk.red(`TestCaseFhirBase:HandleError(): [${this._id}] AXIOS Error = [${axiosError}]`));
476
477
  } else if (error.message === "UNAUTHORIZED") {
477
478
  this.runner.instrumentData.authenticationErrorCount++;
478
479
  this.Error(chalk.red(`TestCaseFhirBase:HandleError(): [${this._id}] UNAUTHORIZED - Reset Access Token`));
479
- this.runnerExecutionWorker.ResetAccessToken();
480
+ this.runnerExecutionWorker.authHelper.ResetAccessToken();
480
481
  return true;
481
482
  }
482
483
  return false;
@@ -703,9 +704,9 @@ var TestCaseFhirQueryBase = class extends TestCaseFhirBase {
703
704
  var TestCaseFhir01 = class extends TestCaseFhirQueryBase {
704
705
  PerformExecuteQuery = async () => {
705
706
  const __snapshot1 = performance.now();
706
- await this.runnerExecutionWorker.GetAccessToken();
707
+ await this.runnerExecutionWorker.authHelper.GetAccessToken();
707
708
  this._CheckOutputLongDurationError(__snapshot1, "await this.GetAccessToken()");
708
- this.runnerExecutionWorker.ResetAccessToken();
709
+ this.runnerExecutionWorker.authHelper.ResetAccessToken();
709
710
  return null;
710
711
  };
711
712
  };
@@ -36033,78 +36034,99 @@ var ResourceDataGenerator = class {
36033
36034
  };
36034
36035
  };
36035
36036
  //#endregion
36036
- //#region src/libmodule/workerFhirTestCases.ts
36037
- var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36037
+ //#region src/libmodule/lockHelper.ts
36038
+ var import_tiny_emitter = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
36039
+ function E() {}
36040
+ E.prototype = {
36041
+ on: function(name, callback, ctx) {
36042
+ var e = this.e || (this.e = {});
36043
+ (e[name] || (e[name] = [])).push({
36044
+ fn: callback,
36045
+ ctx
36046
+ });
36047
+ return this;
36048
+ },
36049
+ once: function(name, callback, ctx) {
36050
+ var self = this;
36051
+ function listener() {
36052
+ self.off(name, listener);
36053
+ callback.apply(ctx, arguments);
36054
+ }
36055
+ listener._ = callback;
36056
+ return this.on(name, listener, ctx);
36057
+ },
36058
+ emit: function(name) {
36059
+ var data = [].slice.call(arguments, 1);
36060
+ var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
36061
+ var i = 0;
36062
+ var len = evtArr.length;
36063
+ for (; i < len; i++) evtArr[i].fn.apply(evtArr[i].ctx, data);
36064
+ return this;
36065
+ },
36066
+ off: function(name, callback) {
36067
+ var e = this.e || (this.e = {});
36068
+ var evts = e[name];
36069
+ var liveEvents = [];
36070
+ if (evts && callback) {
36071
+ for (var i = 0, len = evts.length; i < len; i++) if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);
36072
+ }
36073
+ liveEvents.length ? e[name] = liveEvents : delete e[name];
36074
+ return this;
36075
+ }
36076
+ };
36077
+ module.exports = E;
36078
+ module.exports.TinyEmitter = E;
36079
+ })))();
36080
+ var LockHelper = class {
36081
+ _onHoldKeys = {};
36082
+ GetOnHold = (holdKey) => {
36083
+ if (this._onHoldKeys[holdKey]) return true;
36084
+ return false;
36085
+ };
36086
+ WaitOnHold = async (holdKey, timeout) => {
36087
+ const start = performance.now();
36088
+ for (;;) {
36089
+ if (this._onHoldKeys[holdKey]) await Sleep(100);
36090
+ else break;
36091
+ if (performance.now() - start > timeout) throw new Error(`WorkerFhirTestCases:WaitOnHold(): Timeout: [${timeout}] reached.`);
36092
+ }
36093
+ return true;
36094
+ };
36095
+ SetOnHold = (holdKey) => {
36096
+ this._onHoldKeys[holdKey] = true;
36097
+ };
36098
+ ReleaseOnHold = (holdKey) => {
36099
+ delete this._onHoldKeys[holdKey];
36100
+ };
36101
+ };
36102
+ //#endregion
36103
+ //#region src/libmodule/authHelper.ts
36104
+ var AuthHelper = class extends import_tiny_emitter.TinyEmitter {
36038
36105
  _options;
36039
- _resourceDataGenerator;
36040
- fhirClient = void 0;
36041
36106
  _id = crypto.randomUUID();
36042
- _onHoldKeys = {};
36107
+ _lockHelper = new LockHelper();
36043
36108
  #accesssToken = null;
36044
36109
  _authMaxTimeout = 5e3;
36045
36110
  #originRegex = /^(api:\/\/\w+)/;
36046
36111
  #authAgentManager;
36047
- restFhirClient = null;
36048
36112
  logPrefix = `WorkerFhirTestCases:[${this._id}]:`;
36049
36113
  constructor(options) {
36050
36114
  super();
36051
36115
  this._options = options;
36052
- this._resourceDataGenerator = new ResourceDataGenerator();
36053
36116
  this.#authAgentManager = this.GetAuthAgentManager();
36054
36117
  }
36055
36118
  Warning = (message) => {
36056
- this.logger.warn(`${this.logPrefix}${message}`);
36119
+ this._options.logger.warn(`${this.logPrefix}${message}`);
36057
36120
  };
36058
36121
  Error = (message) => {
36059
- this.logger.error(`${this.logPrefix}${message}`);
36122
+ this._options.logger.error(`${this.logPrefix}${message}`);
36060
36123
  };
36061
36124
  Debug = (message) => {
36062
- this.logger.debug(`${this.logPrefix}${message}`);
36125
+ this._options.logger.debug(`${this.logPrefix}${message}`);
36063
36126
  };
36064
36127
  get id() {
36065
36128
  return this._id;
36066
36129
  }
36067
- get resourceDataGenerator() {
36068
- return this._resourceDataGenerator;
36069
- }
36070
- get logger() {
36071
- return this._options.logger;
36072
- }
36073
- CreateAsyncRunner = async (testRunnerTelemetryPayload) => {
36074
- return AsyncRunnerFactory.CreateAsyncRunner(this, testRunnerTelemetryPayload);
36075
- };
36076
- async ProcessPreTerminateWorkerMessage(messagePayload) {
36077
- this.logger.debug(chalk.rgb(220, 100, 0)(`ProcessPreTerminateWorkerMessage(): [${JSON.stringify(messagePayload, null, 2)}]`));
36078
- if (this.fhirClient) {
36079
- this.logger.debug(chalk.rgb(220, 100, 0)(`ProcessPreTerminateWorkerMessage(): ResetSocket()`));
36080
- this.fhirClient.ResetSocket();
36081
- this.fhirClient = void 0;
36082
- }
36083
- await Sleep(250);
36084
- return {
36085
- originalMessage: { ...messagePayload },
36086
- myresponsepreterminate: `I got: [${JSON.stringify(messagePayload.payload.data)}]`
36087
- };
36088
- }
36089
- GetOnHold = (holdKey) => {
36090
- if (this._onHoldKeys[holdKey]) return true;
36091
- return false;
36092
- };
36093
- WaitOnHold = async (holdKey, timeout) => {
36094
- const start = performance.now();
36095
- for (;;) {
36096
- if (this._onHoldKeys[holdKey]) await Sleep(100);
36097
- else break;
36098
- if (performance.now() - start > timeout) throw new Error(`WorkerFhirTestCases:WaitOnHold(): Timeout: [${timeout}] reached.`);
36099
- }
36100
- return true;
36101
- };
36102
- SetOnHold = (holdKey) => {
36103
- this._onHoldKeys[holdKey] = true;
36104
- };
36105
- ReleaseOnHold = (holdKey) => {
36106
- delete this._onHoldKeys[holdKey];
36107
- };
36108
36130
  defaultAgentOptions = {
36109
36131
  keepAlive: true,
36110
36132
  maxSockets: 10,
@@ -36160,9 +36182,6 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36160
36182
  });
36161
36183
  return agentManager;
36162
36184
  };
36163
- GetFhirAgentManager = () => {
36164
- return this.GetAgentManager(this._options.fhirOptions.stsfhiragentOptions);
36165
- };
36166
36185
  GetAuthAgentManager = () => {
36167
36186
  return this.GetAgentManager(this._options.authOptions.asagentoptions);
36168
36187
  };
@@ -36218,14 +36237,14 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36218
36237
  retryJitterMs: 150,
36219
36238
  maxRetryDurationMs: 5e3,
36220
36239
  onRetryAttempt: (attempt, error, delayMs) => {
36221
- this._options.runner.instrumentData.authenticationErrorCount++;
36222
- this._options.runner.instrumentData.authenticationRetryCount++;
36240
+ this.emit("authenticationErrorCount", 1);
36241
+ this.emit("authenticationRetryCount", 1);
36223
36242
  const message = `GetAPITokenFromAuthServerUsingScope(): [${this._id}] Retry #${attempt} after ${delayMs}ms due to ${error.code || error.response?.status}`;
36224
36243
  this.Warning(message);
36225
- this._options.runner.instrumentData.message.push(chalk.red(message));
36244
+ this.emit("logMessage", chalk.red(message));
36226
36245
  }
36227
36246
  })(url, axiosConfig.config);
36228
- this._options.runner.instrumentData.authenticationCount++;
36247
+ this.emit("authenticationCount", 1);
36229
36248
  stage = "7";
36230
36249
  if (retVal.status) {
36231
36250
  if (retVal.status !== 200) this.Warning(chalk.magenta(`GetAPITokenFromAuthServerUsingScope(): [${this._id}] Invalid response from server: [${retVal.status}]`));
@@ -36263,11 +36282,11 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36263
36282
  if (this.#accesssToken) return this.#accesssToken;
36264
36283
  const lockKey = "GetAccessToken";
36265
36284
  const lockTimeout = 6e4;
36266
- if (this.GetOnHold(lockKey) === true) {
36285
+ if (this._lockHelper.GetOnHold(lockKey) === true) {
36267
36286
  this.Debug(chalk.magenta(`GetAccessToken(): accesssToken does not exist - some other client setting up the new accesssToken (on hold/lock), lock key: [${lockKey}] - waiting ...`));
36268
36287
  try {
36269
36288
  const miniStart = performance.now();
36270
- await this.WaitOnHold(lockKey, lockTimeout);
36289
+ await this._lockHelper.WaitOnHold(lockKey, lockTimeout);
36271
36290
  this.Debug(chalk.yellow(`GetAccessToken(): hold (lock) released after: [${performance.now() - miniStart}ms], lock key: [${lockKey}]`));
36272
36291
  if (this.#accesssToken) {
36273
36292
  this.Debug(chalk.green(`GetAccessToken(): Getting existing accesssToken (post hold release), lock key: [${lockKey}]`));
@@ -36282,7 +36301,7 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36282
36301
  }
36283
36302
  this.Debug(chalk.yellow(`GetAccessToken(): accesssToken does not exist - setting up new accesssToken`));
36284
36303
  this.Debug(chalk.yellow(`GetAccessToken(): setting hold (lock), lock key: [${lockKey}]`));
36285
- this.SetOnHold(lockKey);
36304
+ this._lockHelper.SetOnHold(lockKey);
36286
36305
  timeout = setTimeout(() => {
36287
36306
  this.Warning(chalk.magenta(`GetAccessToken(): Timeout: [${this._authMaxTimeout}] exceeded for getting access token ...`));
36288
36307
  }, this._authMaxTimeout);
@@ -36298,8 +36317,8 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36298
36317
  const totalTime = performance.now() - start;
36299
36318
  if (totalTime > this._authMaxTimeout) this.Warning(chalk.magenta(`GetAccessToken(): The total time for getting the access token: [${totalTime}]`));
36300
36319
  this.#accesssToken = workingAaccesssToken;
36301
- this.ReleaseOnHold(lockKey);
36302
- this.Debug(chalk.yellow(`GetAccessToken(): release hold (lock) Time taken for get access token: [${performance.now() - start}ms]`));
36320
+ this._lockHelper.ReleaseOnHold(lockKey);
36321
+ this.Debug(chalk.yellow(`GetAccessToken(): release hold (lock) Time taken for get access token: [${performance.now() - start}ms], lock key: [${lockKey}]`));
36303
36322
  return this.#accesssToken;
36304
36323
  } catch (error) {
36305
36324
  if (timeout) clearTimeout(timeout);
@@ -36336,16 +36355,100 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36336
36355
  ResetAccessToken = () => {
36337
36356
  this.#accesssToken = null;
36338
36357
  };
36358
+ };
36359
+ //#endregion
36360
+ //#region src/libmodule/clientHelper.ts
36361
+ var ClientHelper = class extends import_tiny_emitter.TinyEmitter {
36362
+ _options;
36363
+ fhirClient = void 0;
36364
+ _id = crypto.randomUUID();
36365
+ _lockHelper = new LockHelper();
36366
+ restFhirClient = null;
36367
+ logPrefix = `WorkerFhirTestCases:[${this._id}]:`;
36368
+ constructor(options) {
36369
+ super();
36370
+ this._options = options;
36371
+ }
36372
+ Warning = (message) => {
36373
+ this._options.logger.warn(`${this.logPrefix}${message}`);
36374
+ };
36375
+ Error = (message) => {
36376
+ this._options.logger.error(`${this.logPrefix}${message}`);
36377
+ };
36378
+ Debug = (message) => {
36379
+ this._options.logger.debug(`${this.logPrefix}${message}`);
36380
+ };
36381
+ get id() {
36382
+ return this._id;
36383
+ }
36384
+ defaultAgentOptions = {
36385
+ keepAlive: true,
36386
+ maxSockets: 10,
36387
+ maxTotalSockets: 20,
36388
+ maxFreeSockets: 10,
36389
+ timeout: 6e4,
36390
+ rejectUnauthorized: false
36391
+ };
36392
+ stressTestAgentOptions = {
36393
+ keepAlive: true,
36394
+ maxSockets: 200,
36395
+ maxTotalSockets: 500,
36396
+ maxFreeSockets: 50,
36397
+ timeout: 3e4,
36398
+ rejectUnauthorized: false
36399
+ };
36400
+ stressTestExtremeAgentOptions = {
36401
+ keepAlive: true,
36402
+ maxSockets: 500,
36403
+ maxTotalSockets: 1e3,
36404
+ maxFreeSockets: 500,
36405
+ timeout: 3e4,
36406
+ rejectUnauthorized: false
36407
+ };
36408
+ GetAgentManager = (testingAgentOptions) => {
36409
+ let agentManager = void 0;
36410
+ let agentOptions = void 0;
36411
+ switch (testingAgentOptions.nodeAgentMode) {
36412
+ case "no-agent": break;
36413
+ case "custom-agent-options":
36414
+ if (testingAgentOptions.nodeAgentCustomOptions) agentOptions = { ...testingAgentOptions.nodeAgentCustomOptions };
36415
+ else agentOptions = { ...this.defaultAgentOptions };
36416
+ break;
36417
+ case "default-agent-options":
36418
+ agentOptions = { ...this.defaultAgentOptions };
36419
+ break;
36420
+ case "stress-test-agent-options":
36421
+ agentOptions = { ...this.stressTestAgentOptions };
36422
+ break;
36423
+ case "stress-test-extreme-agent-options":
36424
+ agentOptions = { ...this.stressTestExtremeAgentOptions };
36425
+ break;
36426
+ default: throw new Error(`TestCaseFhirBase:GetAgentManager(): [${this._id}] unknown nodeAgentMode: [${testingAgentOptions.nodeAgentMode}]`);
36427
+ }
36428
+ if (agentOptions) agentManager = createAgentManager({
36429
+ agentOptions,
36430
+ httpAgentFactory(options) {
36431
+ return new http.Agent(options);
36432
+ },
36433
+ httpsAgentFactory(options) {
36434
+ return new https.Agent(options);
36435
+ }
36436
+ });
36437
+ return agentManager;
36438
+ };
36439
+ GetFhirAgentManager = () => {
36440
+ return this.GetAgentManager(this._options.fhirOptions.stsfhiragentOptions);
36441
+ };
36339
36442
  GetFhirSocketClient = async () => {
36340
36443
  try {
36341
36444
  if (this.fhirClient) return this.fhirClient;
36342
36445
  const lockKey = "GetFhirSocketClient";
36343
36446
  const lockTimeout = 6e4;
36344
- if (this.GetOnHold(lockKey) === true) {
36447
+ if (this._lockHelper.GetOnHold(lockKey) === true) {
36345
36448
  this.Debug(chalk.magenta(`GetFhirSocketClient(): fhir client does not exist - some other client setting up the new client (on hold/lock), lock key: [${lockKey}] - waiting ...`));
36346
36449
  try {
36347
36450
  const start = performance.now();
36348
- await this.WaitOnHold(lockKey, lockTimeout);
36451
+ await this._lockHelper.WaitOnHold(lockKey, lockTimeout);
36349
36452
  this.Debug(chalk.yellow(`GetFhirSocketClient(): hold (lock) released after: [${performance.now() - start}ms], lock key: [${lockKey}]`));
36350
36453
  if (this.fhirClient) {
36351
36454
  this.Debug(chalk.green(`GetFhirSocketClient(): Getting existing fhir client (post hold release), lock key: [${lockKey}]`));
@@ -36361,7 +36464,7 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36361
36464
  const start = performance.now();
36362
36465
  this.Debug(chalk.yellow(`GetFhirSocketClient(): fhir client does not exist - setting up new client`));
36363
36466
  this.Debug(chalk.yellow(`GetFhirSocketClient(): setting hold (lock), lock key: [${lockKey}]`));
36364
- this.SetOnHold(lockKey);
36467
+ this._lockHelper.SetOnHold(lockKey);
36365
36468
  const fhirOptions = this._options.fhirOptions;
36366
36469
  const options = {
36367
36470
  fhirServerEndpoint: fhirOptions.stsfhirserverendpoint,
@@ -36373,18 +36476,18 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36373
36476
  baseUrl: fhirOptions.stsfhirbaseurl,
36374
36477
  agentManager: this.GetFhirAgentManager(),
36375
36478
  joinRooms: [],
36376
- logger: this.logger,
36479
+ logger: this._options.logger,
36377
36480
  verboseLogging: true,
36378
- GetConnectionAccessToken: this.GetAccessTokenForSocketClientAccess,
36379
- GetAccessToken: this.GetAccessToken
36481
+ GetConnectionAccessToken: this._options.authHelper.GetAccessTokenForSocketClientAccess,
36482
+ GetAccessToken: this._options.authHelper.GetAccessToken
36380
36483
  };
36381
36484
  let workingFhirClient;
36382
- if (this._options.runner.options.fhirOptions.stsfhirsocketclientmode === "socket-client-all-in-one") workingFhirClient = new FhirSocketClientAllInOne("FhirSocketClient", options);
36485
+ if (this._options.fhirOptions.stsfhirsocketclientmode === "socket-client-all-in-one") workingFhirClient = new FhirSocketClientAllInOne("FhirSocketClient", options);
36383
36486
  else workingFhirClient = new FhirSocketClientIndividual("FhirSocketClient", options);
36384
36487
  await workingFhirClient.WaitForSocketConnected();
36385
36488
  this.Debug(chalk.yellow(`GetFhirSocketClient(): setting fhir client into object`));
36386
36489
  this.fhirClient = workingFhirClient;
36387
- this.ReleaseOnHold(lockKey);
36490
+ this._lockHelper.ReleaseOnHold(lockKey);
36388
36491
  this.Debug(chalk.yellow(`GetFhirSocketClient(): release hold (lock) Time taken for socket connection and set object: [${performance.now() - start}ms], lock key: [${lockKey}]`));
36389
36492
  return this.fhirClient;
36390
36493
  } catch (error) {
@@ -36395,20 +36498,18 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36395
36498
  GetRESTClient = async () => {
36396
36499
  if (this.restFhirClient) return this.restFhirClient;
36397
36500
  const onRetryAttempt = (attempt, error, delayMs) => {
36398
- this._options.runner.instrumentData.errorCount++;
36399
- this._options.runner.instrumentData.requestCount++;
36400
36501
  const message = `TestCaseFhirBase:onRetryAttempt(): [${this._id}] Retry #${attempt} after ${delayMs}ms due to ${error.code || error.response?.status}`;
36401
36502
  this.Warning(message);
36402
- this._options.runner.instrumentData.message.push(chalk.red(message));
36503
+ this.emit("retry", message);
36403
36504
  };
36404
36505
  const fhirOptions = this._options.fhirOptions;
36405
36506
  const fhirRESTClient = new FhirRESTClient({
36406
- GetAccessToken: this.GetAccessToken,
36507
+ GetAccessToken: this._options.authHelper.GetAccessToken,
36407
36508
  user: "USR_user01@stsmda.com.au",
36408
36509
  endpoint: fhirOptions.stsfhirserverendpoint,
36409
36510
  stsfhirapiroot: fhirOptions.stsfhirapiroot,
36410
36511
  stsfhirport: fhirOptions.stsfhirport,
36411
- logger: this.logger,
36512
+ logger: this._options.logger,
36412
36513
  agentManager: this.GetFhirAgentManager(),
36413
36514
  onRetryAttempt
36414
36515
  });
@@ -36417,12 +36518,136 @@ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36417
36518
  };
36418
36519
  GetClient = async () => {
36419
36520
  let client;
36420
- if (this._options.runner.options.fhirOptions.stsfhirsocketclientmode === "no-socket-client") client = await this.GetRESTClient();
36521
+ if (this._options.fhirOptions.stsfhirsocketclientmode === "no-socket-client") client = await this.GetRESTClient();
36421
36522
  else client = await this.GetFhirSocketClient();
36422
36523
  return client;
36423
36524
  };
36424
36525
  };
36425
36526
  //#endregion
36527
+ //#region src/libmodule/workerFhirTestCases.ts
36528
+ var WorkerFhirTestCases = class extends AbstractRunnerExecutionWorker {
36529
+ _options;
36530
+ _resourceDataGenerator;
36531
+ fhirClient = void 0;
36532
+ _id = crypto.randomUUID();
36533
+ _clientHelper;
36534
+ _authHelper;
36535
+ restFhirClient = null;
36536
+ logPrefix = `WorkerFhirTestCases:[${this._id}]:`;
36537
+ constructor(options) {
36538
+ super();
36539
+ this._options = options;
36540
+ this._resourceDataGenerator = new ResourceDataGenerator();
36541
+ this._authHelper = new AuthHelper({
36542
+ authOptions: options.authOptions,
36543
+ logger: options.logger
36544
+ });
36545
+ this._clientHelper = new ClientHelper({
36546
+ authHelper: this._authHelper,
36547
+ logger: options.logger,
36548
+ fhirOptions: options.fhirOptions
36549
+ });
36550
+ }
36551
+ get authHelper() {
36552
+ return this._authHelper;
36553
+ }
36554
+ Warning = (message) => {
36555
+ this.logger.warn(`${this.logPrefix}${message}`);
36556
+ };
36557
+ Error = (message) => {
36558
+ this.logger.error(`${this.logPrefix}${message}`);
36559
+ };
36560
+ Debug = (message) => {
36561
+ this.logger.debug(`${this.logPrefix}${message}`);
36562
+ };
36563
+ get id() {
36564
+ return this._id;
36565
+ }
36566
+ get resourceDataGenerator() {
36567
+ return this._resourceDataGenerator;
36568
+ }
36569
+ get logger() {
36570
+ return this._options.logger;
36571
+ }
36572
+ CreateAsyncRunner = async (testRunnerTelemetryPayload) => {
36573
+ return AsyncRunnerFactory.CreateAsyncRunner(this, testRunnerTelemetryPayload);
36574
+ };
36575
+ async ProcessPreTerminateWorkerMessage(messagePayload) {
36576
+ this.logger.debug(chalk.rgb(220, 100, 0)(`ProcessPreTerminateWorkerMessage(): [${JSON.stringify(messagePayload, null, 2)}]`));
36577
+ if (this.fhirClient) {
36578
+ this.logger.debug(chalk.rgb(220, 100, 0)(`ProcessPreTerminateWorkerMessage(): ResetSocket()`));
36579
+ this.fhirClient.ResetSocket();
36580
+ this.fhirClient = void 0;
36581
+ }
36582
+ await Sleep(250);
36583
+ return {
36584
+ originalMessage: { ...messagePayload },
36585
+ myresponsepreterminate: `I got: [${JSON.stringify(messagePayload.payload.data)}]`
36586
+ };
36587
+ }
36588
+ defaultAgentOptions = {
36589
+ keepAlive: true,
36590
+ maxSockets: 10,
36591
+ maxTotalSockets: 20,
36592
+ maxFreeSockets: 10,
36593
+ timeout: 6e4,
36594
+ rejectUnauthorized: false
36595
+ };
36596
+ stressTestAgentOptions = {
36597
+ keepAlive: true,
36598
+ maxSockets: 200,
36599
+ maxTotalSockets: 500,
36600
+ maxFreeSockets: 50,
36601
+ timeout: 3e4,
36602
+ rejectUnauthorized: false
36603
+ };
36604
+ stressTestExtremeAgentOptions = {
36605
+ keepAlive: true,
36606
+ maxSockets: 500,
36607
+ maxTotalSockets: 1e3,
36608
+ maxFreeSockets: 500,
36609
+ timeout: 3e4,
36610
+ rejectUnauthorized: false
36611
+ };
36612
+ GetAgentManager = (testingAgentOptions) => {
36613
+ let agentManager = void 0;
36614
+ let agentOptions = void 0;
36615
+ switch (testingAgentOptions.nodeAgentMode) {
36616
+ case "no-agent": break;
36617
+ case "custom-agent-options":
36618
+ if (testingAgentOptions.nodeAgentCustomOptions) agentOptions = { ...testingAgentOptions.nodeAgentCustomOptions };
36619
+ else agentOptions = { ...this.defaultAgentOptions };
36620
+ break;
36621
+ case "default-agent-options":
36622
+ agentOptions = { ...this.defaultAgentOptions };
36623
+ break;
36624
+ case "stress-test-agent-options":
36625
+ agentOptions = { ...this.stressTestAgentOptions };
36626
+ break;
36627
+ case "stress-test-extreme-agent-options":
36628
+ agentOptions = { ...this.stressTestExtremeAgentOptions };
36629
+ break;
36630
+ default: throw new Error(`TestCaseFhirBase:GetAgentManager(): [${this._id}] unknown nodeAgentMode: [${testingAgentOptions.nodeAgentMode}]`);
36631
+ }
36632
+ if (agentOptions) agentManager = createAgentManager({
36633
+ agentOptions,
36634
+ httpAgentFactory(options) {
36635
+ return new http.Agent(options);
36636
+ },
36637
+ httpsAgentFactory(options) {
36638
+ return new https.Agent(options);
36639
+ }
36640
+ });
36641
+ return agentManager;
36642
+ };
36643
+ GetFhirAgentManager = () => {
36644
+ return this.GetAgentManager(this._options.fhirOptions.stsfhiragentOptions);
36645
+ };
36646
+ GetClient = async () => {
36647
+ return this._clientHelper.GetClient();
36648
+ };
36649
+ };
36650
+ //#endregion
36426
36651
  export { WorkerFhirTestCases };
36427
36652
 
36428
36653
  //# sourceMappingURL=ststestrunner.mjs.map