@peerbit/pubsub 4.1.4 → 5.0.0-2d88223

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 (46) hide show
  1. package/README.md +23 -20
  2. package/dist/benchmark/fanout-tree-sim-lib.d.ts +201 -0
  3. package/dist/benchmark/fanout-tree-sim-lib.d.ts.map +1 -0
  4. package/dist/benchmark/fanout-tree-sim-lib.js +1225 -0
  5. package/dist/benchmark/fanout-tree-sim-lib.js.map +1 -0
  6. package/dist/benchmark/fanout-tree-sim.d.ts +11 -0
  7. package/dist/benchmark/fanout-tree-sim.d.ts.map +1 -0
  8. package/dist/benchmark/fanout-tree-sim.js +521 -0
  9. package/dist/benchmark/fanout-tree-sim.js.map +1 -0
  10. package/dist/benchmark/index.d.ts +6 -0
  11. package/dist/benchmark/index.d.ts.map +1 -1
  12. package/dist/benchmark/index.js +38 -80
  13. package/dist/benchmark/index.js.map +1 -1
  14. package/dist/benchmark/pubsub-topic-sim-lib.d.ts +82 -0
  15. package/dist/benchmark/pubsub-topic-sim-lib.d.ts.map +1 -0
  16. package/dist/benchmark/pubsub-topic-sim-lib.js +625 -0
  17. package/dist/benchmark/pubsub-topic-sim-lib.js.map +1 -0
  18. package/dist/benchmark/pubsub-topic-sim.d.ts +9 -0
  19. package/dist/benchmark/pubsub-topic-sim.d.ts.map +1 -0
  20. package/dist/benchmark/pubsub-topic-sim.js +116 -0
  21. package/dist/benchmark/pubsub-topic-sim.js.map +1 -0
  22. package/dist/benchmark/sim/bench-utils.d.ts +25 -0
  23. package/dist/benchmark/sim/bench-utils.d.ts.map +1 -0
  24. package/dist/benchmark/sim/bench-utils.js +141 -0
  25. package/dist/benchmark/sim/bench-utils.js.map +1 -0
  26. package/dist/src/fanout-channel.d.ts +62 -0
  27. package/dist/src/fanout-channel.d.ts.map +1 -0
  28. package/dist/src/fanout-channel.js +114 -0
  29. package/dist/src/fanout-channel.js.map +1 -0
  30. package/dist/src/fanout-tree.d.ts +551 -0
  31. package/dist/src/fanout-tree.d.ts.map +1 -0
  32. package/dist/src/fanout-tree.js +4980 -0
  33. package/dist/src/fanout-tree.js.map +1 -0
  34. package/dist/src/index.d.ts +168 -39
  35. package/dist/src/index.d.ts.map +1 -1
  36. package/dist/src/index.js +1416 -457
  37. package/dist/src/index.js.map +1 -1
  38. package/dist/src/topic-root-control-plane.d.ts +43 -0
  39. package/dist/src/topic-root-control-plane.d.ts.map +1 -0
  40. package/dist/src/topic-root-control-plane.js +120 -0
  41. package/dist/src/topic-root-control-plane.js.map +1 -0
  42. package/package.json +11 -10
  43. package/src/fanout-channel.ts +150 -0
  44. package/src/fanout-tree.ts +6346 -0
  45. package/src/index.ts +1693 -591
  46. package/src/topic-root-control-plane.ts +160 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fanout-tree-sim-lib.js","sourceRoot":"","sources":["../../benchmark/fanout-tree-sim-lib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * End-to-end FanoutTree simulator (real protocol + real @peerbit/stream).
