@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":"execute-iteration.js","sourceRoot":"","sources":["../../src/load/execute-iteration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded streaming latency histogram for the load reducer.
|
|
3
|
+
*
|
|
4
|
+
* Load mode must NOT keep full sample arrays (the ordinary threshold
|
|
5
|
+
* MetricCollector sorts every value — fine for a handful of tests, fatal at
|
|
6
|
+
* hundreds of concurrent producers). This is a relative-error log-bucket
|
|
7
|
+
* histogram: memory is bounded by the LOG of the value range (a few hundred to
|
|
8
|
+
* ~2k buckets for realistic latencies), percentiles are within `relativeError`
|
|
9
|
+
* of the true value, and two histograms with the same error are mergeable
|
|
10
|
+
* (for future external-engine partial-aggregate ingestion).
|
|
11
|
+
*/
|
|
12
|
+
import type { Percentiles } from "@glubean/sdk/load";
|
|
13
|
+
export declare class LoadHistogram {
|
|
14
|
+
private readonly base;
|
|
15
|
+
private readonly logBase;
|
|
16
|
+
private readonly buckets;
|
|
17
|
+
private zeroCount;
|
|
18
|
+
private _count;
|
|
19
|
+
private _sum;
|
|
20
|
+
private _min;
|
|
21
|
+
private _max;
|
|
22
|
+
/** @param relativeError bucket width as a fraction (0,1); default 1%. */
|
|
23
|
+
constructor(relativeError?: number);
|
|
24
|
+
get count(): number;
|
|
25
|
+
get sum(): number;
|
|
26
|
+
get min(): number;
|
|
27
|
+
get max(): number;
|
|
28
|
+
get mean(): number;
|
|
29
|
+
/** Distinct buckets retained — bounded by the log of the observed value range. */
|
|
30
|
+
get bucketCount(): number;
|
|
31
|
+
/** Record one observation (ms). Non-finite values are ignored; negatives clamp to 0. */
|
|
32
|
+
record(value: number): void;
|
|
33
|
+
/**
|
|
34
|
+
* Percentile `p` in [0, 100]. Returns the bucket upper bound (so at most
|
|
35
|
+
* `relativeError` above the true value), never above the observed max.
|
|
36
|
+
*/
|
|
37
|
+
percentile(p: number): number;
|
|
38
|
+
/** The standard {p50, p90, p95, p99, max} shape (max is exact). */
|
|
39
|
+
percentiles(): Percentiles;
|
|
40
|
+
/**
|
|
41
|
+
* Bucket the observations against fixed upper-bound `boundaries` (ms, ascending) for a
|
|
42
|
+
* distribution / CDF chart. Each emitted bucket counts observations in (prevBound, leMs];
|
|
43
|
+
* a final overflow bucket (leMs = the observed max) carries anything PAST the last
|
|
44
|
+
* boundary. A FIXED ladder keeps two runs' distributions directly comparable (aligned
|
|
45
|
+
* x-axis). Empty when there are no observations.
|
|
46
|
+
*
|
|
47
|
+
* Each log bucket is placed by its LOWER bound `base^(idx-1)` — the largest value strictly
|
|
48
|
+
* below every observation in the bucket. The upper bound over-estimates by up to
|
|
49
|
+
* `relativeError`, which would push an exact ladder-edge value (e.g. 1000ms) into the next
|
|
50
|
+
* bucket or a false overflow; the lower bound keeps an exact boundary latency in its own
|
|
51
|
+
* bucket. So a run whose max is at/below the last boundary emits no overflow, every
|
|
52
|
+
* observation lands in exactly one bucket (counts sum to the total), and the buckets stay
|
|
53
|
+
* monotonic (codex). Values strictly between two boundaries but within one log bucket of a
|
|
54
|
+
* boundary may round down by that bucket — the histogram's inherent `relativeError`.
|
|
55
|
+
*/
|
|
56
|
+
distribution(boundaries: number[]): {
|
|
57
|
+
leMs: number;
|
|
58
|
+
count: number;
|
|
59
|
+
}[];
|
|
60
|
+
/** Fold another histogram (same relativeError) into this one. */
|
|
61
|
+
merge(other: LoadHistogram): void;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=histogram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"histogram.d.ts","sourceRoot":"","sources":["../../src/load/histogram.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,IAAI,CAAK;IAEjB,yEAAyE;gBAC7D,aAAa,GAAE,MAA+B;IAQ1D,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,kFAAkF;IAClF,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,wFAAwF;IACxF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAe3B;;;OAGG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAiB7B,mEAAmE;IACnE,WAAW,IAAI,WAAW;IAU1B;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;IAsBrE,iEAAiE;IACjE,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAelC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
const DEFAULT_RELATIVE_ERROR = 0.01;
|
|
2
|
+
export class LoadHistogram {
|
|
3
|
+
base;
|
|
4
|
+
logBase;
|
|
5
|
+
buckets = new Map();
|
|
6
|
+
zeroCount = 0;
|
|
7
|
+
_count = 0;
|
|
8
|
+
_sum = 0;
|
|
9
|
+
_min = Infinity;
|
|
10
|
+
_max = 0;
|
|
11
|
+
/** @param relativeError bucket width as a fraction (0,1); default 1%. */
|
|
12
|
+
constructor(relativeError = DEFAULT_RELATIVE_ERROR) {
|
|
13
|
+
if (!(relativeError > 0 && relativeError < 1)) {
|
|
14
|
+
throw new Error(`LoadHistogram relativeError must be in (0, 1), got ${relativeError}`);
|
|
15
|
+
}
|
|
16
|
+
this.base = 1 + relativeError;
|
|
17
|
+
this.logBase = Math.log(this.base);
|
|
18
|
+
}
|
|
19
|
+
get count() {
|
|
20
|
+
return this._count;
|
|
21
|
+
}
|
|
22
|
+
get sum() {
|
|
23
|
+
return this._sum;
|
|
24
|
+
}
|
|
25
|
+
get min() {
|
|
26
|
+
return this._count === 0 ? 0 : this._min;
|
|
27
|
+
}
|
|
28
|
+
get max() {
|
|
29
|
+
return this._max;
|
|
30
|
+
}
|
|
31
|
+
get mean() {
|
|
32
|
+
return this._count === 0 ? 0 : this._sum / this._count;
|
|
33
|
+
}
|
|
34
|
+
/** Distinct buckets retained — bounded by the log of the observed value range. */
|
|
35
|
+
get bucketCount() {
|
|
36
|
+
return this.buckets.size + (this.zeroCount > 0 ? 1 : 0);
|
|
37
|
+
}
|
|
38
|
+
/** Record one observation (ms). Non-finite values are ignored; negatives clamp to 0. */
|
|
39
|
+
record(value) {
|
|
40
|
+
if (!Number.isFinite(value))
|
|
41
|
+
return;
|
|
42
|
+
const v = value < 0 ? 0 : value;
|
|
43
|
+
this._count += 1;
|
|
44
|
+
this._sum += v;
|
|
45
|
+
if (v < this._min)
|
|
46
|
+
this._min = v;
|
|
47
|
+
if (v > this._max)
|
|
48
|
+
this._max = v;
|
|
49
|
+
if (v === 0) {
|
|
50
|
+
this.zeroCount += 1;
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const idx = Math.ceil(Math.log(v) / this.logBase);
|
|
54
|
+
this.buckets.set(idx, (this.buckets.get(idx) ?? 0) + 1);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Percentile `p` in [0, 100]. Returns the bucket upper bound (so at most
|
|
58
|
+
* `relativeError` above the true value), never above the observed max.
|
|
59
|
+
*/
|
|
60
|
+
percentile(p) {
|
|
61
|
+
if (this._count === 0)
|
|
62
|
+
return 0;
|
|
63
|
+
if (p <= 0)
|
|
64
|
+
return this.min;
|
|
65
|
+
if (p >= 100)
|
|
66
|
+
return this._max;
|
|
67
|
+
const target = Math.min(this._count, Math.max(1, Math.ceil((p / 100) * this._count)));
|
|
68
|
+
let cumulative = this.zeroCount;
|
|
69
|
+
if (cumulative >= target)
|
|
70
|
+
return 0;
|
|
71
|
+
const indices = [...this.buckets.keys()].sort((a, b) => a - b);
|
|
72
|
+
for (const idx of indices) {
|
|
73
|
+
cumulative += this.buckets.get(idx) ?? 0;
|
|
74
|
+
if (cumulative >= target) {
|
|
75
|
+
return Math.min(this.base ** idx, this._max);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return this._max;
|
|
79
|
+
}
|
|
80
|
+
/** The standard {p50, p90, p95, p99, max} shape (max is exact). */
|
|
81
|
+
percentiles() {
|
|
82
|
+
return {
|
|
83
|
+
p50: this.percentile(50),
|
|
84
|
+
p90: this.percentile(90),
|
|
85
|
+
p95: this.percentile(95),
|
|
86
|
+
p99: this.percentile(99),
|
|
87
|
+
max: this._max,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Bucket the observations against fixed upper-bound `boundaries` (ms, ascending) for a
|
|
92
|
+
* distribution / CDF chart. Each emitted bucket counts observations in (prevBound, leMs];
|
|
93
|
+
* a final overflow bucket (leMs = the observed max) carries anything PAST the last
|
|
94
|
+
* boundary. A FIXED ladder keeps two runs' distributions directly comparable (aligned
|
|
95
|
+
* x-axis). Empty when there are no observations.
|
|
96
|
+
*
|
|
97
|
+
* Each log bucket is placed by its LOWER bound `base^(idx-1)` — the largest value strictly
|
|
98
|
+
* below every observation in the bucket. The upper bound over-estimates by up to
|
|
99
|
+
* `relativeError`, which would push an exact ladder-edge value (e.g. 1000ms) into the next
|
|
100
|
+
* bucket or a false overflow; the lower bound keeps an exact boundary latency in its own
|
|
101
|
+
* bucket. So a run whose max is at/below the last boundary emits no overflow, every
|
|
102
|
+
* observation lands in exactly one bucket (counts sum to the total), and the buckets stay
|
|
103
|
+
* monotonic (codex). Values strictly between two boundaries but within one log bucket of a
|
|
104
|
+
* boundary may round down by that bucket — the histogram's inherent `relativeError`.
|
|
105
|
+
*/
|
|
106
|
+
distribution(boundaries) {
|
|
107
|
+
if (this._count === 0 || boundaries.length === 0)
|
|
108
|
+
return [];
|
|
109
|
+
const counts = new Array(boundaries.length).fill(0);
|
|
110
|
+
let overflow = 0;
|
|
111
|
+
counts[0] += this.zeroCount; // a zero observation is ≤ the first (positive) boundary
|
|
112
|
+
for (const [idx, cnt] of this.buckets) {
|
|
113
|
+
const lower = this.base ** (idx - 1); // lower bound of (base^(idx-1), base^idx]
|
|
114
|
+
let placed = false;
|
|
115
|
+
for (let i = 0; i < boundaries.length; i++) {
|
|
116
|
+
if (lower <= boundaries[i]) {
|
|
117
|
+
counts[i] += cnt;
|
|
118
|
+
placed = true;
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (!placed)
|
|
123
|
+
overflow += cnt;
|
|
124
|
+
}
|
|
125
|
+
const out = boundaries.map((leMs, i) => ({ leMs, count: counts[i] }));
|
|
126
|
+
if (overflow > 0)
|
|
127
|
+
out.push({ leMs: this._max, count: overflow });
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
130
|
+
/** Fold another histogram (same relativeError) into this one. */
|
|
131
|
+
merge(other) {
|
|
132
|
+
if (other.base !== this.base) {
|
|
133
|
+
throw new Error("cannot merge LoadHistograms with different relativeError");
|
|
134
|
+
}
|
|
135
|
+
this.zeroCount += other.zeroCount;
|
|
136
|
+
this._count += other._count;
|
|
137
|
+
this._sum += other._sum;
|
|
138
|
+
if (other._count > 0) {
|
|
139
|
+
if (other._min < this._min)
|
|
140
|
+
this._min = other._min;
|
|
141
|
+
if (other._max > this._max)
|
|
142
|
+
this._max = other._max;
|
|
143
|
+
}
|
|
144
|
+
for (const [idx, c] of other.buckets) {
|
|
145
|
+
this.buckets.set(idx, (this.buckets.get(idx) ?? 0) + c);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=histogram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"histogram.js","sourceRoot":"","sources":["../../src/load/histogram.ts"],"names":[],"mappings":"AAaA,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,OAAO,aAAa;IACP,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,SAAS,GAAG,CAAC,CAAC;IACd,MAAM,GAAG,CAAC,CAAC;IACX,IAAI,GAAG,CAAC,CAAC;IACT,IAAI,GAAG,QAAQ,CAAC;IAChB,IAAI,GAAG,CAAC,CAAC;IAEjB,yEAAyE;IACzE,YAAY,gBAAwB,sBAAsB;QACxD,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,sDAAsD,aAAa,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,aAAa,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3C,CAAC;IACD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IACzD,CAAC;IACD,kFAAkF;IAClF,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,wFAAwF;IACxF,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO;QACpC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACf,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,UAAU,IAAI,MAAM;YAAE,OAAO,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,mEAAmE;IACnE,WAAW;QACT,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxB,GAAG,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,UAAoB;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,wDAAwD;QACrF,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,0CAA0C;YAChF,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,IAAI,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;oBACjB,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM;gBAAE,QAAQ,IAAI,GAAG,CAAC;QAC/B,CAAC;QACD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,QAAQ,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjE,OAAO,GAAG,CAAC;IACb,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,KAAoB;QACxB,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACnD,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACrD,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local load orchestrator — the closed-model run loop (M3-f).
|
|
3
|
+
*
|
|
4
|
+
* Drives a `LoadPlan` to a finalized `LoadArtifact`: it stands up the shared
|
|
5
|
+
* engine core + `LoadSink` + `LoadReducer`, then runs `concurrency` producer
|
|
6
|
+
* slots that each execute scenario iterations back-to-back until a termination
|
|
7
|
+
* bound (`iterations` count and/or `duration` wall-clock) is reached, optionally
|
|
8
|
+
* staggered by `rampUp` and paced by `thinkTime`. Each iteration draws feeder
|
|
9
|
+
* rows, resolves its `input`, gets a copy-on-write session, and runs through
|
|
10
|
+
* `runLoadIteration` (which never rejects — one bad iteration can't fell a slot).
|
|
11
|
+
*
|
|
12
|
+
* Closed model: a slot holds exactly one in-flight iteration at a time (back to
|
|
13
|
+
* back), so offered concurrency == `concurrency`. Producer release / continuation
|
|
14
|
+
* (the open-ish model) is M6. A traffic mix (`scenarios[]`) is supported: the plan
|
|
15
|
+
* is lowered to weighted `Workload`s and every iteration picks one by weight, so
|
|
16
|
+
* concurrency / pacing / continuation / thresholds stay run-level while per-scenario
|
|
17
|
+
* results are attributed via each entry's id.
|
|
18
|
+
*/
|
|
19
|
+
import type { LoadArtifact, LoadPlan } from "@glubean/sdk/load";
|
|
20
|
+
/** Options for one local load run. */
|
|
21
|
+
export interface RunLoadOptions {
|
|
22
|
+
/** Resolved environment vars for the engine core (ctx.vars). */
|
|
23
|
+
vars?: Record<string, string>;
|
|
24
|
+
/** Resolved secrets for the engine core (ctx.secrets). */
|
|
25
|
+
secrets?: Record<string, string>;
|
|
26
|
+
/** Run id stamped on every event (defaults to the runner id). */
|
|
27
|
+
runId?: string;
|
|
28
|
+
/** Runner id stamped on every event (defaults to the plan id). */
|
|
29
|
+
runnerId?: string;
|
|
30
|
+
/** Base session each iteration copies (copy-on-write isolation). Default `{}`. */
|
|
31
|
+
baseSession?: Record<string, unknown>;
|
|
32
|
+
/** Clock for wall-clock timing + event ts (default `Date.now`). */
|
|
33
|
+
now?: () => number;
|
|
34
|
+
/** RNG in [0,1) for weighted traffic-mix scenario selection (default `Math.random`).
|
|
35
|
+
* Injectable so a mix run can be made deterministic in tests. Unused for a
|
|
36
|
+
* single-scenario run (selection is trivial). */
|
|
37
|
+
random?: () => number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Ramp-up start offset (ms) for a slot. `rampUp` is the time to reach FULL
|
|
41
|
+
* concurrency, so slots spread evenly across `[0, rampUp]` with the LAST slot
|
|
42
|
+
* starting at the end of the window (slot 0 at 0, slot N-1 at `rampUp`). A single
|
|
43
|
+
* slot (or no ramp) starts immediately.
|
|
44
|
+
*/
|
|
45
|
+
export declare function rampDelayMs(slotIndex: number, concurrency: number, rampUpMs: number): number;
|
|
46
|
+
/**
|
|
47
|
+
* Run a load plan locally and return its finalized `LoadArtifact`. Handles BOTH a
|
|
48
|
+
* single-scenario run and a traffic mix (`scenarios[]`): each is lowered to a list of
|
|
49
|
+
* weighted `Workload`s, and every iteration picks one (weighted-random for a mix, the
|
|
50
|
+
* sole workload otherwise). Throws on a plan with neither `duration` nor `iterations`
|
|
51
|
+
* (it would run forever). Closed model; continuation / pacing / thresholds are
|
|
52
|
+
* run-level (shared across a mix), per-scenario results attributed via each entry id.
|
|
53
|
+
*/
|
|
54
|
+
export declare function runLoad(plan: LoadPlan, opts?: RunLoadOptions): Promise<LoadArtifact>;
|
|
55
|
+
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/load/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAIV,YAAY,EAIZ,QAAQ,EAKT,MAAM,mBAAmB,CAAC;AAgB3B,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB;;sDAEkD;IAClD,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB;AAwCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG5F;AAkGD;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8e9F"}
|