@glubean/runner 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/engine-bridge.d.ts +4 -0
- package/dist/engine-bridge.d.ts.map +1 -1
- package/dist/engine-bridge.js +10 -1
- package/dist/engine-bridge.js.map +1 -1
- package/dist/executor.d.ts +2 -2
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +9 -226
- package/dist/executor.js.map +1 -1
- package/dist/harness.js +3 -79
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/load/continuation-pool.d.ts +82 -0
- package/dist/load/continuation-pool.d.ts.map +1 -0
- package/dist/load/continuation-pool.js +154 -0
- package/dist/load/continuation-pool.js.map +1 -0
- package/dist/load/execute-iteration.d.ts +126 -0
- package/dist/load/execute-iteration.d.ts.map +1 -0
- package/dist/load/execute-iteration.js +367 -0
- package/dist/load/execute-iteration.js.map +1 -0
- package/dist/load/histogram.d.ts +63 -0
- package/dist/load/histogram.d.ts.map +1 -0
- package/dist/load/histogram.js +149 -0
- package/dist/load/histogram.js.map +1 -0
- package/dist/load/orchestrator.d.ts +55 -0
- package/dist/load/orchestrator.d.ts.map +1 -0
- package/dist/load/orchestrator.js +571 -0
- package/dist/load/orchestrator.js.map +1 -0
- package/dist/load/reducer.d.ts +109 -0
- package/dist/load/reducer.d.ts.map +1 -0
- package/dist/load/reducer.js +718 -0
- package/dist/load/reducer.js.map +1 -0
- package/dist/load/route-key.d.ts +38 -0
- package/dist/load/route-key.d.ts.map +1 -0
- package/dist/load/route-key.js +107 -0
- package/dist/load/route-key.js.map +1 -0
- package/dist/load/samples.d.ts +83 -0
- package/dist/load/samples.d.ts.map +1 -0
- package/dist/load/samples.js +269 -0
- package/dist/load/samples.js.map +1 -0
- package/dist/load/sink.d.ts +127 -0
- package/dist/load/sink.d.ts.map +1 -0
- package/dist/load/sink.js +351 -0
- package/dist/load/sink.js.map +1 -0
- package/dist/load/subprocess.d.ts +83 -0
- package/dist/load/subprocess.d.ts.map +1 -0
- package/dist/load/subprocess.js +229 -0
- package/dist/load/subprocess.js.map +1 -0
- package/dist/load/threshold.d.ts +44 -0
- package/dist/load/threshold.d.ts.map +1 -0
- package/dist/load/threshold.js +197 -0
- package/dist/load/threshold.js.map +1 -0
- package/dist/load/timeline.d.ts +36 -0
- package/dist/load/timeline.d.ts.map +1 -0
- package/dist/load/timeline.js +158 -0
- package/dist/load/timeline.js.map +1 -0
- package/dist/load-harness.d.ts +2 -0
- package/dist/load-harness.d.ts.map +1 -0
- package/dist/load-harness.js +105 -0
- package/dist/load-harness.js.map +1 -0
- package/dist/runner-resolve.d.ts +53 -0
- package/dist/runner-resolve.d.ts.map +1 -0
- package/dist/runner-resolve.js +264 -0
- package/dist/runner-resolve.js.map +1 -0
- package/dist/workflow/event-timeline.d.ts +3 -0
- package/dist/workflow/event-timeline.d.ts.map +1 -0
- package/dist/workflow/event-timeline.js +72 -0
- package/dist/workflow/event-timeline.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../src/load/reducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heuristic routeKey normalization (M3-e).
|
|
3
|
+
*
|
|
4
|
+
* Until explicit routeKeys / a contract catalog land (M8), the load sink derives
|
|
5
|
+
* an endpoint's routeKey from the request's METHOD + pathname. Raw pathnames are
|
|
6
|
+
* high-cardinality (`/items/42`, `/items/43`, `/orders/<uuid>` …), so without
|
|
7
|
+
* normalization every id spawns its own endpoint bucket and the LoadArtifact's
|
|
8
|
+
* endpoint aggregates explode. This collapses id-LIKE path segments to `:id` so
|
|
9
|
+
* the same logical endpoint aggregates together.
|
|
10
|
+
*
|
|
11
|
+
* The heuristic is deliberately CONSERVATIVE — it only collapses segments that are
|
|
12
|
+
* unambiguously ids (pure integers, UUIDs, Mongo ObjectIds, long hex hashes) — so
|
|
13
|
+
* real route words (`/api/v2`, `/users/me`) are never merged. Anything it touches
|
|
14
|
+
* stays flagged `routeKeyHeuristic: true` so consumers know it was inferred.
|
|
15
|
+
*/
|
|
16
|
+
/** Whether a single path segment looks like a high-cardinality id (→ `:id`). */
|
|
17
|
+
export declare function looksLikeIdSegment(segment: string): boolean;
|
|
18
|
+
/** Collapse id-like segments of a pathname to `:id` (query/hash stripped). */
|
|
19
|
+
export declare function normalizeRoutePath(pathname: string): string;
|
|
20
|
+
/** A trace's resolved method + heuristic routeKey. */
|
|
21
|
+
export interface ResolvedRoute {
|
|
22
|
+
method: string;
|
|
23
|
+
routeKey: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve a request's method + heuristic routeKey from a trace's fields.
|
|
27
|
+
*
|
|
28
|
+
* HTTP path normalization (method prefix + id-like segments → `:id`) applies to
|
|
29
|
+
* HTTP traces — `protocol === "http"` AND legacy traces that OMIT `protocol` but
|
|
30
|
+
* carry HTTP `method`/`url` fields. For HTTP: method precedence is explicit
|
|
31
|
+
* `method` > the method embedded in `target` (`"POST /orders"`) > `"GET"` (so a
|
|
32
|
+
* target-only trace keeps its real verb), and path precedence is `url` >
|
|
33
|
+
* `target`'s path. Only an EXPLICIT non-http protocol (gRPC `"Service/Method"`,
|
|
34
|
+
* custom protocols) is treated as non-HTTP: its `target` IS the routeKey
|
|
35
|
+
* (normalizing it would fabricate a bogus HTTP route), used verbatim.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveRouteKey(method: string | undefined, url: string | undefined, target: string | undefined, protocol: string | undefined, explicitRouteKey?: string): ResolvedRoute;
|
|
38
|
+
//# sourceMappingURL=route-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-key.d.ts","sourceRoot":"","sources":["../../src/load/route-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO3D;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU3D;AAyBD,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,gBAAgB,CAAC,EAAE,MAAM,GACxB,aAAa,CAqBf"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heuristic routeKey normalization (M3-e).
|
|
3
|
+
*
|
|
4
|
+
* Until explicit routeKeys / a contract catalog land (M8), the load sink derives
|
|
5
|
+
* an endpoint's routeKey from the request's METHOD + pathname. Raw pathnames are
|
|
6
|
+
* high-cardinality (`/items/42`, `/items/43`, `/orders/<uuid>` …), so without
|
|
7
|
+
* normalization every id spawns its own endpoint bucket and the LoadArtifact's
|
|
8
|
+
* endpoint aggregates explode. This collapses id-LIKE path segments to `:id` so
|
|
9
|
+
* the same logical endpoint aggregates together.
|
|
10
|
+
*
|
|
11
|
+
* The heuristic is deliberately CONSERVATIVE — it only collapses segments that are
|
|
12
|
+
* unambiguously ids (pure integers, UUIDs, Mongo ObjectIds, long hex hashes) — so
|
|
13
|
+
* real route words (`/api/v2`, `/users/me`) are never merged. Anything it touches
|
|
14
|
+
* stays flagged `routeKeyHeuristic: true` so consumers know it was inferred.
|
|
15
|
+
*/
|
|
16
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
17
|
+
const OBJECT_ID_RE = /^[0-9a-f]{24}$/i; // Mongo ObjectId
|
|
18
|
+
const LONG_HEX_RE = /^[0-9a-f]{32,}$/i; // md5 / sha-* / other hex digests
|
|
19
|
+
/** Whether a single path segment looks like a high-cardinality id (→ `:id`). */
|
|
20
|
+
export function looksLikeIdSegment(segment) {
|
|
21
|
+
if (segment === "")
|
|
22
|
+
return false;
|
|
23
|
+
if (/^\d+$/.test(segment))
|
|
24
|
+
return true; // integer id
|
|
25
|
+
if (UUID_RE.test(segment))
|
|
26
|
+
return true;
|
|
27
|
+
if (OBJECT_ID_RE.test(segment))
|
|
28
|
+
return true;
|
|
29
|
+
if (LONG_HEX_RE.test(segment))
|
|
30
|
+
return true;
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
/** Collapse id-like segments of a pathname to `:id` (query/hash stripped). */
|
|
34
|
+
export function normalizeRoutePath(pathname) {
|
|
35
|
+
if (!pathname)
|
|
36
|
+
return "";
|
|
37
|
+
// Defensive: pathnames from the engine carry no query/hash, but strip just in case.
|
|
38
|
+
const q = pathname.search(/[?#]/);
|
|
39
|
+
const path = q >= 0 ? pathname.slice(0, q) : pathname;
|
|
40
|
+
if (path === "/" || path === "")
|
|
41
|
+
return path;
|
|
42
|
+
return path
|
|
43
|
+
.split("/")
|
|
44
|
+
.map((seg) => (looksLikeIdSegment(seg) ? ":id" : seg))
|
|
45
|
+
.join("/");
|
|
46
|
+
}
|
|
47
|
+
/** Split an engine/user `target` (`"METHOD /pathname"`) into its method + path. */
|
|
48
|
+
function splitTarget(target) {
|
|
49
|
+
if (!target)
|
|
50
|
+
return {};
|
|
51
|
+
const sp = target.indexOf(" ");
|
|
52
|
+
if (sp < 0)
|
|
53
|
+
return { path: target };
|
|
54
|
+
return { method: target.slice(0, sp), path: target.slice(sp + 1) };
|
|
55
|
+
}
|
|
56
|
+
/** Extract the pathname from a trace's `url`, or undefined if absent/unparseable. */
|
|
57
|
+
function pathnameFromUrl(url) {
|
|
58
|
+
if (!url)
|
|
59
|
+
return undefined;
|
|
60
|
+
try {
|
|
61
|
+
return new URL(url).pathname;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Relative URL — resolve against a dummy base to extract the pathname.
|
|
65
|
+
try {
|
|
66
|
+
return new URL(url, "http://glubean.invalid").pathname;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Resolve a request's method + heuristic routeKey from a trace's fields.
|
|
75
|
+
*
|
|
76
|
+
* HTTP path normalization (method prefix + id-like segments → `:id`) applies to
|
|
77
|
+
* HTTP traces — `protocol === "http"` AND legacy traces that OMIT `protocol` but
|
|
78
|
+
* carry HTTP `method`/`url` fields. For HTTP: method precedence is explicit
|
|
79
|
+
* `method` > the method embedded in `target` (`"POST /orders"`) > `"GET"` (so a
|
|
80
|
+
* target-only trace keeps its real verb), and path precedence is `url` >
|
|
81
|
+
* `target`'s path. Only an EXPLICIT non-http protocol (gRPC `"Service/Method"`,
|
|
82
|
+
* custom protocols) is treated as non-HTTP: its `target` IS the routeKey
|
|
83
|
+
* (normalizing it would fabricate a bogus HTTP route), used verbatim.
|
|
84
|
+
*/
|
|
85
|
+
export function resolveRouteKey(method, url, target, protocol, explicitRouteKey) {
|
|
86
|
+
// An EXACT route template (M8) wins over every heuristic: a `contract.http()` client
|
|
87
|
+
// (or a user header) supplies its `endpoint`, e.g. "GET /runs/:runId", verbatim. Method
|
|
88
|
+
// precedence: the template's own verb > explicit `method` > the verb in `target`
|
|
89
|
+
// ("POST /orders") > "GET". A PATH-ONLY template ("/orders", no verb) is prefixed with
|
|
90
|
+
// the recovered method, since the reducer keys endpoints by routeKey alone — otherwise a
|
|
91
|
+
// GET and POST on the same path would collapse into one endpoint.
|
|
92
|
+
if (explicitRouteKey !== undefined && explicitRouteKey !== "") {
|
|
93
|
+
const keyMethod = splitTarget(explicitRouteKey).method;
|
|
94
|
+
const resolved = keyMethod ?? method ?? splitTarget(target).method ?? "GET";
|
|
95
|
+
return { method: resolved, routeKey: keyMethod ? explicitRouteKey : `${resolved} ${explicitRouteKey}` };
|
|
96
|
+
}
|
|
97
|
+
// Only an explicit non-"http" protocol opts out of HTTP normalization; a missing
|
|
98
|
+
// protocol is the legacy HTTP shape (method/url) and must still normalize.
|
|
99
|
+
if (protocol !== undefined && protocol !== "http") {
|
|
100
|
+
return { method: method ?? "", routeKey: target ?? "" };
|
|
101
|
+
}
|
|
102
|
+
const t = splitTarget(target);
|
|
103
|
+
const resolvedMethod = method ?? t.method ?? "GET";
|
|
104
|
+
const path = pathnameFromUrl(url) ?? t.path ?? "";
|
|
105
|
+
return { method: resolvedMethod, routeKey: `${resolvedMethod} ${normalizeRoutePath(path)}` };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=route-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-key.js","sourceRoot":"","sources":["../../src/load/route-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded failure-trace / slow-transaction sampling for the load reducer.
|
|
3
|
+
*
|
|
4
|
+
* The aggregates answer "how bad, where"; the samples answer "show me one". For each
|
|
5
|
+
* in-flight iteration the collector buffers a CAPPED list of observations (requests +
|
|
6
|
+
* failed assertions) plus its slowest step and a bounded top-k of busiest endpoints. At
|
|
7
|
+
* iteration:end:
|
|
8
|
+
* - a FAILED iteration keeps a `LoadFailureTraceSample` (its observations + the failed
|
|
9
|
+
* step), up to `maxFailureTraces` (the first N — the onset is the useful part);
|
|
10
|
+
* - a SUCCESSFUL one competes for the top `maxSlowTransactionSummaries` slowest, kept as
|
|
11
|
+
* a `LoadSlowTransactionSummary` (no full trace, just its slowest step + top endpoints).
|
|
12
|
+
*
|
|
13
|
+
* Memory is bounded: per in-flight iteration the observation buffer AND the endpoint top-k
|
|
14
|
+
* are capped, the in-flight count is bounded by concurrency, and the kept-sample counts are
|
|
15
|
+
* capped. The caps come from the plan's `report` config (0 disables a sample type entirely —
|
|
16
|
+
* then nothing is even buffered for it).
|
|
17
|
+
*/
|
|
18
|
+
import type { LoadArtifactSamples, LoadErrorKind } from "@glubean/sdk/load";
|
|
19
|
+
type Phase = "primary" | "continuation";
|
|
20
|
+
export declare class LoadSampleCollector {
|
|
21
|
+
private readonly maxFailureTraces;
|
|
22
|
+
private readonly maxSlow;
|
|
23
|
+
private readonly buffers;
|
|
24
|
+
private readonly failureTraces;
|
|
25
|
+
private readonly slow;
|
|
26
|
+
/** `report` caps (0 disables a sample type entirely; undefined → the default). */
|
|
27
|
+
constructor(caps?: {
|
|
28
|
+
maxFailureTraces?: number;
|
|
29
|
+
maxSlowTransactionSummaries?: number;
|
|
30
|
+
});
|
|
31
|
+
/** Whether any per-iteration buffering is needed at all. */
|
|
32
|
+
private get tracking();
|
|
33
|
+
beginIteration(iterationId: string, info: {
|
|
34
|
+
scenarioId: string;
|
|
35
|
+
scenarioRefId?: string;
|
|
36
|
+
producerSlotId: string;
|
|
37
|
+
feederKeys?: Record<string, string>;
|
|
38
|
+
}): void;
|
|
39
|
+
recordRequest(iterationId: string, r: {
|
|
40
|
+
tsOffsetMs: number;
|
|
41
|
+
stepId?: string;
|
|
42
|
+
stepName?: string;
|
|
43
|
+
phase?: Phase;
|
|
44
|
+
method: string;
|
|
45
|
+
routeKey: string;
|
|
46
|
+
status?: number;
|
|
47
|
+
ok: boolean;
|
|
48
|
+
durationMs: number;
|
|
49
|
+
errorKind?: LoadErrorKind;
|
|
50
|
+
}): void;
|
|
51
|
+
recordAssertionFailure(iterationId: string, a: {
|
|
52
|
+
tsOffsetMs: number;
|
|
53
|
+
stepId?: string;
|
|
54
|
+
stepName?: string;
|
|
55
|
+
phase?: Phase;
|
|
56
|
+
message?: string;
|
|
57
|
+
actual?: unknown;
|
|
58
|
+
hasActual?: boolean;
|
|
59
|
+
expected?: unknown;
|
|
60
|
+
hasExpected?: boolean;
|
|
61
|
+
}): void;
|
|
62
|
+
recordStep(iterationId: string, s: {
|
|
63
|
+
stepId: string;
|
|
64
|
+
stepName: string;
|
|
65
|
+
durationMs: number;
|
|
66
|
+
ok: boolean;
|
|
67
|
+
skipped: boolean;
|
|
68
|
+
}): void;
|
|
69
|
+
endIteration(iterationId: string, end: {
|
|
70
|
+
ok: boolean;
|
|
71
|
+
durationMs: number;
|
|
72
|
+
errorKind?: LoadErrorKind;
|
|
73
|
+
}): void;
|
|
74
|
+
finalize(): LoadArtifactSamples;
|
|
75
|
+
private pushObservation;
|
|
76
|
+
/** Keep only the TOP_ENDPOINTS slowest endpoints seen this iteration (sorted desc). */
|
|
77
|
+
private offerEndpoint;
|
|
78
|
+
private identityOf;
|
|
79
|
+
/** Keep this transaction iff it's among the top `maxSlow` slowest (sorted DESC). */
|
|
80
|
+
private offerSlow;
|
|
81
|
+
}
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=samples.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"samples.d.ts","sourceRoot":"","sources":["../../src/load/samples.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EAKd,MAAM,mBAAmB,CAAC;AA4E3B,KAAK,KAAK,GAAG,SAAS,GAAG,cAAc,CAAC;AAexC,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgC;IAE9D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IAEzD,kFAAkF;gBACtE,IAAI,GAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,2BAA2B,CAAC,EAAE,MAAM,CAAA;KAAO;IAK1F,4DAA4D;IAC5D,OAAO,KAAK,QAAQ,GAEnB;IAED,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAChH,IAAI;IAcP,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,aAAa,CAAC;KAC3B,GACA,IAAI;IA4BP,sBAAsB,CACpB,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QAGjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,GACA,IAAI;IAoBP,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GACzF,IAAI;IAWP,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,IAAI;IA4B5G,QAAQ,IAAI,mBAAmB;IAS/B,OAAO,CAAC,eAAe;IAoBvB,uFAAuF;IACvF,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,UAAU;IAalB,oFAAoF;IACpF,OAAO,CAAC,SAAS;CAUlB"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
const DEFAULT_MAX_FAILURE_TRACES = 20;
|
|
2
|
+
const DEFAULT_MAX_SLOW = 20;
|
|
3
|
+
const MAX_OBS_PER_TRACE = 40;
|
|
4
|
+
const TOP_ENDPOINTS = 3;
|
|
5
|
+
// Memory backstop on CONCURRENTLY-buffered iterations (each holds a bounded obs/endpoint
|
|
6
|
+
// buffer until iteration:end). Normal runs stay far below this — in-flight is bounded by
|
|
7
|
+
// concurrency + continuation limits. It only bites the pathological `releaseProducerSlot` +
|
|
8
|
+
// unbounded-continuation case with slow/hung tails, where in-flight iterations would otherwise
|
|
9
|
+
// grow without bound; there, excess iterations are simply not sampled.
|
|
10
|
+
const MAX_ACTIVE_BUFFERS = 4096;
|
|
11
|
+
const MAX_PREVIEW_CHARS = 512;
|
|
12
|
+
const MAX_PREVIEW_DEPTH = 6;
|
|
13
|
+
const PREVIEW_NODE_BUDGET = 512; // hard cap on nodes visited — bounds CPU/memory for huge payloads
|
|
14
|
+
const truncateStr = (s) => (s.length > MAX_PREVIEW_CHARS ? `${s.slice(0, MAX_PREVIEW_CHARS)}…` : s);
|
|
15
|
+
/** Deep-truncate `v` into a bounded, JSON-safe structure WITHOUT walking the whole input: a
|
|
16
|
+
* shared node budget caps total work, arrays/objects stop early when it's exhausted, depth
|
|
17
|
+
* is capped, strings are truncated, and BigInt / symbol / function become strings. This runs
|
|
18
|
+
* BEFORE serialization, so a huge response body can't make JSON.stringify allocate the whole
|
|
19
|
+
* value first (codex). */
|
|
20
|
+
function boundStructure(v, depth, budget) {
|
|
21
|
+
if (budget.n <= 0)
|
|
22
|
+
return "…";
|
|
23
|
+
budget.n -= 1;
|
|
24
|
+
if (typeof v === "string")
|
|
25
|
+
return truncateStr(v);
|
|
26
|
+
if (typeof v === "number")
|
|
27
|
+
return Number.isFinite(v) ? v : String(v); // NaN / ±Infinity → JSON null
|
|
28
|
+
if (typeof v === "boolean" || v === null)
|
|
29
|
+
return v;
|
|
30
|
+
if (typeof v === "bigint")
|
|
31
|
+
return truncateStr(`${v}n`);
|
|
32
|
+
if (typeof v !== "object")
|
|
33
|
+
return truncateStr(String(v)); // symbol / function — length-capped
|
|
34
|
+
if (depth >= MAX_PREVIEW_DEPTH)
|
|
35
|
+
return Array.isArray(v) ? "[…]" : "{…}";
|
|
36
|
+
if (Array.isArray(v)) {
|
|
37
|
+
const out = [];
|
|
38
|
+
for (let i = 0; i < v.length && budget.n > 0; i++)
|
|
39
|
+
out.push(boundStructure(v[i], depth + 1, budget));
|
|
40
|
+
if (v.length > out.length)
|
|
41
|
+
out.push(`…+${v.length - out.length} more`);
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
const out = {};
|
|
45
|
+
for (const k in v) {
|
|
46
|
+
if (!Object.prototype.hasOwnProperty.call(v, k))
|
|
47
|
+
continue;
|
|
48
|
+
if (budget.n <= 0) {
|
|
49
|
+
out["…"] = "…";
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
out[k] = boundStructure(v[k], depth + 1, budget);
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
/** Bound a captured assertion value for the trace so a single retained failure sample can't
|
|
57
|
+
* carry an unbounded payload AND so the preview is JSON-safe — the artifact is later
|
|
58
|
+
* `JSON.stringify`d, which throws on a BigInt. Primitives pass through (long strings
|
|
59
|
+
* truncated; BigInt / symbol / function → string); a structured value is deep-truncated to a
|
|
60
|
+
* bounded structure, then serialized to a length-capped JSON string (a debugging PREVIEW). */
|
|
61
|
+
function previewValue(v) {
|
|
62
|
+
if (typeof v === "string")
|
|
63
|
+
return truncateStr(v);
|
|
64
|
+
if (typeof v === "number")
|
|
65
|
+
return Number.isFinite(v) ? v : String(v); // NaN / ±Infinity → JSON null
|
|
66
|
+
if (typeof v === "boolean" || v === null)
|
|
67
|
+
return v;
|
|
68
|
+
if (typeof v === "bigint")
|
|
69
|
+
return truncateStr(`${v}n`);
|
|
70
|
+
if (typeof v !== "object")
|
|
71
|
+
return truncateStr(String(v)); // symbol / function — length-capped
|
|
72
|
+
let s;
|
|
73
|
+
try {
|
|
74
|
+
s = JSON.stringify(boundStructure(v, 0, { n: PREVIEW_NODE_BUDGET }));
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return "[unserializable]"; // a throwing getter / toJSON on the bounded structure
|
|
78
|
+
}
|
|
79
|
+
return truncateStr(s === undefined ? String(v) : s);
|
|
80
|
+
}
|
|
81
|
+
/** The failure cause worth keeping over a successful request when the trace buffer is full:
|
|
82
|
+
* a failed assertion (only failures are recorded) or a failed/errored request. */
|
|
83
|
+
function isHighValue(o) {
|
|
84
|
+
return o.type === "assertion" || (o.type === "request" && !o.ok);
|
|
85
|
+
}
|
|
86
|
+
export class LoadSampleCollector {
|
|
87
|
+
maxFailureTraces;
|
|
88
|
+
maxSlow;
|
|
89
|
+
buffers = new Map();
|
|
90
|
+
failureTraces = [];
|
|
91
|
+
// Slowest successful transactions, kept sorted DESC by durationMs (top `maxSlow`).
|
|
92
|
+
slow = [];
|
|
93
|
+
/** `report` caps (0 disables a sample type entirely; undefined → the default). */
|
|
94
|
+
constructor(caps = {}) {
|
|
95
|
+
this.maxFailureTraces = caps.maxFailureTraces ?? DEFAULT_MAX_FAILURE_TRACES;
|
|
96
|
+
this.maxSlow = caps.maxSlowTransactionSummaries ?? DEFAULT_MAX_SLOW;
|
|
97
|
+
}
|
|
98
|
+
/** Whether any per-iteration buffering is needed at all. */
|
|
99
|
+
get tracking() {
|
|
100
|
+
return this.maxFailureTraces > 0 || this.maxSlow > 0;
|
|
101
|
+
}
|
|
102
|
+
beginIteration(iterationId, info) {
|
|
103
|
+
if (!this.tracking)
|
|
104
|
+
return; // both sample types disabled — buffer nothing
|
|
105
|
+
if (this.buffers.size >= MAX_ACTIVE_BUFFERS)
|
|
106
|
+
return; // memory backstop (see the const)
|
|
107
|
+
this.buffers.set(iterationId, {
|
|
108
|
+
scenarioId: info.scenarioId,
|
|
109
|
+
...(info.scenarioRefId !== undefined ? { scenarioRefId: info.scenarioRefId } : {}),
|
|
110
|
+
producerSlotId: info.producerSlotId,
|
|
111
|
+
...(info.feederKeys !== undefined ? { feederKeys: info.feederKeys } : {}),
|
|
112
|
+
observations: [],
|
|
113
|
+
droppedObservations: 0,
|
|
114
|
+
endpoints: [],
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
recordRequest(iterationId, r) {
|
|
118
|
+
const b = this.buffers.get(iterationId);
|
|
119
|
+
if (b === undefined)
|
|
120
|
+
return;
|
|
121
|
+
if (this.maxFailureTraces > 0) {
|
|
122
|
+
this.pushObservation(b, {
|
|
123
|
+
type: "request",
|
|
124
|
+
tsOffsetMs: r.tsOffsetMs,
|
|
125
|
+
...(r.stepId !== undefined ? { stepId: r.stepId } : {}),
|
|
126
|
+
...(r.stepName !== undefined ? { stepName: r.stepName } : {}),
|
|
127
|
+
...(r.phase !== undefined ? { phase: r.phase } : {}),
|
|
128
|
+
method: r.method,
|
|
129
|
+
routeKey: r.routeKey,
|
|
130
|
+
...(r.status !== undefined ? { status: r.status } : {}),
|
|
131
|
+
ok: r.ok,
|
|
132
|
+
durationMs: r.durationMs,
|
|
133
|
+
...(r.errorKind !== undefined ? { errorKind: r.errorKind } : {}),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
if (this.maxSlow > 0) {
|
|
137
|
+
this.offerEndpoint(b, {
|
|
138
|
+
routeKey: r.routeKey,
|
|
139
|
+
...(r.phase !== undefined ? { phase: r.phase } : {}),
|
|
140
|
+
durationMs: r.durationMs,
|
|
141
|
+
...(r.status !== undefined ? { status: r.status } : {}),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
recordAssertionFailure(iterationId, a) {
|
|
146
|
+
const b = this.buffers.get(iterationId);
|
|
147
|
+
if (b === undefined || this.maxFailureTraces === 0)
|
|
148
|
+
return;
|
|
149
|
+
// The caller may pass an explicit presence flag (to retain an `undefined` operand) or rely
|
|
150
|
+
// on the value being defined.
|
|
151
|
+
const hasActual = a.hasActual ?? a.actual !== undefined;
|
|
152
|
+
const hasExpected = a.hasExpected ?? a.expected !== undefined;
|
|
153
|
+
this.pushObservation(b, {
|
|
154
|
+
type: "assertion",
|
|
155
|
+
tsOffsetMs: a.tsOffsetMs,
|
|
156
|
+
...(a.stepId !== undefined ? { stepId: a.stepId } : {}),
|
|
157
|
+
...(a.stepName !== undefined ? { stepName: a.stepName } : {}),
|
|
158
|
+
...(a.phase !== undefined ? { phase: a.phase } : {}),
|
|
159
|
+
passed: false,
|
|
160
|
+
...(a.message !== undefined ? { message: a.message } : {}),
|
|
161
|
+
...(hasActual ? { actualPreview: previewValue(a.actual) } : {}),
|
|
162
|
+
...(hasExpected ? { expectedPreview: previewValue(a.expected) } : {}),
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
recordStep(iterationId, s) {
|
|
166
|
+
const b = this.buffers.get(iterationId);
|
|
167
|
+
if (b === undefined || s.skipped)
|
|
168
|
+
return;
|
|
169
|
+
if (this.maxSlow > 0 && (b.slowestStep === undefined || s.durationMs > b.slowestStep.durationMs)) {
|
|
170
|
+
b.slowestStep = { stepId: s.stepId, stepName: s.stepName, durationMs: s.durationMs };
|
|
171
|
+
}
|
|
172
|
+
if (this.maxFailureTraces > 0 && !s.ok && b.failedStep === undefined) {
|
|
173
|
+
b.failedStep = { stepId: s.stepId, stepName: s.stepName };
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
endIteration(iterationId, end) {
|
|
177
|
+
const b = this.buffers.get(iterationId);
|
|
178
|
+
if (b === undefined)
|
|
179
|
+
return;
|
|
180
|
+
this.buffers.delete(iterationId);
|
|
181
|
+
const identity = this.identityOf(iterationId, b);
|
|
182
|
+
if (!end.ok) {
|
|
183
|
+
if (this.failureTraces.length < this.maxFailureTraces) {
|
|
184
|
+
this.failureTraces.push({
|
|
185
|
+
identity,
|
|
186
|
+
durationMs: end.durationMs,
|
|
187
|
+
...(end.errorKind !== undefined ? { errorKind: end.errorKind } : {}),
|
|
188
|
+
...(b.failedStep !== undefined ? { failedStepId: b.failedStep.stepId, failedStepName: b.failedStep.stepName } : {}),
|
|
189
|
+
observations: b.observations,
|
|
190
|
+
truncated: b.droppedObservations > 0,
|
|
191
|
+
droppedObservationCount: b.droppedObservations,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else if (this.maxSlow > 0) {
|
|
196
|
+
this.offerSlow({
|
|
197
|
+
identity,
|
|
198
|
+
durationMs: end.durationMs,
|
|
199
|
+
...(b.slowestStep !== undefined ? { slowStepId: b.slowestStep.stepId, slowStepName: b.slowestStep.stepName } : {}),
|
|
200
|
+
topEndpoints: b.endpoints, // already a bounded top-k, sorted desc
|
|
201
|
+
truncated: false,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
finalize() {
|
|
206
|
+
return {
|
|
207
|
+
maxFailureTraces: this.maxFailureTraces,
|
|
208
|
+
maxSlowTransactionSummaries: this.maxSlow,
|
|
209
|
+
failureTraces: this.failureTraces,
|
|
210
|
+
slowTransactions: this.slow,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
pushObservation(b, obs) {
|
|
214
|
+
if (b.observations.length < MAX_OBS_PER_TRACE) {
|
|
215
|
+
b.observations.push(obs);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// Full. The exact failure cause — a failed assertion OR a failed request (500 / timeout) —
|
|
219
|
+
// must never be dropped just because a chatty/polling iteration filled the buffer with
|
|
220
|
+
// successful requests first. A LOW-value overflow (a successful request) is dropped; a
|
|
221
|
+
// HIGH-value one evicts the oldest LOW-value observation (or the oldest, if all are
|
|
222
|
+
// high-value, keeping the most recent) to make room.
|
|
223
|
+
if (!isHighValue(obs)) {
|
|
224
|
+
b.droppedObservations += 1;
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
const lowIdx = b.observations.findIndex((o) => !isHighValue(o));
|
|
228
|
+
b.observations.splice(lowIdx >= 0 ? lowIdx : 0, 1);
|
|
229
|
+
b.droppedObservations += 1;
|
|
230
|
+
b.observations.push(obs);
|
|
231
|
+
}
|
|
232
|
+
/** Keep only the TOP_ENDPOINTS slowest endpoints seen this iteration (sorted desc). */
|
|
233
|
+
offerEndpoint(b, ep) {
|
|
234
|
+
if (b.endpoints.length < TOP_ENDPOINTS) {
|
|
235
|
+
b.endpoints.push(ep);
|
|
236
|
+
b.endpoints.sort((x, y) => y.durationMs - x.durationMs);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
if (ep.durationMs <= b.endpoints[b.endpoints.length - 1].durationMs)
|
|
240
|
+
return;
|
|
241
|
+
b.endpoints[b.endpoints.length - 1] = ep;
|
|
242
|
+
b.endpoints.sort((x, y) => y.durationMs - x.durationMs);
|
|
243
|
+
}
|
|
244
|
+
identityOf(iterationId, b) {
|
|
245
|
+
return {
|
|
246
|
+
scenarioId: b.scenarioId,
|
|
247
|
+
...(b.scenarioRefId !== undefined ? { scenarioRefId: b.scenarioRefId } : {}),
|
|
248
|
+
producerSlotId: b.producerSlotId,
|
|
249
|
+
iterationId,
|
|
250
|
+
// Data-row attribution: which feeder key produced this sample (strategy isn't known here).
|
|
251
|
+
...(b.feederKeys !== undefined && Object.keys(b.feederKeys).length > 0
|
|
252
|
+
? { feeders: Object.fromEntries(Object.entries(b.feederKeys).map(([name, key]) => [name, { key }])) }
|
|
253
|
+
: {}),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
/** Keep this transaction iff it's among the top `maxSlow` slowest (sorted DESC). */
|
|
257
|
+
offerSlow(s) {
|
|
258
|
+
if (this.slow.length < this.maxSlow) {
|
|
259
|
+
this.slow.push(s);
|
|
260
|
+
this.slow.sort((a, c) => c.durationMs - a.durationMs);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
if (s.durationMs <= this.slow[this.slow.length - 1].durationMs)
|
|
264
|
+
return;
|
|
265
|
+
this.slow[this.slow.length - 1] = s;
|
|
266
|
+
this.slow.sort((a, c) => c.durationMs - a.durationMs);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=samples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"samples.js","sourceRoot":"","sources":["../../src/load/samples.ts"],"names":[],"mappings":"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"}
|