3
+ *
4
+ * This is meant to validate that:
5
+ * - join works via bootstrap trackers (announce/query + dial + join),
6
+ * - the data plane scales with bounded per-node fanout (tree),
7
+ * - pull repair does not explode (when enabled),
8
+ * without using real sockets/crypto.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=fanout-tree-sim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fanout-tree-sim.d.ts","sourceRoot":"","sources":["../../benchmark/fanout-tree-sim.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,521 @@
1
+ /**
2
+ * End-to-end FanoutTree simulator (real protocol + real @peerbit/stream).
3
+ *
4
+ * This is meant to validate that:
5
+ * - join works via bootstrap trackers (announce/query + dial + join),
6
+ * - the data plane scales with bounded per-node fanout (tree),
7
+ * - pull repair does not explode (when enabled),
8
+ * without using real sockets/crypto.
9
+ */
10
+ import { formatFanoutTreeSimResult, resolveFanoutTreeSimParams, runFanoutTreeSim, } from "./fanout-tree-sim-lib.js";
11
+ const HELP_TEXT = [
12
+ "fanout-tree-sim.ts",
13
+ "",
14
+ "Args:",
15
+ " --preset NAME preset workload (live|reliable|scale-5k|scale-10k|ci-small|ci-loss)",
16
+ " --nodes N total nodes (default: 2000)",
17
+ " --rootIndex I root/publisher node index (default: 0)",
18
+ " --bootstraps N bootstrap tracker nodes (default: 1)",
19
+ " --bootstrapMaxPeers N max bootstraps to dial/query per node (default: 0, 0=all)",
20
+ " --subscribers N total subscribers (default: nodes-1-bootstraps)",
21
+ " --relayFraction F fraction of subscribers acting as relays (default: 0.25)",
22
+ " --messages M messages to publish (default: 200)",
23
+ " --msgRate R publish rate (msg/s, default: 30)",
24
+ " --msgSize BYTES payload bytes (default: 1024)",
25
+ " --intervalMs MS override publish interval (default: 0 => derived from msgRate)",
26
+ " --settleMs MS wait after publish (default: 2000)",
27
+ " --deadlineMs MS count delivery-within-deadline (default: 0, off)",
28
+ " --maxDataAgeMs MS drop forwarding of stale data (default: 0, off)",
29
+ " --timeoutMs MS global timeout (default: 300000)",
30
+ " --seed S RNG seed (default: 1)",
31
+ " --topic NAME topic name (default: concert)",
32
+ " --rootUploadLimitBps BPS (default: 20000000)",
33
+ " --rootMaxChildren N (default: 64)",
34
+ " --relayUploadLimitBps BPS (default: 10000000)",
35
+ " --relayMaxChildren N (default: 32)",
36
+ " --allowKick 0|1 allow bid-based kicking when full (default: 0)",
37
+ " --bidPerByte N bid offered by joiners (default: 0)",
38
+ " --bidPerByteRelay N bid for relay joiners (default: bidPerByte)",
39
+ " --bidPerByteLeaf N bid for leaf joiners (default: bidPerByte)",
40
+ " --repair 0|1 enable pull repair (default: 1)",
41
+ " --repairWindowMessages N (default: 1024)",
42
+ " --repairMaxBackfillMessages N max missing lag to repair (-1 = same as window)",
43
+ " --repairIntervalMs MS (default: 200)",
44
+ " --repairMaxPerReq N (default: 64)",
45
+ " --neighborRepair 0|1 enable neighbor-assisted repair (default: 0)",
46
+ " --neighborRepairPeers N extra peers to query per repair tick (default: 2)",
47
+ " --neighborMeshPeers N lazy repair mesh peers (-1 = FanoutTree default)",
48
+ " --neighborAnnounceIntervalMs MS IHAVE announce interval (-1 = FanoutTree default)",
49
+ " --neighborMeshRefreshIntervalMs MS mesh refresh interval (-1 = FanoutTree default)",
50
+ " --neighborHaveTtlMs MS IHAVE TTL when selecting fetch targets (-1 = FanoutTree default)",
51
+ " --neighborRepairBudgetBps BPS budget for neighbor FETCH_REQ control traffic (-1 = FanoutTree default)",
52
+ " --neighborRepairBurstMs MS burst window for neighbor FETCH_REQ budget (-1 = FanoutTree default)",
53
+ " --dialDelayMs MS artificial dial delay (default: 0)",
54
+ " --streamRxDelayMs MS per-chunk inbound delay in shim (default: 0)",
55
+ " --streamHighWaterMarkBytes B backpressure threshold (default: 262144)",
56
+ " --joinConcurrency N parallel join tasks (default: 256)",
57
+ " --joinPhases 0|1 join relays first, then leaves (default: 0)",
58
+ " --joinPhaseSettleMs MS wait between join phases (default: 2000)",
59
+ " --joinReqTimeoutMs MS join request timeout per candidate (default: 2000)",
60
+ " --candidateShuffleTopK N shuffle only within top K candidates (default: 8)",
61
+ " --candidateScoringMode MODE join scoring (ranked-shuffle|ranked-strict|weighted, default: ranked-shuffle)",
62
+ " --bootstrapEnsureIntervalMs MS min interval between bootstrap re-dials (-1 = FanoutTree default)",
63
+ " --trackerQueryIntervalMs MS min interval between tracker queries (-1 = FanoutTree default)",
64
+ " --joinAttemptsPerRound N max join candidates tried per retry round (-1 = FanoutTree default)",
65
+ " --candidateCooldownMs MS cooldown applied to bad join candidates (-1 = FanoutTree default)",
66
+ " --maxLatencySamples N reservoir sample size (default: 1000000)",
67
+ " --profile 0|1 collect CPU/mem/event-loop delay stats (default: 0)",
68
+ " --progress 0|1 log join progress + memory stats (default: 0)",
69
+ " --progressEveryMs MS progress log interval (default: 5000)",
70
+ " --dropDataFrameRate P drop rate for stream data frames (default: 0)",
71
+ " --churnEveryMs MS churn interval (default: 0, off)",
72
+ " --churnDownMs MS offline duration per churn (default: 0, off)",
73
+ " --churnFraction F fraction to churn per event (default: 0, off)",
74
+ " --assertMinJoinedPct PCT (default: 0)",
75
+ " --assertMinDeliveryPct PCT (default: 0)",
76
+ " --assertMinDeadlineDeliveryPct PCT (default: 0)",
77
+ " --assertMaxUploadFracPct PCT max peak upload vs cap (default: 0, off)",
78
+ " --assertMaxOverheadFactor X max data overhead factor vs ideal tree (default: 0, off)",
79
+ " --assertMaxControlBpp X max control bytes per payload byte delivered (default: 0, off)",
80
+ " --assertMaxTrackerBpp X max tracker bytes per payload byte delivered (default: 0, off)",
81
+ " --assertMaxRepairBpp X max repair bytes per payload byte delivered (default: 0, off)",
82
+ " --assertAttachP95Ms MS max p95 time-to-attach since join start (default: 0, off)",
83
+ " --assertMaxTreeLevelP95 N max p95 tree depth/level (default: 0, off)",
84
+ " --assertMaxFormationScore X max formationScore (default: 0, off)",
85
+ " --assertMaxOrphans N max online orphans during publish+settle (default: 0, off)",
86
+ " --assertMaxOrphanArea S max orphan-area (orphan-seconds) during publish+settle (default: 0, off)",
87
+ " --assertRecoveryP95Ms MS max p95 recovery time after churn (default: 0, off)",
88
+ " --assertMaxReparentsPerMin N max reparent events per minute (default: 0, off)",
89
+ "",
90
+ "Example:",
91
+ " pnpm -C packages/transport/pubsub run bench -- fanout-tree-sim --preset live --nodes 2000 --bootstraps 1 --seed 1",
92
+ ].join("\n");
93
+ const PRESET_OPTIONS = {
94
+ live: {
95
+ bootstraps: 3,
96
+ bootstrapMaxPeers: 1,
97
+ msgRate: 30,
98
+ msgSize: 1024,
99
+ messages: 30 * 60,
100
+ settleMs: 2_000,
101
+ deadlineMs: 2_000,
102
+ allowKick: true,
103
+ bidPerByteRelay: 1,
104
+ bidPerByteLeaf: 0,
105
+ joinPhases: true,
106
+ joinPhaseSettleMs: 2_000,
107
+ repair: true,
108
+ repairMaxBackfillMessages: 60,
109
+ neighborRepair: true,
110
+ neighborRepairPeers: 3,
111
+ dropDataFrameRate: 0.01,
112
+ churnEveryMs: 2_000,
113
+ churnDownMs: 1_000,
114
+ churnFraction: 0.005,
115
+ },
116
+ reliable: {
117
+ bootstraps: 3,
118
+ bootstrapMaxPeers: 1,
119
+ msgRate: 30,
120
+ msgSize: 1024,
121
+ messages: 30 * 60,
122
+ settleMs: 10_000,
123
+ deadlineMs: 10_000,
124
+ allowKick: true,
125
+ bidPerByteRelay: 1,
126
+ bidPerByteLeaf: 0,
127
+ joinPhases: true,
128
+ joinPhaseSettleMs: 2_000,
129
+ repair: true,
130
+ repairMaxBackfillMessages: 1024,
131
+ neighborRepair: true,
132
+ neighborRepairPeers: 4,
133
+ dropDataFrameRate: 0.01,
134
+ churnEveryMs: 2_000,
135
+ churnDownMs: 1_000,
136
+ churnFraction: 0.005,
137
+ },
138
+ "scale-5k": {
139
+ nodes: 5000,
140
+ bootstraps: 3,
141
+ bootstrapMaxPeers: 1,
142
+ subscribers: 4800,
143
+ relayFraction: 0.25,
144
+ msgRate: 30,
145
+ msgSize: 1024,
146
+ messages: 10,
147
+ settleMs: 5_000,
148
+ deadlineMs: 10_000,
149
+ timeoutMs: 600_000,
150
+ seed: 1,
151
+ allowKick: true,
152
+ bidPerByteRelay: 1,
153
+ bidPerByteLeaf: 0,
154
+ // Avoid join storms (and excess temporary connections) in single-process sims.
155
+ joinConcurrency: 128,
156
+ joinPhases: true,
157
+ joinPhaseSettleMs: 2_000,
158
+ joinReqTimeoutMs: 1_000,
159
+ joinAttemptsPerRound: 2,
160
+ trackerQueryIntervalMs: 10_000,
161
+ bootstrapEnsureIntervalMs: 10_000,
162
+ candidateCooldownMs: 5_000,
163
+ repair: true,
164
+ repairMaxBackfillMessages: 60,
165
+ neighborRepair: true,
166
+ neighborRepairPeers: 3,
167
+ dropDataFrameRate: 0.01,
168
+ // Keep in-memory sims bounded (avoid buffering OOM at 5k+ nodes).
169
+ streamHighWaterMarkBytes: 8 * 1024,
170
+ // Bench assertions (tune as we learn; these should be achievable on a dev machine).
171
+ assertMinJoinedPct: 99.5,
172
+ assertMinDeliveryPct: 99.9,
173
+ assertMinDeadlineDeliveryPct: 97.0,
174
+ assertMaxOverheadFactor: 1.3,
175
+ assertMaxUploadFracPct: 110,
176
+ // Control-plane budgets (bytes per delivered payload byte). Tune as we learn.
177
+ assertMaxControlBpp: 0.5,
178
+ assertMaxTrackerBpp: 0.3,
179
+ assertMaxRepairBpp: 0.3,
180
+ },
181
+ "scale-10k": {
182
+ nodes: 10_000,
183
+ bootstraps: 3,
184
+ bootstrapMaxPeers: 1,
185
+ subscribers: 9_600,
186
+ relayFraction: 0.25,
187
+ msgRate: 30,
188
+ msgSize: 1024,
189
+ messages: 10,
190
+ settleMs: 5_000,
191
+ deadlineMs: 10_000,
192
+ timeoutMs: 1_200_000,
193
+ seed: 1,
194
+ allowKick: true,
195
+ bidPerByteRelay: 1,
196
+ bidPerByteLeaf: 0,
197
+ // Avoid join storms (and excess temporary connections) in single-process sims.
198
+ joinConcurrency: 192,
199
+ joinPhases: true,
200
+ joinPhaseSettleMs: 2_000,
201
+ joinReqTimeoutMs: 1_000,
202
+ joinAttemptsPerRound: 2,
203
+ trackerQueryIntervalMs: 10_000,
204
+ bootstrapEnsureIntervalMs: 10_000,
205
+ candidateCooldownMs: 5_000,
206
+ repair: true,
207
+ repairMaxBackfillMessages: 60,
208
+ neighborRepair: true,
209
+ neighborRepairPeers: 3,
210
+ dropDataFrameRate: 0.01,
211
+ // Keep in-memory sims bounded (avoid buffering OOM at 10k nodes).
212
+ streamHighWaterMarkBytes: 8 * 1024,
213
+ },
214
+ "ci-small": {
215
+ nodes: 25,
216
+ bootstraps: 3,
217
+ bootstrapMaxPeers: 1,
218
+ subscribers: 20,
219
+ relayFraction: 0.3,
220
+ messages: 20,
221
+ msgRate: 50,
222
+ msgSize: 64,
223
+ settleMs: 500,
224
+ timeoutMs: 20_000,
225
+ seed: 1,
226
+ repair: true,
227
+ },
228
+ "ci-loss": {
229
+ nodes: 40,
230
+ bootstraps: 3,
231
+ bootstrapMaxPeers: 1,
232
+ subscribers: 30,
233
+ relayFraction: 0.35,
234
+ messages: 40,
235
+ msgRate: 50,
236
+ msgSize: 64,
237
+ settleMs: 2_500,
238
+ timeoutMs: 40_000,
239
+ seed: 1,
240
+ repair: true,
241
+ neighborRepair: true,
242
+ neighborRepairPeers: 3,
243
+ dropDataFrameRate: 0.1,
244
+ churnEveryMs: 200,
245
+ churnDownMs: 100,
246
+ churnFraction: 0.05,
247
+ },
248
+ };
249
+ const parseNumber = (value) => Number(value);
250
+ const parseString = (value) => String(value);
251
+ const parseBool01 = (fallback) => (value) => String(value ?? fallback) === "1";
252
+ const ARG_SPECS = [
253
+ { flag: "--nodes", key: "nodes", parse: parseNumber },
254
+ { flag: "--rootIndex", key: "rootIndex", parse: parseNumber },
255
+ { flag: "--bootstraps", key: "bootstraps", parse: parseNumber },
256
+ { flag: "--bootstrapMaxPeers", key: "bootstrapMaxPeers", parse: parseNumber },
257
+ { flag: "--subscribers", key: "subscribers", parse: parseNumber },
258
+ { flag: "--relayFraction", key: "relayFraction", parse: parseNumber },
259
+ { flag: "--messages", key: "messages", parse: parseNumber },
260
+ { flag: "--msgRate", key: "msgRate", parse: parseNumber },
261
+ { flag: "--msgSize", key: "msgSize", parse: parseNumber },
262
+ { flag: "--intervalMs", key: "intervalMs", parse: parseNumber },
263
+ { flag: "--settleMs", key: "settleMs", parse: parseNumber },
264
+ { flag: "--deadlineMs", key: "deadlineMs", parse: parseNumber },
265
+ { flag: "--maxDataAgeMs", key: "maxDataAgeMs", parse: parseNumber },
266
+ { flag: "--timeoutMs", key: "timeoutMs", parse: parseNumber },
267
+ { flag: "--seed", key: "seed", parse: parseNumber },
268
+ { flag: "--topic", key: "topic", parse: parseString },
269
+ { flag: "--rootUploadLimitBps", key: "rootUploadLimitBps", parse: parseNumber },
270
+ { flag: "--rootMaxChildren", key: "rootMaxChildren", parse: parseNumber },
271
+ { flag: "--relayUploadLimitBps", key: "relayUploadLimitBps", parse: parseNumber },
272
+ { flag: "--relayMaxChildren", key: "relayMaxChildren", parse: parseNumber },
273
+ { flag: "--allowKick", key: "allowKick", parse: parseBool01("0") },
274
+ { flag: "--bidPerByte", key: "bidPerByte", parse: parseNumber },
275
+ { flag: "--bidPerByteRelay", key: "bidPerByteRelay", parse: parseNumber },
276
+ { flag: "--bidPerByteLeaf", key: "bidPerByteLeaf", parse: parseNumber },
277
+ { flag: "--repair", key: "repair", parse: parseBool01("1") },
278
+ { flag: "--repairWindowMessages", key: "repairWindowMessages", parse: parseNumber },
279
+ { flag: "--repairMaxBackfillMessages", key: "repairMaxBackfillMessages", parse: parseNumber },
280
+ { flag: "--repairIntervalMs", key: "repairIntervalMs", parse: parseNumber },
281
+ { flag: "--repairMaxPerReq", key: "repairMaxPerReq", parse: parseNumber },
282
+ { flag: "--neighborRepair", key: "neighborRepair", parse: parseBool01("0") },
283
+ { flag: "--neighborRepairPeers", key: "neighborRepairPeers", parse: parseNumber },
284
+ { flag: "--neighborMeshPeers", key: "neighborMeshPeers", parse: parseNumber },
285
+ { flag: "--neighborAnnounceIntervalMs", key: "neighborAnnounceIntervalMs", parse: parseNumber },
286
+ {
287
+ flag: "--neighborMeshRefreshIntervalMs",
288
+ key: "neighborMeshRefreshIntervalMs",
289
+ parse: parseNumber,
290
+ },
291
+ { flag: "--neighborHaveTtlMs", key: "neighborHaveTtlMs", parse: parseNumber },
292
+ { flag: "--neighborRepairBudgetBps", key: "neighborRepairBudgetBps", parse: parseNumber },
293
+ { flag: "--neighborRepairBurstMs", key: "neighborRepairBurstMs", parse: parseNumber },
294
+ { flag: "--dialDelayMs", key: "dialDelayMs", parse: parseNumber },
295
+ { flag: "--streamRxDelayMs", key: "streamRxDelayMs", parse: parseNumber },
296
+ { flag: "--streamHighWaterMarkBytes", key: "streamHighWaterMarkBytes", parse: parseNumber },
297
+ { flag: "--joinConcurrency", key: "joinConcurrency", parse: parseNumber },
298
+ { flag: "--joinPhases", key: "joinPhases", parse: parseBool01("0") },
299
+ { flag: "--joinPhaseSettleMs", key: "joinPhaseSettleMs", parse: parseNumber },
300
+ { flag: "--joinReqTimeoutMs", key: "joinReqTimeoutMs", parse: parseNumber },
301
+ { flag: "--candidateShuffleTopK", key: "candidateShuffleTopK", parse: parseNumber },
302
+ { flag: "--candidateScoringMode", key: "candidateScoringMode", parse: parseString },
303
+ {
304
+ flag: "--bootstrapEnsureIntervalMs",
305
+ key: "bootstrapEnsureIntervalMs",
306
+ parse: parseNumber,
307
+ },
308
+ { flag: "--trackerQueryIntervalMs", key: "trackerQueryIntervalMs", parse: parseNumber },
309
+ { flag: "--joinAttemptsPerRound", key: "joinAttemptsPerRound", parse: parseNumber },
310
+ { flag: "--candidateCooldownMs", key: "candidateCooldownMs", parse: parseNumber },
311
+ { flag: "--maxLatencySamples", key: "maxLatencySamples", parse: parseNumber },
312
+ { flag: "--profile", key: "profile", parse: parseBool01("0") },
313
+ { flag: "--progress", key: "progress", parse: parseBool01("0") },
314
+ { flag: "--progressEveryMs", key: "progressEveryMs", parse: parseNumber },
315
+ { flag: "--dropDataFrameRate", key: "dropDataFrameRate", parse: parseNumber },
316
+ { flag: "--churnEveryMs", key: "churnEveryMs", parse: parseNumber },
317
+ { flag: "--churnDownMs", key: "churnDownMs", parse: parseNumber },
318
+ { flag: "--churnFraction", key: "churnFraction", parse: parseNumber },
319
+ { flag: "--assertMinJoinedPct", key: "assertMinJoinedPct", parse: parseNumber },
320
+ { flag: "--assertMinDeliveryPct", key: "assertMinDeliveryPct", parse: parseNumber },
321
+ {
322
+ flag: "--assertMinDeadlineDeliveryPct",
323
+ key: "assertMinDeadlineDeliveryPct",
324
+ parse: parseNumber,
325
+ },
326
+ { flag: "--assertMaxUploadFracPct", key: "assertMaxUploadFracPct", parse: parseNumber },
327
+ {
328
+ flag: "--assertMaxOverheadFactor",
329
+ key: "assertMaxOverheadFactor",
330
+ parse: parseNumber,
331
+ },
332
+ { flag: "--assertMaxControlBpp", key: "assertMaxControlBpp", parse: parseNumber },
333
+ { flag: "--assertMaxTrackerBpp", key: "assertMaxTrackerBpp", parse: parseNumber },
334
+ { flag: "--assertMaxRepairBpp", key: "assertMaxRepairBpp", parse: parseNumber },
335
+ { flag: "--assertAttachP95Ms", key: "assertAttachP95Ms", parse: parseNumber },
336
+ { flag: "--assertMaxTreeLevelP95", key: "assertMaxTreeLevelP95", parse: parseNumber },
337
+ {
338
+ flag: "--assertMaxFormationScore",
339
+ key: "assertMaxFormationScore",
340
+ parse: parseNumber,
341
+ },
342
+ { flag: "--assertMaxOrphans", key: "assertMaxOrphans", parse: parseNumber },
343
+ { flag: "--assertMaxOrphanArea", key: "assertMaxOrphanArea", parse: parseNumber },
344
+ { flag: "--assertRecoveryP95Ms", key: "assertRecoveryP95Ms", parse: parseNumber },
345
+ {
346
+ flag: "--assertMaxReparentsPerMin",
347
+ key: "assertMaxReparentsPerMin",
348
+ parse: parseNumber,
349
+ },
350
+ ];
351
+ const parseArgs = (argv) => {
352
+ const get = (key) => {
353
+ const idx = argv.indexOf(key);
354
+ if (idx === -1)
355
+ return undefined;
356
+ return argv[idx + 1];
357
+ };
358
+ const has = (key) => argv.includes(key);
359
+ if (argv.includes("--help") || argv.includes("-h")) {
360
+ console.log(HELP_TEXT);
361
+ process.exit(0);
362
+ }
363
+ const preset = has("--preset") ? String(get("--preset")) : undefined;
364
+ const presetOpts = (preset ? PRESET_OPTIONS[preset] : undefined) ?? {};
365
+ const explicitOpts = {};
366
+ for (const spec of ARG_SPECS) {
367
+ if (!has(spec.flag))
368
+ continue;
369
+ explicitOpts[spec.key] = spec.parse(get(spec.flag));
370
+ }
371
+ const merged = { ...presetOpts, ...explicitOpts };
372
+ // Live workloads are deadline-oriented: drop forwarding of stale DATA once it
373
+ // exceeds the deadline (unless explicitly overridden).
374
+ if (preset === "live" && !("maxDataAgeMs" in explicitOpts)) {
375
+ const d = Number(merged.deadlineMs ?? 0);
376
+ if (d > 0)
377
+ merged.maxDataAgeMs = d;
378
+ }
379
+ return resolveFanoutTreeSimParams(merged);
380
+ };
381
+ const ASSERTION_SPECS = [
382
+ {
383
+ param: "assertMinJoinedPct",
384
+ label: "joinedPct",
385
+ mode: "min",
386
+ value: (result) => result.joinedPct,
387
+ formatActual: (value) => value.toFixed(2),
388
+ },
389
+ {
390
+ param: "assertMinDeliveryPct",
391
+ label: "deliveredPct",
392
+ mode: "min",
393
+ value: (result) => result.deliveredPct,
394
+ formatActual: (value) => value.toFixed(2),
395
+ },
396
+ {
397
+ param: "assertMaxUploadFracPct",
398
+ label: "maxUploadFracPct",
399
+ mode: "max",
400
+ value: (result) => result.maxUploadFracPct,
401
+ formatActual: (value) => value.toFixed(2),
402
+ },
403
+ {
404
+ param: "assertMinDeadlineDeliveryPct",
405
+ label: "deliveredWithinDeadlinePct",
406
+ mode: "min",
407
+ value: (result) => result.deliveredWithinDeadlinePct,
408
+ formatActual: (value) => value.toFixed(2),
409
+ },
410
+ {
411
+ param: "assertMaxOverheadFactor",
412
+ label: "overheadFactorData",
413
+ mode: "max",
414
+ value: (result) => result.overheadFactorData,
415
+ formatActual: (value) => value.toFixed(3),
416
+ },
417
+ {
418
+ param: "assertMaxControlBpp",
419
+ label: "controlBpp",
420
+ mode: "max",
421
+ value: (result) => result.controlBpp,
422
+ formatActual: (value) => value.toFixed(4),
423
+ },
424
+ {
425
+ param: "assertMaxTrackerBpp",
426
+ label: "trackerBpp",
427
+ mode: "max",
428
+ value: (result) => result.trackerBpp,
429
+ formatActual: (value) => value.toFixed(4),
430
+ },
431
+ {
432
+ param: "assertMaxRepairBpp",
433
+ label: "repairBpp",
434
+ mode: "max",
435
+ value: (result) => result.repairBpp,
436
+ formatActual: (value) => value.toFixed(4),
437
+ },
438
+ {
439
+ param: "assertAttachP95Ms",
440
+ label: "attachP95",
441
+ mode: "max",
442
+ value: (result) => result.attachP95,
443
+ formatActual: (value) => `${value.toFixed(1)}ms`,
444
+ formatExpected: (value) => `${value}ms`,
445
+ },
446
+ {
447
+ param: "assertMaxTreeLevelP95",
448
+ label: "treeLevelP95",
449
+ mode: "max",
450
+ value: (result) => result.treeLevelP95,
451
+ formatActual: (value) => value.toFixed(1),
452
+ },
453
+ {
454
+ param: "assertMaxFormationScore",
455
+ label: "formationScore",
456
+ mode: "max",
457
+ value: (result) => result.formationScore,
458
+ formatActual: (value) => value.toFixed(2),
459
+ },
460
+ {
461
+ param: "assertMaxOrphans",
462
+ label: "maintMaxOrphans",
463
+ mode: "max",
464
+ value: (result) => result.maintMaxOrphans,
465
+ },
466
+ {
467
+ param: "assertMaxOrphanArea",
468
+ label: "maintOrphanArea",
469
+ mode: "max",
470
+ value: (result) => result.maintOrphanArea,
471
+ formatActual: (value) => value.toFixed(1),
472
+ },
473
+ {
474
+ param: "assertRecoveryP95Ms",
475
+ label: "maintRecoveryP95Ms",
476
+ mode: "max",
477
+ value: (result) => result.maintRecoveryP95Ms,
478
+ formatActual: (value) => `${value.toFixed(1)}ms`,
479
+ formatExpected: (value) => `${value}ms`,
480
+ },
481
+ {
482
+ param: "assertMaxReparentsPerMin",
483
+ label: "maintReparentsPerMin",
484
+ mode: "max",
485
+ value: (result) => result.maintReparentsPerMin,
486
+ formatActual: (value) => value.toFixed(2),
487
+ },
488
+ ];
489
+ const runAssertions = (params, result) => {
490
+ for (const spec of ASSERTION_SPECS) {
491
+ const threshold = params[spec.param];
492
+ if (threshold <= 0)
493
+ continue;
494
+ const actual = spec.value(result);
495
+ const failed = spec.mode === "min" ? actual + 1e-9 < threshold : actual - 1e-9 > threshold;
496
+ if (!failed)
497
+ continue;
498
+ const actualText = spec.formatActual ? spec.formatActual(actual) : `${actual}`;
499
+ const expectedText = spec.formatExpected ? spec.formatExpected(threshold) : `${threshold}`;
500
+ const operator = spec.mode === "min" ? "<" : ">";
501
+ console.error(`ASSERT FAILED: ${spec.label} ${actualText} ${operator} ${expectedText}`);
502
+ process.exit(2);
503
+ }
504
+ };
505
+ const main = async () => {
506
+ const params = parseArgs(process.argv.slice(2));
507
+ const result = await runFanoutTreeSim(params);
508
+ console.log(formatFanoutTreeSimResult(result));
509
+ runAssertions(params, result);
510
+ };
511
+ try {
512
+ await main();
513
+ }
514
+ catch (err) {
515
+ console.error(err?.message ?? String(err));
516
+ if (String(err?.message ?? "").includes("timed out")) {
517
+ process.exit(124);
518
+ }
519
+ process.exit(1);
520
+ }
521
+ //# sourceMappingURL=fanout-tree-sim.js.map