@loadstrike/loadstrike-sdk 1.0.10101 → 1.0.10801

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.
@@ -1,4 +1,6 @@
1
- import type { LoadStrikeRunRequest } from "./contracts.js";
1
+ import { type ClusterNodeResult } from "./cluster.js";
2
+ import { RedisCorrelationStore, RedisCorrelationStoreOptions, TrackingFieldSelector, type TrackingPayload } from "./correlation.js";
3
+ import { type EndpointAdapter, type EndpointDefinition } from "./transports.js";
2
4
  export declare const LoadStrikeNodeType: {
3
5
  readonly SingleNode: "SingleNode";
4
6
  readonly Coordinator: "Coordinator";
@@ -55,15 +57,15 @@ export interface LoadStrikeRandom {
55
57
  nextBytes(length: number): Uint8Array;
56
58
  NextBytes(length: number): Uint8Array;
57
59
  }
58
- export interface LoadStrikeStepReply<TPayload = unknown> {
60
+ export interface LoadStrikeReply<TPayload = unknown> {
59
61
  isSuccess: boolean;
60
62
  statusCode: string;
61
63
  message: string;
62
64
  sizeBytes: number;
63
65
  customLatencyMs?: number;
64
66
  payload?: TPayload;
65
- asReply?: () => LoadStrikeStepReply;
66
- AsReply?: () => LoadStrikeStepReply;
67
+ asReply?: () => LoadStrikeReply;
68
+ AsReply?: () => LoadStrikeReply;
67
69
  readonly IsError?: boolean;
68
70
  readonly StatusCode?: string;
69
71
  readonly Message?: string;
@@ -71,7 +73,7 @@ export interface LoadStrikeStepReply<TPayload = unknown> {
71
73
  readonly CustomLatencyMs?: number;
72
74
  readonly Payload?: TPayload;
73
75
  }
74
- export type LoadStrikeReply<TPayload = unknown> = LoadStrikeStepReply<TPayload>;
76
+ export type LoadStrikeStepReply<TPayload = unknown> = LoadStrikeReply<TPayload>;
75
77
  export interface LoadStrikeStepRuntime {
76
78
  scenarioName: string;
77
79
  stepName: string;
@@ -260,51 +262,62 @@ export declare class LoadStrikePluginData {
260
262
  get Hints(): string[];
261
263
  get Tables(): LoadStrikePluginDataTable[];
262
264
  }
263
- export declare class LoadStrikeReportData {
264
- scenarioStats: LoadStrikeScenarioStats[];
265
- constructor(scenarioStats?: LoadStrikeScenarioStats[]);
266
- static create(...scenarioStats: LoadStrikeScenarioStats[]): LoadStrikeReportData;
267
- static Create(...scenarioStats: LoadStrikeScenarioStats[]): LoadStrikeReportData;
268
- static fromRunResult(result: LoadStrikeRunResult): LoadStrikeReportData;
269
- findScenarioStats(scenarioName: string): LoadStrikeScenarioStats | undefined;
270
- getScenarioStats(scenarioName: string): LoadStrikeScenarioStats;
271
- FindScenarioStats(scenarioName: string): LoadStrikeScenarioStats | undefined;
272
- GetScenarioStats(scenarioName: string): LoadStrikeScenarioStats;
273
- get ScenarioStats(): LoadStrikeScenarioStats[];
274
- }
275
265
  export interface LoadStrikeRunResult {
276
266
  startedUtc: string;
277
267
  completedUtc: string;
268
+ allBytes: number;
278
269
  allRequestCount: number;
279
270
  allOkCount: number;
280
271
  allFailCount: number;
281
272
  failedThresholds: number;
273
+ durationMs: number;
282
274
  nodeInfo: LoadStrikeNodeInfo;
283
275
  testInfo: LoadStrikeTestInfo;
276
+ thresholds: LoadStrikeThresholdResult[];
284
277
  thresholdResults: LoadStrikeThresholdResult[];
278
+ metricStats: LoadStrikeMetricStats;
285
279
  metrics: LoadStrikeMetricValue[];
286
280
  scenarioStats: LoadStrikeScenarioStats[];
287
281
  stepStats: LoadStrikeStepStats[];
282
+ scenarioDurationsMs: Record<string, number>;
288
283
  pluginsData: LoadStrikePluginData[];
289
284
  disabledSinks: string[];
290
285
  sinkErrors: LoadStrikeSinkError[];
286
+ policyErrors: LoadStrikeRuntimePolicyError[];
291
287
  reportFiles: string[];
288
+ logFiles: string[];
289
+ correlationRows: Array<Record<string, unknown>>;
290
+ failedCorrelationRows: Array<Record<string, unknown>>;
291
+ findScenarioStats?: (scenarioName: string) => LoadStrikeScenarioStats | undefined;
292
+ getScenarioStats?: (scenarioName: string) => LoadStrikeScenarioStats;
293
+ FindScenarioStats?: (scenarioName: string) => LoadStrikeScenarioStats | undefined;
294
+ GetScenarioStats?: (scenarioName: string) => LoadStrikeScenarioStats;
292
295
  readonly StartedUtc?: Date;
293
296
  readonly CompletedUtc?: Date;
297
+ readonly AllBytes?: number;
294
298
  readonly AllRequestCount?: number;
295
299
  readonly AllOkCount?: number;
296
300
  readonly AllFailCount?: number;
297
301
  readonly FailedThresholds?: number;
302
+ readonly DurationMs?: number;
303
+ readonly Duration?: number;
298
304
  readonly NodeInfo?: LoadStrikeNodeInfo;
299
305
  readonly TestInfo?: LoadStrikeTestInfo;
306
+ readonly Thresholds?: LoadStrikeThresholdResult[];
300
307
  readonly ThresholdResults?: LoadStrikeThresholdResult[];
308
+ readonly MetricStats?: LoadStrikeMetricStats;
301
309
  readonly Metrics?: LoadStrikeMetricValue[];
302
310
  readonly ScenarioStats?: LoadStrikeScenarioStats[];
303
311
  readonly StepStats?: LoadStrikeStepStats[];
312
+ readonly ScenarioDurationsMs?: Record<string, number>;
304
313
  readonly PluginsData?: LoadStrikePluginData[];
305
314
  readonly DisabledSinks?: string[];
306
315
  readonly SinkErrors?: LoadStrikeSinkError[];
316
+ readonly PolicyErrors?: LoadStrikeRuntimePolicyError[];
307
317
  readonly ReportFiles?: string[];
318
+ readonly LogFiles?: string[];
319
+ readonly CorrelationRows?: Array<Record<string, unknown>>;
320
+ readonly FailedCorrelationRows?: Array<Record<string, unknown>>;
308
321
  }
309
322
  export interface LoadStrikeStepStats extends LoadStrikeStepRuntime {
310
323
  ok: LoadStrikeMeasurementStats;
@@ -358,7 +371,7 @@ export interface LoadStrikeScenarioStats extends LoadStrikeScenarioRuntime {
358
371
  readonly SortIndex?: number;
359
372
  readonly StepStats?: LoadStrikeStepStats[];
360
373
  }
361
- export interface LoadStrikeNodeStats {
374
+ interface LoadStrikeNodeStats {
362
375
  startedUtc: string;
363
376
  completedUtc: string;
364
377
  allBytes: number;
@@ -379,6 +392,7 @@ export interface LoadStrikeNodeStats {
379
392
  disabledSinks: string[];
380
393
  sinkErrors: LoadStrikeSinkError[];
381
394
  reportFiles: string[];
395
+ logFiles: string[];
382
396
  findScenarioStats: (scenarioName: string) => LoadStrikeScenarioStats | undefined;
383
397
  getScenarioStats: (scenarioName: string) => LoadStrikeScenarioStats;
384
398
  FindScenarioStats: (scenarioName: string) => LoadStrikeScenarioStats | undefined;
@@ -404,10 +418,48 @@ export interface LoadStrikeNodeStats {
404
418
  readonly DisabledSinks?: string[];
405
419
  readonly SinkErrors?: LoadStrikeSinkError[];
406
420
  readonly ReportFiles?: string[];
421
+ readonly LogFiles?: string[];
422
+ }
423
+ declare class MeasurementAccumulator {
424
+ private count;
425
+ private allBytes;
426
+ private readonly latenciesMs;
427
+ private readonly sizesBytes;
428
+ private readonly statusCodes;
429
+ get Count(): number;
430
+ record(reply: LoadStrikeStepReply, observedLatencyMs: number): void;
431
+ build(allRequestCount: number, durationMs: number): LoadStrikeMeasurementStats;
432
+ }
433
+ declare class StepStatsAccumulator {
434
+ readonly scenarioName: string;
435
+ readonly stepName: string;
436
+ readonly sortIndex: number;
437
+ readonly ok: MeasurementAccumulator;
438
+ readonly fail: MeasurementAccumulator;
439
+ constructor(scenarioName: string, stepName: string, sortIndex: number);
440
+ record(reply: LoadStrikeStepReply, observedLatencyMs: number): void;
441
+ build(allScenarioRequestCount: number, durationMs: number): LoadStrikeStepStats;
442
+ }
443
+ declare class ScenarioStatsAccumulator {
444
+ readonly scenarioName: string;
445
+ readonly sortIndex: number;
446
+ readonly ok: MeasurementAccumulator;
447
+ readonly fail: MeasurementAccumulator;
448
+ private readonly steps;
449
+ private nextStepSortIndex;
450
+ private loadSimulationStats;
451
+ private currentOperation;
452
+ constructor(scenarioName: string, sortIndex: number);
453
+ setLoadSimulation(simulationName: string, value: number): void;
454
+ setCurrentOperation(operation: LoadStrikeScenarioStats["currentOperation"]): void;
455
+ getCurrentOperation(): LoadStrikeScenarioStats["currentOperation"];
456
+ recordScenario(reply: LoadStrikeStepReply, observedLatencyMs: number): void;
457
+ recordStep(stepName: string, reply: LoadStrikeStepReply, observedLatencyMs: number): void;
458
+ build(durationMs: number): LoadStrikeScenarioStats;
407
459
  }
408
460
  export interface LoadStrikeSinkError {
409
461
  sinkName: string;
410
- phase: "init" | "start" | "realtime" | "final" | "run-result" | "stop";
462
+ phase: "init" | "start" | "realtime" | "final" | "run-result" | "stop" | "dispose";
411
463
  message: string;
412
464
  attempts: number;
413
465
  readonly SinkName?: string;
@@ -415,6 +467,19 @@ export interface LoadStrikeSinkError {
415
467
  readonly Message?: string;
416
468
  readonly Attempts?: number;
417
469
  }
470
+ export type LoadStrikeRuntimePolicyErrorMode = "fail" | "continue";
471
+ export interface LoadStrikeRuntimePolicyError {
472
+ policyName: string;
473
+ callbackName: string;
474
+ scenarioName: string;
475
+ stepName: string;
476
+ message: string;
477
+ readonly PolicyName?: string;
478
+ readonly CallbackName?: string;
479
+ readonly ScenarioName?: string;
480
+ readonly StepName?: string;
481
+ readonly Message?: string;
482
+ }
418
483
  export interface LoadStrikeSinkSession {
419
484
  startedUtc: string;
420
485
  scenarioNames: string[];
@@ -458,8 +523,6 @@ export interface LoadStrikeReportingSink {
458
523
  SaveRealtimeStats?: (scenarioStats: LoadStrikeScenarioStats[]) => Promise<void> | void;
459
524
  saveRealtimeMetrics?: (metrics: LoadStrikeMetricStats) => Promise<void> | void;
460
525
  SaveRealtimeMetrics?: (metrics: LoadStrikeMetricStats) => Promise<void> | void;
461
- saveFinalStats?: (result: LoadStrikeNodeStats) => Promise<void> | void;
462
- SaveFinalStats?: (result: LoadStrikeNodeStats) => Promise<void> | void;
463
526
  saveRunResult?: (result: LoadStrikeRunResult) => Promise<void> | void;
464
527
  SaveRunResult?: (result: LoadStrikeRunResult) => Promise<void> | void;
465
528
  stop?: () => Promise<void> | void;
@@ -474,6 +537,8 @@ export interface LoadStrikeRuntimePolicy {
474
537
  afterScenario?: (scenarioName: string, stats: LoadStrikeScenarioRuntime) => Promise<void> | void;
475
538
  beforeStep?: (scenarioName: string, stepName: string) => Promise<void> | void;
476
539
  afterStep?: (scenarioName: string, stepName: string, reply: LoadStrikeStepReply) => Promise<void> | void;
540
+ policyName?: string;
541
+ PolicyName?: string;
477
542
  }
478
543
  export interface LoadStrikeWorkerPlugin {
479
544
  pluginName?: string;
@@ -486,8 +551,8 @@ export interface LoadStrikeWorkerPlugin {
486
551
  Stop?: () => Promise<void> | void;
487
552
  dispose?: () => Promise<void> | void;
488
553
  Dispose?: () => Promise<void> | void;
489
- getData?: (result: LoadStrikeNodeStats) => Promise<LoadStrikePluginData | null> | LoadStrikePluginData | null;
490
- GetData?: (result: LoadStrikeNodeStats) => Promise<LoadStrikePluginData | null> | LoadStrikePluginData | null;
554
+ getData?: (result: LoadStrikeRunResult) => Promise<LoadStrikePluginData | null> | LoadStrikePluginData | null;
555
+ GetData?: (result: LoadStrikeRunResult) => Promise<LoadStrikePluginData | null> | LoadStrikePluginData | null;
491
556
  }
492
557
  export type ILoadStrikeWorkerPlugin = RequireAtLeastOne<LoadStrikeWorkerPlugin, "pluginName" | "PluginName">;
493
558
  export interface LoadStrikeRunnerOptions {
@@ -501,7 +566,6 @@ export interface LoadStrikeRunnerOptions {
501
566
  coordinatorTargetScenarios?: string[];
502
567
  natsServerUrl?: string;
503
568
  runnerKey?: string;
504
- licenseValidationServerUrl?: string;
505
569
  licenseValidationTimeoutSeconds?: number;
506
570
  configPath?: string;
507
571
  infraConfigPath?: string;
@@ -514,8 +578,6 @@ export interface LoadStrikeRunnerOptions {
514
578
  reportFolderPath?: string;
515
579
  reportFileName?: string;
516
580
  reportFormats?: Array<LoadStrikeReportFormat>;
517
- reportFinalizer?: (reportData: LoadStrikeReportData) => LoadStrikeReportData;
518
- detailedReportFinalizer?: (result: LoadStrikeRunResult) => LoadStrikeRunResult;
519
581
  reportingIntervalSeconds?: number;
520
582
  minimumLogLevel?: LoadStrikeLogLevel | string;
521
583
  loggerConfig?: () => LoadStrikeLogger;
@@ -525,6 +587,7 @@ export interface LoadStrikeRunnerOptions {
525
587
  scenarioCompletionTimeoutSeconds?: number;
526
588
  clusterCommandTimeoutSeconds?: number;
527
589
  restartIterationMaxAttempts?: number;
590
+ runtimePolicyErrorMode?: LoadStrikeRuntimePolicyErrorMode | string;
528
591
  customSettings?: Record<string, unknown>;
529
592
  globalCustomSettings?: Record<string, unknown>;
530
593
  runtimePolicies?: LoadStrikeRuntimePolicy[];
@@ -659,23 +722,31 @@ export interface LoadStrikeScenarioContext {
659
722
  StopScenario?: (scenarioNameOrReason?: string, reason?: string) => void;
660
723
  StopCurrentTest?: (reason?: string) => void;
661
724
  }
725
+ interface InternalScenarioContext extends LoadStrikeScenarioContext {
726
+ readonly scenarioName: string;
727
+ readonly recordStep: (stepName: string, reply: LoadStrikeStepReply, observedLatencyMs: number) => void;
728
+ readonly shouldStopScenario: () => boolean;
729
+ readonly shouldStopTest: () => boolean;
730
+ readonly invokeBeforeStep: (stepName: string) => Promise<void>;
731
+ readonly invokeAfterStep: (stepName: string, reply: LoadStrikeStepReply) => Promise<void>;
732
+ }
662
733
  export declare class LoadStrikeResponse {
663
- static ok(statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeStepReply;
664
- static ok<TPayload>(payload: TPayload, statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeStepReply<TPayload>;
665
- static Ok(statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeStepReply;
666
- static Ok<TPayload>(payload: TPayload, statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeStepReply<TPayload>;
667
- static okWithPayload<TPayload>(payload: TPayload, statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeStepReply<TPayload>;
668
- static OkWithPayload<TPayload>(payload: TPayload, statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeStepReply<TPayload>;
669
- static fail(statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeStepReply;
670
- static fail<TPayload>(payload: TPayload, statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeStepReply<TPayload>;
671
- static Fail(statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeStepReply;
672
- static Fail<TPayload>(payload: TPayload, statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeStepReply<TPayload>;
673
- static failWithPayload<TPayload>(payload: TPayload, statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeStepReply<TPayload>;
674
- static FailWithPayload<TPayload>(payload: TPayload, statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeStepReply<TPayload>;
734
+ static ok(statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeReply;
735
+ static ok<TPayload>(payload: TPayload, statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeReply<TPayload>;
736
+ static Ok(statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeReply;
737
+ static Ok<TPayload>(payload: TPayload, statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeReply<TPayload>;
738
+ static okWithPayload<TPayload>(payload: TPayload, statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeReply<TPayload>;
739
+ static OkWithPayload<TPayload>(payload: TPayload, statusCode?: string, sizeBytesOrMessage?: number | string, messageOrSizeBytes?: string | number, customLatencyMs?: number): LoadStrikeReply<TPayload>;
740
+ static fail(statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeReply;
741
+ static fail<TPayload>(payload: TPayload, statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeReply<TPayload>;
742
+ static Fail(statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeReply;
743
+ static Fail<TPayload>(payload: TPayload, statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeReply<TPayload>;
744
+ static failWithPayload<TPayload>(payload: TPayload, statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeReply<TPayload>;
745
+ static FailWithPayload<TPayload>(payload: TPayload, statusCode?: string, messageOrSizeBytes?: string | number, sizeBytesOrMessage?: number | string, customLatencyMs?: number): LoadStrikeReply<TPayload>;
675
746
  }
676
747
  export declare class LoadStrikeStep {
677
- static run<TPayload = unknown>(stepName: string, context: LoadStrikeScenarioContext, run: () => Promise<LoadStrikeStepReply<TPayload>> | LoadStrikeStepReply<TPayload>): Promise<LoadStrikeStepReply<TPayload>>;
678
- static Run<TPayload = unknown>(stepName: string, context: LoadStrikeScenarioContext, run: () => Promise<LoadStrikeStepReply<TPayload>> | LoadStrikeStepReply<TPayload>): Promise<LoadStrikeStepReply<TPayload>>;
748
+ static run<TPayload = unknown>(stepName: string, context: LoadStrikeScenarioContext, run: () => Promise<LoadStrikeReply<TPayload>> | LoadStrikeReply<TPayload>): Promise<LoadStrikeReply<TPayload>>;
749
+ static Run<TPayload = unknown>(stepName: string, context: LoadStrikeScenarioContext, run: () => Promise<LoadStrikeReply<TPayload>> | LoadStrikeReply<TPayload>): Promise<LoadStrikeReply<TPayload>>;
679
750
  }
680
751
  export declare class LoadStrikeSimulation {
681
752
  static inject(rate: number, intervalSeconds: number, duringSeconds: number): Record<string, unknown>;
@@ -771,7 +842,6 @@ export interface LoadStrikeRunContext {
771
842
  ClusterId?: string;
772
843
  CoordinatorTargetScenarios?: string[];
773
844
  RunnerKey?: string;
774
- LicenseValidationServerUrl?: string;
775
845
  LicenseValidationTimeoutSeconds?: number;
776
846
  MinimumLogLevel?: LoadStrikeLogLevel | string;
777
847
  LoggerConfig?: () => LoadStrikeLogger;
@@ -781,13 +851,12 @@ export interface LoadStrikeRunContext {
781
851
  ReportFileName?: string;
782
852
  ReportFolderPath?: string;
783
853
  ReportFormats?: LoadStrikeReportFormat[];
784
- ReportFinalizer?: (reportData: LoadStrikeReportData) => LoadStrikeReportData;
785
- DetailedReportFinalizer?: (result: LoadStrikeRunResult) => LoadStrikeRunResult;
786
854
  ReportingIntervalSeconds?: number;
787
855
  ReportingSinks?: ILoadStrikeReportingSink[];
788
856
  SinkRetryCount?: number;
789
857
  SinkRetryBackoffMs?: number;
790
858
  RuntimePolicies?: LoadStrikeRuntimePolicy[];
859
+ RuntimePolicyErrorMode?: LoadStrikeRuntimePolicyErrorMode | string;
791
860
  ScenarioCompletionTimeoutSeconds?: number;
792
861
  ClusterCommandTimeoutSeconds?: number;
793
862
  RestartIterationMaxAttempts?: number;
@@ -808,18 +877,12 @@ export declare class LoadStrikeContext {
808
877
  toObject(): LoadStrikeRunContext;
809
878
  buildContext(): LoadStrikeContext;
810
879
  BuildContext(): LoadStrikeContext;
811
- run(): Promise<LoadStrikeNodeStats>;
812
- run(args: string[]): Promise<LoadStrikeNodeStats>;
813
- run(...args: string[]): Promise<LoadStrikeNodeStats>;
814
- runDetailed(): Promise<LoadStrikeRunResult>;
815
- runDetailed(args: string[]): Promise<LoadStrikeRunResult>;
816
- runDetailed(...args: string[]): Promise<LoadStrikeRunResult>;
817
- Run(): Promise<LoadStrikeNodeStats>;
818
- Run(args: string[]): Promise<LoadStrikeNodeStats>;
819
- Run(...args: string[]): Promise<LoadStrikeNodeStats>;
820
- RunDetailed(): Promise<LoadStrikeRunResult>;
821
- RunDetailed(args: string[]): Promise<LoadStrikeRunResult>;
822
- RunDetailed(...args: string[]): Promise<LoadStrikeRunResult>;
880
+ run(): Promise<LoadStrikeRunResult>;
881
+ run(args: string[]): Promise<LoadStrikeRunResult>;
882
+ run(...args: string[]): Promise<LoadStrikeRunResult>;
883
+ Run(): Promise<LoadStrikeRunResult>;
884
+ Run(args: string[]): Promise<LoadStrikeRunResult>;
885
+ Run(...args: string[]): Promise<LoadStrikeRunResult>;
823
886
  toRunnerOptions(): LoadStrikeRunnerOptions;
824
887
  configure(configure: (context: LoadStrikeContext) => LoadStrikeContext): LoadStrikeContext;
825
888
  configure(context: LoadStrikeContext | LoadStrikeRunContext): LoadStrikeContext;
@@ -829,8 +892,6 @@ export declare class LoadStrikeContext {
829
892
  Configure(options: LoadStrikeRunnerOptions): LoadStrikeContext;
830
893
  configureContext(context: LoadStrikeContext | LoadStrikeRunContext): LoadStrikeContext;
831
894
  ConfigureContext(context: LoadStrikeContext | LoadStrikeRunContext): LoadStrikeContext;
832
- buildLicenseValidationPayload(): LoadStrikeRunRequest;
833
- BuildLicenseValidationPayload(): LoadStrikeRunRequest;
834
895
  displayConsoleMetrics(enable: boolean): LoadStrikeContext;
835
896
  DisplayConsoleMetrics(enable: boolean): LoadStrikeContext;
836
897
  enableLocalDevCluster(enable: boolean): LoadStrikeContext;
@@ -851,8 +912,6 @@ export declare class LoadStrikeContext {
851
912
  WithCoordinatorTargetScenarios(...scenarioNames: string[]): LoadStrikeContext;
852
913
  withRunnerKey(runnerKey: string): LoadStrikeContext;
853
914
  WithRunnerKey(runnerKey: string): LoadStrikeContext;
854
- withLicenseValidationServerUrl(serverUrl: string): LoadStrikeContext;
855
- WithLicenseValidationServerUrl(serverUrl: string): LoadStrikeContext;
856
915
  withLicenseValidationTimeout(timeoutSeconds: number): LoadStrikeContext;
857
916
  WithLicenseValidationTimeout(timeoutSeconds: number): LoadStrikeContext;
858
917
  withNodeType(nodeType: LoadStrikeNodeTypeInput): LoadStrikeContext;
@@ -867,14 +926,14 @@ export declare class LoadStrikeContext {
867
926
  WithReportFolder(reportFolderPath: string): LoadStrikeContext;
868
927
  withReportFormats(...reportFormats: Array<LoadStrikeReportFormat | string>): LoadStrikeContext;
869
928
  WithReportFormats(...reportFormats: Array<LoadStrikeReportFormat | string>): LoadStrikeContext;
870
- withReportFinalizer(handler: (reportData: LoadStrikeReportData) => LoadStrikeReportData): LoadStrikeContext;
871
- WithReportFinalizer(handler: (reportData: LoadStrikeReportData) => LoadStrikeReportData): LoadStrikeContext;
872
- withDetailedReportFinalizer(handler: (result: LoadStrikeRunResult) => LoadStrikeRunResult): LoadStrikeContext;
873
- WithDetailedReportFinalizer(handler: (result: LoadStrikeRunResult) => LoadStrikeRunResult): LoadStrikeContext;
874
929
  withReportingInterval(intervalSeconds: number): LoadStrikeContext;
875
930
  WithReportingInterval(intervalSeconds: number): LoadStrikeContext;
876
931
  withReportingSinks(...sinks: ILoadStrikeReportingSink[]): LoadStrikeContext;
877
932
  WithReportingSinks(...sinks: ILoadStrikeReportingSink[]): LoadStrikeContext;
933
+ withRuntimePolicies(...policies: LoadStrikeRuntimePolicy[]): LoadStrikeContext;
934
+ WithRuntimePolicies(...policies: LoadStrikeRuntimePolicy[]): LoadStrikeContext;
935
+ withRuntimePolicyErrorMode(mode: LoadStrikeRuntimePolicyErrorMode | string): LoadStrikeContext;
936
+ WithRuntimePolicyErrorMode(mode: LoadStrikeRuntimePolicyErrorMode | string): LoadStrikeContext;
878
937
  withWorkerPlugins(...plugins: ILoadStrikeWorkerPlugin[]): LoadStrikeContext;
879
938
  WithWorkerPlugins(...plugins: ILoadStrikeWorkerPlugin[]): LoadStrikeContext;
880
939
  withMinimumLogLevel(minimumLogLevel: LoadStrikeLogLevel | string): LoadStrikeContext;
@@ -912,15 +971,18 @@ export declare class LoadStrikeScenario {
912
971
  private readonly warmUpDurationSeconds;
913
972
  private readonly weight;
914
973
  private readonly restartIterationOnFail;
915
- private readonly licenseFeatures;
916
974
  private constructor();
917
975
  static create(name: string, runHandler: (context: LoadStrikeScenarioContext) => Promise<LoadStrikeStepReply> | LoadStrikeStepReply): LoadStrikeScenario;
918
976
  static Create(name: string, runHandler: (context: LoadStrikeScenarioContext) => Promise<LoadStrikeStepReply> | LoadStrikeStepReply): LoadStrikeScenario;
977
+ static createAsync(name: string, runHandler: (context: LoadStrikeScenarioContext) => Promise<LoadStrikeStepReply> | LoadStrikeStepReply): LoadStrikeScenario;
978
+ static CreateAsync(name: string, runHandler: (context: LoadStrikeScenarioContext) => Promise<LoadStrikeStepReply> | LoadStrikeStepReply): LoadStrikeScenario;
919
979
  static empty(name: string): LoadStrikeScenario;
920
980
  static Empty(name: string): LoadStrikeScenario;
921
981
  get Name(): string;
922
982
  withInit(handler: (context: LoadStrikeScenarioInitContext) => Promise<void> | void): LoadStrikeScenario;
983
+ withInitAsync(handler: (context: LoadStrikeScenarioInitContext) => Promise<void> | void): LoadStrikeScenario;
923
984
  withClean(handler: (context: LoadStrikeScenarioInitContext) => Promise<void> | void): LoadStrikeScenario;
985
+ withCleanAsync(handler: (context: LoadStrikeScenarioInitContext) => Promise<void> | void): LoadStrikeScenario;
924
986
  withMaxFailCount(maxFailCount: number): LoadStrikeScenario;
925
987
  withoutWarmUp(): LoadStrikeScenario;
926
988
  withWarmUpDuration(durationSeconds: number): LoadStrikeScenario;
@@ -929,7 +991,6 @@ export declare class LoadStrikeScenario {
929
991
  withCrossPlatformTracking(configuration: Record<string, unknown>): LoadStrikeScenario;
930
992
  withLoadSimulations(...simulations: Array<Record<string, unknown>>): LoadStrikeScenario;
931
993
  withThresholds(...thresholds: Array<Record<string, unknown>>): LoadStrikeScenario;
932
- withLicenseFeatures(...features: string[]): LoadStrikeScenario;
933
994
  getSimulations(): Array<Record<string, unknown>>;
934
995
  getThresholds(): Array<Record<string, unknown>>;
935
996
  getTrackingConfiguration(): Record<string, unknown> | undefined;
@@ -938,18 +999,18 @@ export declare class LoadStrikeScenario {
938
999
  getWarmUpDurationSeconds(): number;
939
1000
  getWeight(): number;
940
1001
  shouldRestartIterationOnFail(): boolean;
941
- getLicenseFeatures(): string[];
942
1002
  invokeInit(context: LoadStrikeScenarioInitContext): Promise<void>;
943
1003
  invokeClean(context: LoadStrikeScenarioInitContext): Promise<void>;
944
1004
  execute(context: LoadStrikeScenarioContext): Promise<LoadStrikeStepReply>;
945
1005
  WithCrossPlatformTracking(configuration: Record<string, unknown>): LoadStrikeScenario;
946
1006
  WithInit(handler: (context: LoadStrikeScenarioInitContext) => Promise<void> | void): LoadStrikeScenario;
1007
+ WithInitAsync(handler: (context: LoadStrikeScenarioInitContext) => Promise<void> | void): LoadStrikeScenario;
947
1008
  WithClean(handler: (context: LoadStrikeScenarioInitContext) => Promise<void> | void): LoadStrikeScenario;
1009
+ WithCleanAsync(handler: (context: LoadStrikeScenarioInitContext) => Promise<void> | void): LoadStrikeScenario;
948
1010
  WithLoadSimulations(...simulations: Array<Record<string, unknown>>): LoadStrikeScenario;
949
1011
  WithMaxFailCount(maxFailCount: number): LoadStrikeScenario;
950
1012
  WithoutWarmUp(): LoadStrikeScenario;
951
1013
  WithRestartIterationOnFail(shouldRestart: boolean): LoadStrikeScenario;
952
- WithLicenseFeatures(...features: string[]): LoadStrikeScenario;
953
1014
  WithThresholds(...thresholds: Array<Record<string, unknown>>): LoadStrikeScenario;
954
1015
  WithWarmUpDuration(durationSeconds: number): LoadStrikeScenario;
955
1016
  WithWeight(weight: number): LoadStrikeScenario;
@@ -967,14 +1028,13 @@ export declare class LoadStrikeRunner {
967
1028
  static EnableLocalDevCluster(context: LoadStrikeContext, enable: boolean): LoadStrikeContext;
968
1029
  static LoadConfig(context: LoadStrikeContext, path: string): LoadStrikeContext;
969
1030
  static LoadInfraConfig(context: LoadStrikeContext, path: string): LoadStrikeContext;
970
- static Run(context: LoadStrikeContext, ...args: string[]): Promise<LoadStrikeNodeStats>;
1031
+ static Run(context: LoadStrikeContext, ...args: string[]): Promise<LoadStrikeRunResult>;
971
1032
  static WithAgentGroup(context: LoadStrikeContext, agentGroup: string): LoadStrikeContext;
972
1033
  static WithAgentsCount(context: LoadStrikeContext, agentsCount: number): LoadStrikeContext;
973
1034
  static WithAgentTargetScenarios(context: LoadStrikeContext, ...scenarioNames: string[]): LoadStrikeContext;
974
1035
  static WithClusterId(context: LoadStrikeContext, clusterId: string): LoadStrikeContext;
975
1036
  static WithCoordinatorTargetScenarios(context: LoadStrikeContext, ...scenarioNames: string[]): LoadStrikeContext;
976
1037
  static WithRunnerKey(context: LoadStrikeContext, runnerKey: string): LoadStrikeContext;
977
- static WithLicenseValidationServerUrl(context: LoadStrikeContext, serverUrl: string): LoadStrikeContext;
978
1038
  static WithLicenseValidationTimeout(context: LoadStrikeContext, timeoutSeconds: number): LoadStrikeContext;
979
1039
  static WithLoggerConfig(context: LoadStrikeContext, loggerConfig: () => LoadStrikeLogger): LoadStrikeContext;
980
1040
  static WithMinimumLogLevel(context: LoadStrikeContext, minimumLogLevel: LoadStrikeLogLevel | string): LoadStrikeContext;
@@ -982,12 +1042,12 @@ export declare class LoadStrikeRunner {
982
1042
  static WithNodeType(context: LoadStrikeContext, nodeType: LoadStrikeNodeTypeInput): LoadStrikeContext;
983
1043
  static WithoutReports(context: LoadStrikeContext): LoadStrikeContext;
984
1044
  static WithReportFileName(context: LoadStrikeContext, reportFileName: string): LoadStrikeContext;
985
- static WithReportFinalizer(context: LoadStrikeContext, handler: (reportData: LoadStrikeReportData) => LoadStrikeReportData): LoadStrikeContext;
986
- static WithDetailedReportFinalizer(context: LoadStrikeContext, handler: (result: LoadStrikeRunResult) => LoadStrikeRunResult): LoadStrikeContext;
987
1045
  static WithReportFolder(context: LoadStrikeContext, reportFolderPath: string): LoadStrikeContext;
988
1046
  static WithReportFormats(context: LoadStrikeContext, ...reportFormats: Array<LoadStrikeReportFormat | string>): LoadStrikeContext;
989
1047
  static WithReportingInterval(context: LoadStrikeContext, intervalSeconds: number): LoadStrikeContext;
990
1048
  static WithReportingSinks(context: LoadStrikeContext, ...sinks: ILoadStrikeReportingSink[]): LoadStrikeContext;
1049
+ static WithRuntimePolicies(context: LoadStrikeContext, ...policies: LoadStrikeRuntimePolicy[]): LoadStrikeContext;
1050
+ static WithRuntimePolicyErrorMode(context: LoadStrikeContext, mode: LoadStrikeRuntimePolicyErrorMode | string): LoadStrikeContext;
991
1051
  static WithScenarioCompletionTimeout(context: LoadStrikeContext, timeoutSeconds: number): LoadStrikeContext;
992
1052
  static WithClusterCommandTimeout(context: LoadStrikeContext, timeoutSeconds: number): LoadStrikeContext;
993
1053
  static WithRestartIterationMaxAttempts(context: LoadStrikeContext, attempts: number): LoadStrikeContext;
@@ -1024,10 +1084,8 @@ export declare class LoadStrikeRunner {
1024
1084
  WithoutReports(): LoadStrikeRunner;
1025
1085
  buildContext(): LoadStrikeContext;
1026
1086
  BuildContext(): LoadStrikeContext;
1027
- run(args?: string[]): Promise<LoadStrikeNodeStats>;
1028
- runDetailed(args?: string[]): Promise<LoadStrikeRunResult>;
1029
- Run(args?: string[]): Promise<LoadStrikeNodeStats>;
1030
- RunDetailed(args?: string[]): Promise<LoadStrikeRunResult>;
1087
+ run(args?: string[]): Promise<LoadStrikeRunResult>;
1088
+ Run(args?: string[]): Promise<LoadStrikeRunResult>;
1031
1089
  private filterScenariosWithPolicies;
1032
1090
  private runClusterChildNode;
1033
1091
  private runCoordinatorWithLocalAgents;
@@ -1036,17 +1094,346 @@ export declare class LoadStrikeRunner {
1036
1094
  private stopPlugins;
1037
1095
  private executeScenarioInvocation;
1038
1096
  private selectScenarios;
1039
- private buildLicenseValidationPayload;
1040
1097
  private initializeSinks;
1041
1098
  private startSinks;
1042
1099
  private emitRealtimeStats;
1043
- private emitFinalStats;
1044
1100
  private stopSinks;
1045
1101
  private emitRunResult;
1046
1102
  private invokeSinkAction;
1047
1103
  private invokeBeforeScenario;
1048
1104
  private invokeAfterScenario;
1105
+ private invokeBeforeStep;
1106
+ private invokeAfterStep;
1107
+ private invokePolicyCallback;
1108
+ private buildRuntimePolicyError;
1049
1109
  private writeReports;
1050
1110
  private collectPluginData;
1051
1111
  }
1112
+ declare function hasPluginRows(value: LoadStrikePluginData): boolean;
1113
+ declare function combineAbortSignals(...signals: AbortSignal[]): AbortSignal;
1114
+ declare function delayWithAbort(durationMs: number, signal: AbortSignal): Promise<void>;
1115
+ declare function createRuntimeRandom(): LoadStrikeRandom;
1116
+ declare function parseAliasDate(value: string | Date | null | undefined): Date | undefined;
1117
+ declare function attachScenarioStatsAliases(scenario: Omit<LoadStrikeScenarioStats, "FindStepStats" | "GetStepStats"> & Partial<Pick<LoadStrikeScenarioStats, "FindStepStats" | "GetStepStats">>): LoadStrikeScenarioStats;
1118
+ declare function attachNodeStatsAliases(stats: Omit<LoadStrikeNodeStats, "FindScenarioStats" | "GetScenarioStats"> & Partial<Pick<LoadStrikeNodeStats, "FindScenarioStats" | "GetScenarioStats">>): LoadStrikeNodeStats;
1119
+ declare function attachRunResultAliases(result: LoadStrikeRunResult): LoadStrikeRunResult;
1120
+ declare function normalizeReplyArguments(sizeBytesOrMessage: number | string, messageOrSizeBytes: string | number, customLatencyMs?: number): {
1121
+ sizeBytes: number;
1122
+ message: string;
1123
+ latencyMs: number | undefined;
1124
+ };
1125
+ declare function normalizeFailureArguments(messageOrSizeBytes: string | number, sizeBytesOrMessage: number | string, customLatencyMs?: number): {
1126
+ sizeBytes: number;
1127
+ message: string;
1128
+ latencyMs: number | undefined;
1129
+ };
1130
+ interface ThresholdEvaluationSummary {
1131
+ failedCount: number;
1132
+ results: LoadStrikeThresholdResult[];
1133
+ }
1134
+ declare function evaluateThresholdsForScenarios(scenarios: LoadStrikeScenario[], stats: Map<string, LoadStrikeScenarioRuntime>, stepStats: Map<string, LoadStrikeStepRuntime>, durationsMs: Map<string, number>, runDurationMs: number, metricsByName: Record<string, number>): Promise<ThresholdEvaluationSummary>;
1135
+ declare function resolveThresholdActualValue(args: {
1136
+ scope: "scenario" | "step" | "metric";
1137
+ field: string;
1138
+ stepName: string;
1139
+ scenarioName: string;
1140
+ scenarioStats: LoadStrikeScenarioRuntime;
1141
+ stepStats: Map<string, LoadStrikeStepRuntime>;
1142
+ totalRequestCount: number;
1143
+ totalOkCount: number;
1144
+ totalFailCount: number;
1145
+ runDurationMs: number;
1146
+ metricsByName: Record<string, number>;
1147
+ }): number;
1148
+ declare function isComparisonFailed(actual: number, operator: string, expected: number): boolean;
1149
+ declare function normalizeThresholdScope(value: string): "scenario" | "step" | "metric";
1150
+ declare function buildThresholdCheckExpression(scope: "scenario" | "step" | "metric", stepName: string, field: string): string;
1151
+ declare function detailedToNodeStats(result: LoadStrikeRunResult, metricStats?: LoadStrikeMetricStats): LoadStrikeNodeStats;
1152
+ declare function resolveClusterExecutionMode(options: LoadStrikeRunnerOptions): "single" | "local-coordinator" | "nats-coordinator" | "nats-agent";
1153
+ declare function buildEmptyNodeStats(args: {
1154
+ startedUtc: string;
1155
+ completedUtc: string;
1156
+ nodeInfo: LoadStrikeNodeInfo;
1157
+ testInfo: LoadStrikeTestInfo;
1158
+ }): LoadStrikeNodeStats;
1159
+ declare function toDetailedRunResultFromNodeStats(result: LoadStrikeNodeStats, startedUtc: string, sinkErrors: LoadStrikeSinkError[], policyErrors?: LoadStrikeRuntimePolicyError[]): LoadStrikeRunResult;
1160
+ declare function clusterNodeResultToNodeStats(result: ClusterNodeResult, testInfo: LoadStrikeTestInfo, fallbackNodeInfo: LoadStrikeNodeInfo): LoadStrikeNodeStats;
1161
+ declare function aggregateNodeStats(testInfo: LoadStrikeTestInfo, coordinatorNodeInfo: LoadStrikeNodeInfo, nodes: LoadStrikeNodeStats[]): LoadStrikeNodeStats;
1162
+ declare function buildMeasurementPlaceholder(count: number, allCount: number, durationMs: number): LoadStrikeMeasurementStats;
1163
+ declare function executeTrackedScenarioInvocation(tracking: Record<string, unknown>, context: InternalScenarioContext, originalRun: () => Promise<LoadStrikeStepReply>, operation: "WarmUp" | "Bombing"): Promise<LoadStrikeStepReply>;
1164
+ interface ManagedTrackingOutcome {
1165
+ status: "matched" | "timeout" | "unmatched_destination" | "source_error";
1166
+ trackingId?: string;
1167
+ eventId?: string;
1168
+ latencyMs?: number;
1169
+ message?: string;
1170
+ }
1171
+ declare class ManagedScenarioTrackingRuntime {
1172
+ private readonly tracking;
1173
+ private readonly sourceEndpoint;
1174
+ private readonly destinationEndpoint;
1175
+ private readonly sourceAdapter;
1176
+ private readonly destinationAdapter;
1177
+ private readonly correlationStore;
1178
+ private readonly correlationRuntime;
1179
+ private readonly runMode;
1180
+ private readonly sourceOnlyMode;
1181
+ private readonly executeOriginalScenarioRun;
1182
+ private readonly correlationTimeoutMs;
1183
+ private readonly timeoutSweepIntervalMs;
1184
+ private readonly timeoutBatchSize;
1185
+ private readonly timeoutCountsAsFailure;
1186
+ private readonly scenarioName;
1187
+ private readonly sourceEndpointName;
1188
+ private readonly destinationEndpointName;
1189
+ private readonly gatherByFieldExpression?;
1190
+ private readonly pendingEventIds;
1191
+ private readonly pendingSourceTimestamps;
1192
+ private readonly waiters;
1193
+ private readonly outcomeQueue;
1194
+ private readonly outcomeWaiters;
1195
+ private started;
1196
+ private shutdown;
1197
+ private destinationLoop;
1198
+ private sourceLoop;
1199
+ private timeoutLoop;
1200
+ constructor(tracking: Record<string, unknown>, initContext: LoadStrikeScenarioInitContext, runNamespace: string);
1201
+ start(): Promise<void>;
1202
+ executeIteration(context: InternalScenarioContext, originalRun: () => Promise<LoadStrikeStepReply>, _operation: "WarmUp" | "Bombing"): Promise<LoadStrikeStepReply>;
1203
+ dispose(): Promise<void>;
1204
+ private executeSourceOnly;
1205
+ private consumeSourceLoop;
1206
+ private consumeDestinationLoop;
1207
+ private runTimeoutSweepLoop;
1208
+ private buildSourceErrorReply;
1209
+ private toResponse;
1210
+ private pushPendingValue;
1211
+ private shiftPendingValue;
1212
+ private pushPendingWaiter;
1213
+ private removePendingWaiter;
1214
+ private resolveTrackingWaiter;
1215
+ private pushOutcome;
1216
+ private waitForOutcome;
1217
+ private rejectOutstandingWaiters;
1218
+ }
1219
+ declare function buildTrackingLeaseKey(sessionId: string, scenarioName: string, tracking: Record<string, unknown>): string;
1220
+ declare function waitForTrackingOutcome(promise: Promise<ManagedTrackingOutcome>, timeoutMs: number, signal: AbortSignal): Promise<ManagedTrackingOutcome | null>;
1221
+ declare function validateRuntimeTrackingConfiguration(tracking: Record<string, unknown>, sourceEndpoint: EndpointDefinition, destinationEndpoint: EndpointDefinition | null): void;
1222
+ declare function validateRuntimeRedisCorrelationStoreConfiguration(tracking: Record<string, unknown>): void;
1223
+ declare function normalizeRuntimeHttpTrackingPayloadSource(value: string | undefined): "Request" | "Response" | undefined;
1224
+ declare function inferRuntimeLegacyHttpResponseSource(value: string | undefined): "ResponseBody" | "ResponseHeaders" | "ResponseStatusCode" | undefined;
1225
+ declare function mapRuntimeCorrelationStore(tracking: Record<string, unknown>, runNamespace: string): RedisCorrelationStore | null;
1226
+ declare function readRuntimeRedisCorrelationStoreOptions(redisSpec: Record<string, unknown>): RedisCorrelationStoreOptions;
1227
+ declare function buildTrackingRunNamespace(sessionId: string, scenarioName: string, sourceName: string, destinationName?: string | null): string;
1228
+ declare function sanitizeTrackingNamespacePart(value: string): string;
1229
+ declare function produceOrConsumeTrackingPayload(adapter: EndpointAdapter, endpoint: EndpointDefinition, runMode: string, index: number): Promise<TrackingPayload | null>;
1230
+ declare function mapRuntimeTrackingEndpointSpec(spec: Record<string, unknown>): EndpointDefinition;
1231
+ declare function normalizeRuntimeTrackingPayload(payload: TrackingPayload | null, endpoint: EndpointDefinition, index: number): TrackingPayload;
1232
+ declare function readRuntimeTrackingId(payload: TrackingPayload, selector: string): string | null;
1233
+ declare function runtimeParseBodyAsObject(body: unknown): Record<string, unknown> | null;
1234
+ declare function setRuntimeJsonPathValue(body: unknown, path: string, value: string): unknown;
1235
+ declare function pickOptionalTrackingSelectorString(source: Record<string, unknown>, key: string, altKey: string): string | undefined;
1236
+ declare function pickTrackingNumber(source: Record<string, unknown>, keys: string[], fallback: number): number;
1237
+ declare function toTrackingStringMap(value: unknown): Record<string, string>;
1238
+ declare function normalizeTrackingRunMode(value: string): string;
1239
+ declare function normalizeMetricValue(value: unknown): LoadStrikeMetricValue | null;
1240
+ declare function computeScenarioRequestCount(scenario: Record<string, unknown>, weight?: number): number;
1241
+ declare function computeWarmUpIterations(scenario: LoadStrikeScenario, bombingIterations: number): number;
1242
+ declare function createLogger(loggerConfig?: (() => LoadStrikeLogger) | undefined, minimumLogLevel?: LoadStrikeLogLevel | string | undefined): LoadStrikeLogger;
1243
+ declare function logLevelOrder(level: string | undefined): number;
1244
+ declare function formatUtcReportTimestamp(value: Date): string;
1245
+ declare function sanitizeReportFileName(value: string): string;
1246
+ declare function loadJsonObject(path: string): Record<string, unknown>;
1247
+ declare function asRecord(value: unknown): Record<string, unknown>;
1248
+ declare function findCaseInsensitiveKey(record: Record<string, unknown>, key: string): string | undefined;
1249
+ declare function tryReadConfigValue(record: Record<string, unknown>, path: string): unknown;
1250
+ declare function stripCaseInsensitivePrefix(value: string, prefix: string): string | undefined;
1251
+ declare function normalizeCliOverrideKey(key: string): string;
1252
+ declare function toBoolean(value: unknown, fallback: boolean): boolean;
1253
+ declare function parseStrictBooleanToken(value: unknown): boolean | null;
1254
+ declare function parseNodeTypeToken(value: unknown): LoadStrikeNodeType;
1255
+ declare function tryParseNodeTypeToken(value: unknown): LoadStrikeNodeType | null;
1256
+ declare function parseMinimumLogLevelToken(value: unknown): string;
1257
+ declare function tryParseMinimumLogLevelToken(value: unknown): string | null;
1258
+ declare function normalizeStringArray(value: unknown): string[];
1259
+ declare function normalizeOptionalStringArray(value: unknown): string[] | undefined;
1260
+ declare function normalizeReportFormats(value: unknown): Array<"txt" | "csv" | "md" | "html">;
1261
+ declare function normalizeOptionalReportFormats(value: unknown): Array<"txt" | "csv" | "md" | "html"> | undefined;
1262
+ declare function assertNoDisableLicenseEnforcementOption(value: unknown, source: string): void;
1263
+ declare function normalizeRunContextCollectionShapes(values: LoadStrikeRunContext): LoadStrikeRunContext;
1264
+ declare function normalizeRunnerOptionCollectionShapes(options: LoadStrikeRunnerOptions): LoadStrikeRunnerOptions;
1265
+ declare function extractContextOverridesFromConfig(config: Record<string, unknown>): Partial<LoadStrikeRunContext>;
1266
+ declare function extractContextOverridesFromArgs(args: string[]): Partial<LoadStrikeRunContext>;
1267
+ declare function normalizeRunArgsInput(argsOrSingleArray: Array<string | string[]>): string[];
1268
+ declare function toRunContext(options: LoadStrikeRunnerOptions): LoadStrikeRunContext;
1269
+ declare function requireNonEmpty(value: string, message: string): string;
1270
+ declare function mergeDefinedRecord<T extends object>(base: T, patch: Partial<T>): T;
1271
+ declare function validateRegisteredScenarios(scenarios: LoadStrikeScenario[]): void;
1272
+ declare function looksLikeRunContext(value: unknown): value is LoadStrikeRunContext;
1273
+ declare function validateScenarioNames(values: string[]): string[];
1274
+ declare function toInt(value: unknown): number;
1275
+ declare function toNullableInt(value: unknown): number | undefined;
1276
+ declare function tryParseDotnetDurationMs(value: unknown): number | undefined;
1277
+ declare function toNumber(value: unknown): number;
1278
+ declare function resolveSinkInit(sink: LoadStrikeReportingSink): ((context: LoadStrikeBaseContext, infraConfig: Record<string, unknown>) => Promise<void> | void) | undefined;
1279
+ declare function resolveSinkStart(sink: LoadStrikeReportingSink): ((session: LoadStrikeSessionStartInfo) => Promise<void> | void) | undefined;
1280
+ declare function resolveSinkSaveRealtimeStats(sink: LoadStrikeReportingSink): ((scenarioStats: LoadStrikeScenarioStats[]) => Promise<void> | void) | undefined;
1281
+ declare function resolveSinkSaveRealtimeMetrics(sink: LoadStrikeReportingSink): ((metrics: LoadStrikeMetricStats) => Promise<void> | void) | undefined;
1282
+ declare function resolveSinkSaveRunResult(sink: LoadStrikeReportingSink): ((result: LoadStrikeRunResult) => Promise<void> | void) | undefined;
1283
+ declare function resolveSinkStop(sink: LoadStrikeReportingSink): (() => Promise<void> | void) | undefined;
1284
+ declare function resolveSinkDispose(sink: LoadStrikeReportingSink): (() => Promise<void> | void) | undefined;
1285
+ interface CrossPlatformFailedResponseRow {
1286
+ occurredUtc: string;
1287
+ scenarioName: string;
1288
+ sourceEndpoint: string;
1289
+ destinationEndpoint: string;
1290
+ runMode: string;
1291
+ statusCode: string;
1292
+ trackingId?: string;
1293
+ eventId?: string;
1294
+ sourceTimestampUtc?: string;
1295
+ destinationTimestampUtc?: string;
1296
+ latencyMs?: number;
1297
+ message?: string;
1298
+ }
1299
+ interface CrossPlatformCorrelationRow extends CrossPlatformFailedResponseRow {
1300
+ isSuccess: boolean;
1301
+ isFailure: boolean;
1302
+ gatherByField?: string;
1303
+ gatherByValue?: string;
1304
+ }
1305
+ declare function resetCrossPlatformReportRegistries(): void;
1306
+ declare function addFailedResponseRow(row: CrossPlatformFailedResponseRow): void;
1307
+ declare function addCorrelationRow(row: CrossPlatformCorrelationRow): void;
1308
+ declare function resolveWorkerPlugins(customPlugins: LoadStrikeWorkerPlugin[]): LoadStrikeWorkerPlugin[];
1309
+ declare function createBuiltInWorkerPlugins(): LoadStrikeWorkerPlugin[];
1310
+ declare function buildGroupedCorrelationRows(rows: CrossPlatformCorrelationRow[]): Array<Record<string, unknown>>;
1311
+ declare function percentile(orderedValues: number[], percentileValue: number): number;
1312
+ declare function formatOptionalLatency(value: number | undefined): string;
1313
+ declare function normalizePluginData(pluginName: string, value: LoadStrikePluginData | null): LoadStrikePluginData;
1314
+ declare function withLifecycleErrors(value: LoadStrikePluginData, pluginName: string, lifecycleErrors: Map<string, string[]>): LoadStrikePluginData;
1315
+ declare function recordPluginLifecycleError(errors: Map<string, string[]>, pluginName: string, phase: "init" | "start" | "stop" | "dispose", error: unknown): void;
1316
+ declare function buildRichHtmlReport(result: LoadStrikeRunResult): string;
1317
+ declare function resolveSinkName(sink: LoadStrikeReportingSink, index: number): string;
1318
+ declare function validateNamedReportingSinks(sinks: LoadStrikeReportingSink[]): void;
1319
+ declare function readConfiguredSinkName(sink: LoadStrikeReportingSink): string;
1320
+ export declare const __loadstrikeTestExports: {
1321
+ LoadStrikeContext: typeof LoadStrikeContext;
1322
+ LoadStrikeCounter: typeof LoadStrikeCounter;
1323
+ LoadStrikeGauge: typeof LoadStrikeGauge;
1324
+ LoadStrikeMetric: typeof LoadStrikeMetric;
1325
+ LoadStrikeResponse: typeof LoadStrikeResponse;
1326
+ LoadStrikeRunner: typeof LoadStrikeRunner;
1327
+ LoadStrikeScenario: typeof LoadStrikeScenario;
1328
+ LoadStrikeSimulation: typeof LoadStrikeSimulation;
1329
+ LoadStrikeStep: typeof LoadStrikeStep;
1330
+ ManagedScenarioTrackingRuntime: typeof ManagedScenarioTrackingRuntime;
1331
+ ScenarioStatsAccumulator: typeof ScenarioStatsAccumulator;
1332
+ StepStatsAccumulator: typeof StepStatsAccumulator;
1333
+ TrackingFieldSelector: typeof TrackingFieldSelector;
1334
+ addCorrelationRow: typeof addCorrelationRow;
1335
+ addFailedResponseRow: typeof addFailedResponseRow;
1336
+ aggregateNodeStats: typeof aggregateNodeStats;
1337
+ asRecord: typeof asRecord;
1338
+ assertNoDisableLicenseEnforcementOption: typeof assertNoDisableLicenseEnforcementOption;
1339
+ buildEmptyNodeStats: typeof buildEmptyNodeStats;
1340
+ buildGroupedCorrelationRows: typeof buildGroupedCorrelationRows;
1341
+ buildMeasurementPlaceholder: typeof buildMeasurementPlaceholder;
1342
+ buildRichHtmlReport: typeof buildRichHtmlReport;
1343
+ buildThresholdCheckExpression: typeof buildThresholdCheckExpression;
1344
+ buildTrackingLeaseKey: typeof buildTrackingLeaseKey;
1345
+ buildTrackingRunNamespace: typeof buildTrackingRunNamespace;
1346
+ clusterNodeResultToNodeStats: typeof clusterNodeResultToNodeStats;
1347
+ combineAbortSignals: typeof combineAbortSignals;
1348
+ computeScenarioRequestCount: typeof computeScenarioRequestCount;
1349
+ computeWarmUpIterations: typeof computeWarmUpIterations;
1350
+ createBuiltInWorkerPlugins: typeof createBuiltInWorkerPlugins;
1351
+ createLogger: typeof createLogger;
1352
+ createRuntimeRandom: typeof createRuntimeRandom;
1353
+ delayWithAbort: typeof delayWithAbort;
1354
+ detailedToNodeStats: typeof detailedToNodeStats;
1355
+ evaluateThresholdsForScenarios: typeof evaluateThresholdsForScenarios;
1356
+ executeTrackedScenarioInvocation: typeof executeTrackedScenarioInvocation;
1357
+ extractContextOverridesFromArgs: typeof extractContextOverridesFromArgs;
1358
+ extractContextOverridesFromConfig: typeof extractContextOverridesFromConfig;
1359
+ findCaseInsensitiveKey: typeof findCaseInsensitiveKey;
1360
+ formatOptionalLatency: typeof formatOptionalLatency;
1361
+ formatUtcReportTimestamp: typeof formatUtcReportTimestamp;
1362
+ hasPluginRows: typeof hasPluginRows;
1363
+ inferRuntimeLegacyHttpResponseSource: typeof inferRuntimeLegacyHttpResponseSource;
1364
+ isComparisonFailed: typeof isComparisonFailed;
1365
+ loadJsonObject: typeof loadJsonObject;
1366
+ logLevelOrder: typeof logLevelOrder;
1367
+ looksLikeRunContext: typeof looksLikeRunContext;
1368
+ mapRuntimeCorrelationStore: typeof mapRuntimeCorrelationStore;
1369
+ mapRuntimeTrackingEndpointSpec: typeof mapRuntimeTrackingEndpointSpec;
1370
+ mergeDefinedRecord: typeof mergeDefinedRecord;
1371
+ normalizeCliOverrideKey: typeof normalizeCliOverrideKey;
1372
+ normalizeMetricValue: typeof normalizeMetricValue;
1373
+ normalizeOptionalReportFormats: typeof normalizeOptionalReportFormats;
1374
+ normalizeOptionalStringArray: typeof normalizeOptionalStringArray;
1375
+ normalizeReplyArguments: typeof normalizeReplyArguments;
1376
+ normalizePluginData: typeof normalizePluginData;
1377
+ normalizeReportFormats: typeof normalizeReportFormats;
1378
+ normalizeRunArgsInput: typeof normalizeRunArgsInput;
1379
+ normalizeRunContextCollectionShapes: typeof normalizeRunContextCollectionShapes;
1380
+ normalizeRunnerOptionCollectionShapes: typeof normalizeRunnerOptionCollectionShapes;
1381
+ normalizeRuntimeHttpTrackingPayloadSource: typeof normalizeRuntimeHttpTrackingPayloadSource;
1382
+ normalizeRuntimeTrackingPayload: typeof normalizeRuntimeTrackingPayload;
1383
+ normalizeStringArray: typeof normalizeStringArray;
1384
+ normalizeFailureArguments: typeof normalizeFailureArguments;
1385
+ normalizeTrackingRunMode: typeof normalizeTrackingRunMode;
1386
+ normalizeThresholdScope: typeof normalizeThresholdScope;
1387
+ parseAliasDate: typeof parseAliasDate;
1388
+ parseMinimumLogLevelToken: typeof parseMinimumLogLevelToken;
1389
+ parseNodeTypeToken: typeof parseNodeTypeToken;
1390
+ parseStrictBooleanToken: typeof parseStrictBooleanToken;
1391
+ percentile: typeof percentile;
1392
+ pickOptionalTrackingSelectorString: typeof pickOptionalTrackingSelectorString;
1393
+ pickTrackingNumber: typeof pickTrackingNumber;
1394
+ produceOrConsumeTrackingPayload: typeof produceOrConsumeTrackingPayload;
1395
+ readConfiguredSinkName: typeof readConfiguredSinkName;
1396
+ readRuntimeRedisCorrelationStoreOptions: typeof readRuntimeRedisCorrelationStoreOptions;
1397
+ readRuntimeTrackingId: typeof readRuntimeTrackingId;
1398
+ recordPluginLifecycleError: typeof recordPluginLifecycleError;
1399
+ requireNonEmpty: typeof requireNonEmpty;
1400
+ attachScenarioStatsAliases: typeof attachScenarioStatsAliases;
1401
+ attachNodeStatsAliases: typeof attachNodeStatsAliases;
1402
+ attachRunResultAliases: typeof attachRunResultAliases;
1403
+ resolveClusterExecutionMode: typeof resolveClusterExecutionMode;
1404
+ resolveThresholdActualValue: typeof resolveThresholdActualValue;
1405
+ resetCrossPlatformReportRegistries: typeof resetCrossPlatformReportRegistries;
1406
+ resolveSinkDispose: typeof resolveSinkDispose;
1407
+ resolveSinkInit: typeof resolveSinkInit;
1408
+ resolveSinkName: typeof resolveSinkName;
1409
+ resolveSinkSaveRealtimeMetrics: typeof resolveSinkSaveRealtimeMetrics;
1410
+ resolveSinkSaveRealtimeStats: typeof resolveSinkSaveRealtimeStats;
1411
+ resolveSinkSaveRunResult: typeof resolveSinkSaveRunResult;
1412
+ resolveSinkStart: typeof resolveSinkStart;
1413
+ resolveSinkStop: typeof resolveSinkStop;
1414
+ resolveWorkerPlugins: typeof resolveWorkerPlugins;
1415
+ runtimeParseBodyAsObject: typeof runtimeParseBodyAsObject;
1416
+ sanitizeReportFileName: typeof sanitizeReportFileName;
1417
+ sanitizeTrackingNamespacePart: typeof sanitizeTrackingNamespacePart;
1418
+ setRuntimeJsonPathValue: typeof setRuntimeJsonPathValue;
1419
+ stripCaseInsensitivePrefix: typeof stripCaseInsensitivePrefix;
1420
+ toBoolean: typeof toBoolean;
1421
+ toDetailedRunResultFromNodeStats: typeof toDetailedRunResultFromNodeStats;
1422
+ toInt: typeof toInt;
1423
+ toNullableInt: typeof toNullableInt;
1424
+ toNumber: typeof toNumber;
1425
+ toRunContext: typeof toRunContext;
1426
+ toTrackingStringMap: typeof toTrackingStringMap;
1427
+ tryParseDotnetDurationMs: typeof tryParseDotnetDurationMs;
1428
+ tryParseMinimumLogLevelToken: typeof tryParseMinimumLogLevelToken;
1429
+ tryParseNodeTypeToken: typeof tryParseNodeTypeToken;
1430
+ tryReadConfigValue: typeof tryReadConfigValue;
1431
+ validateNamedReportingSinks: typeof validateNamedReportingSinks;
1432
+ validateRegisteredScenarios: typeof validateRegisteredScenarios;
1433
+ validateRuntimeRedisCorrelationStoreConfiguration: typeof validateRuntimeRedisCorrelationStoreConfiguration;
1434
+ validateRuntimeTrackingConfiguration: typeof validateRuntimeTrackingConfiguration;
1435
+ validateScenarioNames: typeof validateScenarioNames;
1436
+ waitForTrackingOutcome: typeof waitForTrackingOutcome;
1437
+ withLifecycleErrors: typeof withLifecycleErrors;
1438
+ };
1052
1439
  export {};