@glubean/runner 0.7.0 → 0.8.0

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.
Files changed (71) hide show
  1. package/dist/engine-bridge.d.ts +4 -0
  2. package/dist/engine-bridge.d.ts.map +1 -1
  3. package/dist/engine-bridge.js +10 -1
  4. package/dist/engine-bridge.js.map +1 -1
  5. package/dist/executor.d.ts +2 -2
  6. package/dist/executor.d.ts.map +1 -1
  7. package/dist/executor.js +9 -226
  8. package/dist/executor.js.map +1 -1
  9. package/dist/harness.js +3 -79
  10. package/dist/harness.js.map +1 -1
  11. package/dist/index.d.ts +16 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +17 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/load/continuation-pool.d.ts +82 -0
  16. package/dist/load/continuation-pool.d.ts.map +1 -0
  17. package/dist/load/continuation-pool.js +154 -0
  18. package/dist/load/continuation-pool.js.map +1 -0
  19. package/dist/load/execute-iteration.d.ts +126 -0
  20. package/dist/load/execute-iteration.d.ts.map +1 -0
  21. package/dist/load/execute-iteration.js +367 -0
  22. package/dist/load/execute-iteration.js.map +1 -0
  23. package/dist/load/histogram.d.ts +63 -0
  24. package/dist/load/histogram.d.ts.map +1 -0
  25. package/dist/load/histogram.js +149 -0
  26. package/dist/load/histogram.js.map +1 -0
  27. package/dist/load/orchestrator.d.ts +55 -0
  28. package/dist/load/orchestrator.d.ts.map +1 -0
  29. package/dist/load/orchestrator.js +571 -0
  30. package/dist/load/orchestrator.js.map +1 -0
  31. package/dist/load/reducer.d.ts +109 -0
  32. package/dist/load/reducer.d.ts.map +1 -0
  33. package/dist/load/reducer.js +718 -0
  34. package/dist/load/reducer.js.map +1 -0
  35. package/dist/load/route-key.d.ts +38 -0
  36. package/dist/load/route-key.d.ts.map +1 -0
  37. package/dist/load/route-key.js +107 -0
  38. package/dist/load/route-key.js.map +1 -0
  39. package/dist/load/samples.d.ts +83 -0
  40. package/dist/load/samples.d.ts.map +1 -0
  41. package/dist/load/samples.js +269 -0
  42. package/dist/load/samples.js.map +1 -0
  43. package/dist/load/sink.d.ts +127 -0
  44. package/dist/load/sink.d.ts.map +1 -0
  45. package/dist/load/sink.js +351 -0
  46. package/dist/load/sink.js.map +1 -0
  47. package/dist/load/subprocess.d.ts +83 -0
  48. package/dist/load/subprocess.d.ts.map +1 -0
  49. package/dist/load/subprocess.js +229 -0
  50. package/dist/load/subprocess.js.map +1 -0
  51. package/dist/load/threshold.d.ts +44 -0
  52. package/dist/load/threshold.d.ts.map +1 -0
  53. package/dist/load/threshold.js +197 -0
  54. package/dist/load/threshold.js.map +1 -0
  55. package/dist/load/timeline.d.ts +36 -0
  56. package/dist/load/timeline.d.ts.map +1 -0
  57. package/dist/load/timeline.js +158 -0
  58. package/dist/load/timeline.js.map +1 -0
  59. package/dist/load-harness.d.ts +2 -0
  60. package/dist/load-harness.d.ts.map +1 -0
  61. package/dist/load-harness.js +105 -0
  62. package/dist/load-harness.js.map +1 -0
  63. package/dist/runner-resolve.d.ts +53 -0
  64. package/dist/runner-resolve.d.ts.map +1 -0
  65. package/dist/runner-resolve.js +264 -0
  66. package/dist/runner-resolve.js.map +1 -0
  67. package/dist/workflow/event-timeline.d.ts +3 -0
  68. package/dist/workflow/event-timeline.d.ts.map +1 -0
  69. package/dist/workflow/event-timeline.js +72 -0
  70. package/dist/workflow/event-timeline.js.map +1 -0
  71. 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":"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"}
@@ -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"}