@mark1russell7/harness 0.15.0 → 0.15.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/build/index.d.ts CHANGED
@@ -181,6 +181,35 @@ export declare const streamsLoadOf: (events: readonly ProbeEvent[], streams: rea
181
181
  readonly pool: RunLoad;
182
182
  readonly streams: Readonly<Record<string, RunLoad>>;
183
183
  } | null;
184
+ /** This function gives the pool of some measures: it sums the counts and joins the times, in the order of the measures. */
185
+ export declare const poolOf: (measures: readonly RunLoad[]) => RunLoad & {
186
+ readonly failed: number;
187
+ };
188
+ /**
189
+ * This time is the tolerance of a closed-loop estimate, in ms. A send later than its expected time
190
+ * by more than this tolerance is a pause of the client: a driver gap.
191
+ */
192
+ export declare const CLOSED_TOLERANCE = 5;
193
+ /**
194
+ * A run estimate is the latency of the open loop that a closed-loop stream hid (SYS-91). The package
195
+ * rigor-chaos puts back each send that a stall or a pause of the client hid (`closedLoopPlan`).
196
+ * `hidden` counts those sends, and `driverGaps` counts the pauses of the client. Its times are in ms.
197
+ */
198
+ type RunEstimate = LoadMeasure & {
199
+ readonly hidden: number;
200
+ readonly driverGaps: number;
201
+ readonly driverGapTotal: number;
202
+ };
203
+ /**
204
+ * This function gives the estimate of one closed-loop stream from its requests, in the order of their
205
+ * sends. Each time is a time of a line of the client. The client waits `interval` ms after each reply,
206
+ * thus the interval is also the pause of the driver. The function gives undefined for no request, and
207
+ * for a request with no reply before the last request.
208
+ */
209
+ export declare const estimateOf: (requests: ReadonlyArray<{
210
+ readonly sent: number;
211
+ readonly done: number | null;
212
+ }>, end: number, interval: number) => RunEstimate | undefined;
184
213
  /** A load spread is a part of the distribution of one measure of an open-loop cell, over its counted runs. */
185
214
  interface LoadSpread {
186
215
  readonly p50: Quantity;
@@ -224,6 +253,22 @@ export declare const loadVerdict: (prediction: LoadPrediction, runs: ReadonlyArr
224
253
  readonly name: string;
225
254
  readonly load: RunLoad | undefined;
226
255
  }>) => LoadJudgement;
256
+ /**
257
+ * An estimate verdict sums the closed-loop estimates of a cell over its counted runs. Its latency
258
+ * is an estimate of the open loop, not a measure of it: a record of an open-loop client stays the
259
+ * better measure. Each hidden send after a request with no reply counts at its age at the end.
260
+ */
261
+ interface EstimateVerdict {
262
+ readonly planned: number;
263
+ readonly hidden: number;
264
+ readonly driverGaps: number;
265
+ readonly driverGapTotal: Quantity;
266
+ readonly latency: LoadSpread | null;
267
+ /** This text gives the estimate in words, for the verdict of the cell. */
268
+ readonly words: string;
269
+ }
270
+ /** This function gives the estimate verdict of the counted runs, or undefined when no run has an estimate. */
271
+ export declare const estimateVerdict: (estimates: ReadonlyArray<RunEstimate | undefined>) => EstimateVerdict | undefined;
227
272
  //#endregion
228
273
  //#region src/driver.d.ts
229
274
  /**
@@ -785,6 +830,8 @@ interface Verdict {
785
830
  readonly reordering?: Reordering;
786
831
  /** This record is the load of an open-loop cell over its counted runs. */
787
832
  readonly load?: LoadVerdict;
833
+ /** This record is the estimate of the open loop of a closed-loop stream over its counted runs (SYS-91). */
834
+ readonly estimate?: EstimateVerdict;
788
835
  /** This record is the time of the proxy of a calibration cell, in each direction. */
789
836
  readonly proxy?: {
790
837
  readonly hop: string;
@@ -974,6 +1021,8 @@ interface Measured {
974
1021
  readonly samples?: readonly Quantity[];
975
1022
  /** This measure is the run of an open-loop cell against its schedule (`Run.schedule`), with its failed replies. Its times are in ms. */
976
1023
  readonly load?: RunLoad;
1024
+ /** This estimate is the open loop that a closed-loop stream of the client of the harness hid (SYS-91). Its times are in ms. */
1025
+ readonly estimate?: RunEstimate;
977
1026
  /** This count is the number of keepalive probes that the kernel sent. */
978
1027
  readonly probes: number;
979
1028
  /** This count is the number of segments that the kernel sent again. */
@@ -2661,5 +2710,5 @@ export declare const spread: (runs: number, environments: number) => number[];
2661
2710
  */
2662
2711
  export declare const runCell: (cell: Cell, say?: (line: string) => void) => Promise<CellResult>;
2663
2712
  //#endregion
2664
- export { type Agent, type BuildImage, type BuildRecord, CLIENT_CAPABILITIES, type CallReading, type Cell, type CellResult, type Client, type ClientCapability, type ClientImage, type ClockPair, type Cloud, type Cluster, type ClusterClientAt, type ClusterLab, type ClusterStage, type ConntrackPrediction, type ConntrackReading, type ContextFile, type CountBand, type Crossings, type Cut, type Decision, type Drill, type DriverBand, type DriverSocket, type DriverStep, type DriverStepTime, type ErrorOnTheWay, type Fabric, type FabricLab, type FabricManifest, type FabricParts, type Fault, type FaultPlace, type FaultSide, type Group, type GroupClient, type GroupLab, type GroupMeasured, type GroupNetworkFault, type GroupPlace, type GroupPrediction, type GroupReading, type GroupRole, type GroupVerdict, type GroupView, type Hop, type HopEvent, type HopPlace, type HopSignal, type HopWrite, type Host, type HostSetting, type HostSysctl, type HttpProbe, type ImagePlan, type ImageSource, type Interval, type Jitter, type Kafka, type KafkaLab, type KafkaMember, type KafkaPause, type KernelRecord, type Lab, type Layer, type LeafViews, type LineCount, type LineMatch, type LoadBand, type LoadJudgement, type LoadPlan, type LoadPrediction, type LoadSpread, type LoadStream, type LoadVerdict, type Manifest, type ManifestHop, type Measured, type MemberLine, type MiddleboxEvent, type MiddleboxExpectation, type MiddleboxForm, type NetworkFault, type NodeLine, type Observer, type OplogRead, type OplogTime, type Outcome, type Outcomes, type Pair, type PairSets, type Pairing, type PartitionView, type PauseBand, type PauseCommit, type PausePrediction, type PauseReading, type Pinnable, type PinnedImage, type PortsPrediction, type PortsReading, type Prediction, type Probe, type ProbeEvent, type ProgramEvent, type ProxyHop, type ProxyTime, type QueueBand, type QueueConnection, type QueueConnectionReading, type QueueEnd, type QueuePrediction, type QueueReading, type ReconnectReading, type ReconnectVerdict, type Reconnects, type RecordCode, type Recovers, type RecoveryMeasured, type Reference, type Reordering, type ReplicaSet, type ReplicaSetLab, type ReplicaSetStage, type Replies, type RequestPrediction, type RequestReading, type RouteLine, type RouterHop, type RttRange, type Run, type RunBackup, type RunDrill, type RunFabric, type RunGroup, type RunLoad, type RunPart, type RunPause, type RunRoute, type RunStream, type RunTopology, type SentinelEvent, type SentinelStage, type Shipped, type ShippedImage, type Sibling, type SocketPlace, type Spread, type Stage, type StageBand, type StageVerdict, type StallReading, type Stamp, type Status, type StatusRow, type Subject, type Substrate, type SubstrateSource, type Target, type Topology, type Toxic, type Verdict, type WallStamp, type Writes, type WsProbe, isHopPlace, latestEndOf };
2713
+ export { type Agent, type BuildImage, type BuildRecord, CLIENT_CAPABILITIES, type CallReading, type Cell, type CellResult, type Client, type ClientCapability, type ClientImage, type ClockPair, type Cloud, type Cluster, type ClusterClientAt, type ClusterLab, type ClusterStage, type ConntrackPrediction, type ConntrackReading, type ContextFile, type CountBand, type Crossings, type Cut, type Decision, type Drill, type DriverBand, type DriverSocket, type DriverStep, type DriverStepTime, type ErrorOnTheWay, type EstimateVerdict, type Fabric, type FabricLab, type FabricManifest, type FabricParts, type Fault, type FaultPlace, type FaultSide, type Group, type GroupClient, type GroupLab, type GroupMeasured, type GroupNetworkFault, type GroupPlace, type GroupPrediction, type GroupReading, type GroupRole, type GroupVerdict, type GroupView, type Hop, type HopEvent, type HopPlace, type HopSignal, type HopWrite, type Host, type HostSetting, type HostSysctl, type HttpProbe, type ImagePlan, type ImageSource, type Interval, type Jitter, type Kafka, type KafkaLab, type KafkaMember, type KafkaPause, type KernelRecord, type Lab, type Layer, type LeafViews, type LineCount, type LineMatch, type LoadBand, type LoadJudgement, type LoadPlan, type LoadPrediction, type LoadSpread, type LoadStream, type LoadVerdict, type Manifest, type ManifestHop, type Measured, type MemberLine, type MiddleboxEvent, type MiddleboxExpectation, type MiddleboxForm, type NetworkFault, type NodeLine, type Observer, type OplogRead, type OplogTime, type Outcome, type Outcomes, type Pair, type PairSets, type Pairing, type PartitionView, type PauseBand, type PauseCommit, type PausePrediction, type PauseReading, type Pinnable, type PinnedImage, type PortsPrediction, type PortsReading, type Prediction, type Probe, type ProbeEvent, type ProgramEvent, type ProxyHop, type ProxyTime, type QueueBand, type QueueConnection, type QueueConnectionReading, type QueueEnd, type QueuePrediction, type QueueReading, type ReconnectReading, type ReconnectVerdict, type Reconnects, type RecordCode, type Recovers, type RecoveryMeasured, type Reference, type Reordering, type ReplicaSet, type ReplicaSetLab, type ReplicaSetStage, type Replies, type RequestPrediction, type RequestReading, type RouteLine, type RouterHop, type RttRange, type Run, type RunBackup, type RunDrill, type RunEstimate, type RunFabric, type RunGroup, type RunLoad, type RunPart, type RunPause, type RunRoute, type RunStream, type RunTopology, type SentinelEvent, type SentinelStage, type Shipped, type ShippedImage, type Sibling, type SocketPlace, type Spread, type Stage, type StageBand, type StageVerdict, type StallReading, type Stamp, type Status, type StatusRow, type Subject, type Substrate, type SubstrateSource, type Target, type Topology, type Toxic, type Verdict, type WallStamp, type Writes, type WsProbe, isHopPlace, latestEndOf };
2665
2714
  //# sourceMappingURL=index.d.ts.map
package/build/index.js CHANGED
@@ -2,7 +2,7 @@ import { A as unlockedManifests, B as isHopPlace, C as programOf, D as subjectPr
2
2
  import { quantity, valueIn } from "@mark1russell7/quantity";
3
3
  import { median, medianInterval as medianInterval$1, quantile, quantileSorted } from "@mark1russell7/rigor-statistics";
4
4
  import { rungVerdict } from "@mark1russell7/rigor-bench";
5
- import { measureLoad, schedule, scheduleHeld } from "@mark1russell7/rigor-chaos";
5
+ import { closedLoopPlan, measureLoad, schedule, scheduleHeld } from "@mark1russell7/rigor-chaos";
6
6
  import { createHash, randomBytes } from "node:crypto";
7
7
  import { execFile } from "node:child_process";
8
8
  import { mkdtemp, rm, writeFile } from "node:fs/promises";
@@ -99,21 +99,56 @@ const streamsLoadOf = (events, streams) => {
99
99
  const start = events.find((event) => event.ev === "scheduled")?.t;
100
100
  if (start === void 0) return null;
101
101
  const each = streams.map((stream) => [stream.key, measureOf(events, start, stream.schedule, stream.key)]);
102
- const measures = each.map(([, measure]) => measure);
102
+ return {
103
+ pool: poolOf(each.map(([, measure]) => measure)),
104
+ streams: Object.fromEntries(each)
105
+ };
106
+ };
107
+ /** This function gives the pool of some measures: it sums the counts and joins the times, in the order of the measures. */
108
+ const poolOf = (measures) => {
103
109
  const sum = (count) => measures.reduce((total, measure) => total + count(measure), 0);
104
110
  const join = (times) => measures.flatMap(times);
105
111
  return {
106
- pool: {
107
- planned: sum((measure) => measure.planned),
108
- unsent: sum((measure) => measure.unsent),
109
- unfinished: sum((measure) => measure.unfinished),
110
- failed: sum((measure) => measure.failed ?? 0),
111
- latency: join((measure) => measure.latency),
112
- service: join((measure) => measure.service),
113
- lag: join((measure) => measure.lag),
114
- censored: join((measure) => measure.censored)
115
- },
116
- streams: Object.fromEntries(each)
112
+ planned: sum((measure) => measure.planned),
113
+ unsent: sum((measure) => measure.unsent),
114
+ unfinished: sum((measure) => measure.unfinished),
115
+ failed: sum((measure) => measure.failed ?? 0),
116
+ latency: join((measure) => measure.latency),
117
+ service: join((measure) => measure.service),
118
+ lag: join((measure) => measure.lag),
119
+ censored: join((measure) => measure.censored)
120
+ };
121
+ };
122
+ /**
123
+ * This time is the tolerance of a closed-loop estimate, in ms. A send later than its expected time
124
+ * by more than this tolerance is a pause of the client: a driver gap.
125
+ */
126
+ const CLOSED_TOLERANCE = 5;
127
+ /**
128
+ * This function gives the estimate of one closed-loop stream from its requests, in the order of their
129
+ * sends. Each time is a time of a line of the client. The client waits `interval` ms after each reply,
130
+ * thus the interval is also the pause of the driver. The function gives undefined for no request, and
131
+ * for a request with no reply before the last request.
132
+ */
133
+ const estimateOf = (requests, end, interval) => {
134
+ const start = requests[0]?.sent;
135
+ if (start === void 0 || requests.slice(0, -1).some((request) => request.done === null)) return void 0;
136
+ const loop = requests.map((request) => ({
137
+ sent: fromStart(start, request.sent),
138
+ done: request.done === null ? null : fromStart(start, request.done)
139
+ }));
140
+ const stop = Math.max(fromStart(start, end), ...loop.map((request) => request.done ?? request.sent), interval);
141
+ const run = closedLoopPlan(loop, {
142
+ interval,
143
+ end: stop,
144
+ tolerance: 5,
145
+ pause: interval
146
+ });
147
+ return {
148
+ ...measureLoad(run.plan, run.completions, stop),
149
+ hidden: run.hidden,
150
+ driverGaps: run.driverGaps,
151
+ driverGapTotal: run.driverGapTotal
117
152
  };
118
153
  };
119
154
  /** This function gives the spread of a list of times in ms, or null for no time. */
@@ -246,6 +281,28 @@ const loadVerdict = (prediction, runs) => {
246
281
  }
247
282
  };
248
283
  };
284
+ /** This function gives the estimate verdict of the counted runs, or undefined when no run has an estimate. */
285
+ const estimateVerdict = (estimates) => {
286
+ const runs = estimates.filter((estimate) => estimate !== void 0);
287
+ if (runs.length === 0) return void 0;
288
+ const pool = poolOf(runs);
289
+ const total = (count) => runs.reduce((sum, estimate) => sum + count(estimate), 0);
290
+ const hidden = total((estimate) => estimate.hidden);
291
+ const driverGaps = total((estimate) => estimate.driverGaps);
292
+ const driverGapTotal = total((estimate) => estimate.driverGapTotal);
293
+ const latency = spreadOf$1([...pool.latency, ...pool.censored]);
294
+ const seconds = (time) => (valueIn(time, "ms") / 1e3).toFixed(3);
295
+ const spread = latency === null ? "no latency" : `median ${seconds(latency.p50)} s, p99 ${seconds(latency.p99)} s, slowest ${seconds(latency.max)} s`;
296
+ const gaps = driverGaps === 0 ? "no pause of the client" : `${driverGaps} pauses of the client, ${Math.round(driverGapTotal)} ms in all`;
297
+ return {
298
+ planned: pool.planned,
299
+ hidden,
300
+ driverGaps,
301
+ driverGapTotal: quantity(driverGapTotal, "ms"),
302
+ latency,
303
+ words: `The estimate of the open loop puts back ${hidden} hidden sends, with ${gaps}: ${spread}.`
304
+ };
305
+ };
249
306
  //#endregion
250
307
  //#region src/verdict.ts
251
308
  /** This function gives the words of the outcome of a second request: its connection, a retry, and its end. */
@@ -687,7 +744,9 @@ const verdictOfBand = (prediction, runs, delta = NOISE) => {
687
744
  reordering.fast,
688
745
  reordering.seen
689
746
  ].some((count) => (count ?? 0) > 0) ? ` Reordering: ${reorderingWords(reordering)}.` : "";
690
- const why = samples.length === 0 ? `${counted.length} runs measured, with no reply: ${prediction.why}` : `${counted.length} runs, ${samples.length} replies: median ${s(median(samples)).value} s, p99 ${s(quantileOf(samples, .99)).value} s, slowest ${s(samples.at(-1)).value} s, ${retransmissions} retransmissions, ${ended.length} connections ended.${reordered} ${prediction.why}`;
747
+ const estimate = estimateVerdict(counted.map((run) => run.estimate));
748
+ const estimated = estimate === void 0 ? "" : ` ${estimate.words}`;
749
+ const why = samples.length === 0 ? `${counted.length} runs measured, with no reply: ${prediction.why}` : `${counted.length} runs, ${samples.length} replies: median ${s(median(samples)).value} s, p99 ${s(quantileOf(samples, .99)).value} s, slowest ${s(samples.at(-1)).value} s, ${retransmissions} retransmissions, ${ended.length} connections ended.${reordered}${estimated} ${prediction.why}`;
691
750
  return {
692
751
  ...empty,
693
752
  decision: "measured",
@@ -696,6 +755,7 @@ const verdictOfBand = (prediction, runs, delta = NOISE) => {
696
755
  median: samples.length === 0 ? null : s(median(samples)),
697
756
  ...samples.length === 0 ? {} : { slowest: s(samples.at(-1)) },
698
757
  ...reordering === void 0 ? {} : { reordering },
758
+ ...estimate === void 0 ? {} : { estimate },
699
759
  why
700
760
  };
701
761
  }
@@ -3019,11 +3079,18 @@ const measureSocket = (cell, run) => {
3019
3079
  };
3020
3080
  const sends = load === void 0 ? events.filter((event) => event.ev === "sent").slice(1) : [];
3021
3081
  const answers = events.some((event) => event.ev === "replied") ? "replied" : "data";
3022
- const samples = sends.flatMap((send, n) => {
3082
+ const requests = sends.map((send, n) => {
3023
3083
  const next = sends[n + 1]?.t ?? Infinity;
3024
- const reply = events.find((event) => event.ev === answers && event.t > send.t && event.t < next);
3025
- return reply === void 0 ? [] : [between(send.t, reply.t)];
3084
+ return {
3085
+ send,
3086
+ reply: events.find((event) => event.ev === answers && event.t > send.t && event.t < next)
3087
+ };
3026
3088
  });
3089
+ const samples = requests.flatMap(({ send, reply }) => reply === void 0 ? [] : [between(send.t, reply.t)]);
3090
+ const estimate = cell.probe.mode === "stream" && cell.probe.driver === void 0 && cell.probe.interval !== void 0 ? estimateOf(requests.map(({ send, reply }) => ({
3091
+ sent: send.t,
3092
+ done: reply?.t ?? null
3093
+ })), events.reduce((latest, event) => Math.max(latest, event.t), 0), valueIn(cell.probe.interval, "ms")) : void 0;
3027
3094
  const from = prediction.from === void 0 ? void 0 : referenceAt(prediction.from);
3028
3095
  const until = ended ?? after.at(-1)?.t;
3029
3096
  const peerRecords = peerCookie === void 0 ? [] : kernel.filter((record) => record.netns === peerNetns && record.cookie === peerCookie);
@@ -3056,6 +3123,7 @@ const measureSocket = (cell, run) => {
3056
3123
  steps: retransmitted.filter((record) => record.mono > request.t).map((record) => between(request.t, record.mono)),
3057
3124
  samples,
3058
3125
  ...load === void 0 ? {} : { load },
3126
+ ...estimate === void 0 ? {} : { estimate },
3059
3127
  reordering: reorderingOf(socket.filter((record) => record.mono > request.t), peerRecords.filter((record) => record.mono > request.t)),
3060
3128
  ...crossings,
3061
3129
  void: voided
@@ -8935,6 +9003,6 @@ const runCell = async (cell, say = () => {}) => {
8935
9003
  }
8936
9004
  };
8937
9005
  //#endregion
8938
- export { AWS_FROM, CLIENT_CAPABILITIES, CLIENT_NAMES, CLUSTER_STAGES, CONVERGE_MS, DAEMONS, DEBUG, DIRTY, DROP_HANDLING, FABRIC_CLIENT, FABRIC_DEVICE, FABRIC_TARGET, FRR_IMAGE, GIVES_AWAY, HASH_SCRIPT, INJECT, INSERT, KAFKA_TAIL_MS, KEPT, LINGER_MS, LISTING, LOAD_FORMAT, LOAD_PATH, LOCK_NAMES, LOSS_MARGIN, MEMBER_MARKS, MONITOR_DOWN, NODE_MARKS, NOISE, PINNED, PUMP, PUMP_SLACK, QUIET_MS, RELATIVE, REPLICA_SET_STAGES, REPOSITORY, RESTART, ROUTERS, SCHEDULE_PATH, SEED_DOCUMENT, SHIPPED_CLIENTS, SHIPPED_NAMES, STAGES, STANDBY_READY, STATUS_SCRIPT, STEPS, STEP_DOWN, amqpClientImage, basesOf, bootstrapOf, brokerEnv, buildOf, buildRecordOf, callOf, cancelsOf, cargoVersions, clockOffsetOf, closeOrExit, cloudOf, clusterArgs, clusterConf, clusterCutOf, clusterHostsOf, clusterOnce, clusterStagesOf, clusterViewOf, commitProblems, comparable, controllerEnv, crossingsOf, cutOf, deadlineOf, delayVoids, deviceOf, drillOnce, drillSpan, dropFinding, dropOf, endpointAfter, envOf, errorsOf, exitOf, fieldOf, fieldsOf, firstUnanswered, frrConf, goHttpImage, goVersions, groupOnce, groupVerdictOf, grpcClientImage, harnessImage, harnessRecord, harnessVersion, hashOf, highestHeld, hikariClientImage, hzOf, imageOf, imageProblems, inContext, infoOf, initiateScript, isFenceLine, isHopPlace, jarVersions, jitterOf, jitterOfLines, judge, kafkaArgs, kafkaClientImage, kafkaCutOf, kafkaOnce, kafkaPauseOnce, kafkaViewOf, lagsOf, laterMove, latestEndOf, leafLacks, leftAfter, loadOf, loadPlanOf, loadVerdict, locksOf, logNameOf, logTimeOf, manifestProblems, matches, measure, measureConntrack, measureDriver, measureGroup, measurePause, measurePorts, measureQueue, medianInterval, memberCommand, memberConfig, memberLineOf, mongoClientImage, monotonicAt, monotonicOf, namesGroup, nodeClientImage, nodeCommand, nodeHttpImage, nodeIdOf, nodeLineOf, nodeNameOf, nodesOnMonotonic, noiseOf, npmVersions, numbersOf, onMonotonic, openClusterLab, openFabric, openGroupLab, openKafkaLab, openLab, openReplicaSetLab, openStandby, pairArgs, pairOnce, pairingOf, pairingsOf, pauseReady, peersOf, pgClientImage, pingsOf, plainOf, planOf, programLines, programOf, quantileOf, readCpu, readHost, readOplog, reconnectFinding, reconnectOf, recordProblems, recoveryFindings, recoveryOf, referenceOf, reorderingOf, replicaSetArgs, replicaSetOnce, replicaSetStagesOf, requestOf, requestWords, restamped, routeLine, routerImage, routesOf, runCell, seedScript, sentinelConfig, sessionsOf, shippedClientRecord, shippedSource, sliceQuery, socketAt, socketOf, socketsOf, spread, spreadOf, stagesOf, standaloneCommand, standbyCommand, statusViewOf, stealShare, stopScript, streamsLoadOf, subjectClient, subjectProblems, subscriptionsOf, substrateHere, substrateKey, substrateOf, substrateOn, targetImageOf, targetSourceOf, templated, toolJsonOf, topicOf, topologyOf, toxicBody, unlockedManifests, unpinnedBases, unpoolable, verdictOf, versionsOf, viewOf, writesOf };
9006
+ export { AWS_FROM, CLIENT_CAPABILITIES, CLIENT_NAMES, CLOSED_TOLERANCE, CLUSTER_STAGES, CONVERGE_MS, DAEMONS, DEBUG, DIRTY, DROP_HANDLING, FABRIC_CLIENT, FABRIC_DEVICE, FABRIC_TARGET, FRR_IMAGE, GIVES_AWAY, HASH_SCRIPT, INJECT, INSERT, KAFKA_TAIL_MS, KEPT, LINGER_MS, LISTING, LOAD_FORMAT, LOAD_PATH, LOCK_NAMES, LOSS_MARGIN, MEMBER_MARKS, MONITOR_DOWN, NODE_MARKS, NOISE, PINNED, PUMP, PUMP_SLACK, QUIET_MS, RELATIVE, REPLICA_SET_STAGES, REPOSITORY, RESTART, ROUTERS, SCHEDULE_PATH, SEED_DOCUMENT, SHIPPED_CLIENTS, SHIPPED_NAMES, STAGES, STANDBY_READY, STATUS_SCRIPT, STEPS, STEP_DOWN, amqpClientImage, basesOf, bootstrapOf, brokerEnv, buildOf, buildRecordOf, callOf, cancelsOf, cargoVersions, clockOffsetOf, closeOrExit, cloudOf, clusterArgs, clusterConf, clusterCutOf, clusterHostsOf, clusterOnce, clusterStagesOf, clusterViewOf, commitProblems, comparable, controllerEnv, crossingsOf, cutOf, deadlineOf, delayVoids, deviceOf, drillOnce, drillSpan, dropFinding, dropOf, endpointAfter, envOf, errorsOf, estimateOf, estimateVerdict, exitOf, fieldOf, fieldsOf, firstUnanswered, frrConf, goHttpImage, goVersions, groupOnce, groupVerdictOf, grpcClientImage, harnessImage, harnessRecord, harnessVersion, hashOf, highestHeld, hikariClientImage, hzOf, imageOf, imageProblems, inContext, infoOf, initiateScript, isFenceLine, isHopPlace, jarVersions, jitterOf, jitterOfLines, judge, kafkaArgs, kafkaClientImage, kafkaCutOf, kafkaOnce, kafkaPauseOnce, kafkaViewOf, lagsOf, laterMove, latestEndOf, leafLacks, leftAfter, loadOf, loadPlanOf, loadVerdict, locksOf, logNameOf, logTimeOf, manifestProblems, matches, measure, measureConntrack, measureDriver, measureGroup, measurePause, measurePorts, measureQueue, medianInterval, memberCommand, memberConfig, memberLineOf, mongoClientImage, monotonicAt, monotonicOf, namesGroup, nodeClientImage, nodeCommand, nodeHttpImage, nodeIdOf, nodeLineOf, nodeNameOf, nodesOnMonotonic, noiseOf, npmVersions, numbersOf, onMonotonic, openClusterLab, openFabric, openGroupLab, openKafkaLab, openLab, openReplicaSetLab, openStandby, pairArgs, pairOnce, pairingOf, pairingsOf, pauseReady, peersOf, pgClientImage, pingsOf, plainOf, planOf, poolOf, programLines, programOf, quantileOf, readCpu, readHost, readOplog, reconnectFinding, reconnectOf, recordProblems, recoveryFindings, recoveryOf, referenceOf, reorderingOf, replicaSetArgs, replicaSetOnce, replicaSetStagesOf, requestOf, requestWords, restamped, routeLine, routerImage, routesOf, runCell, seedScript, sentinelConfig, sessionsOf, shippedClientRecord, shippedSource, sliceQuery, socketAt, socketOf, socketsOf, spread, spreadOf, stagesOf, standaloneCommand, standbyCommand, statusViewOf, stealShare, stopScript, streamsLoadOf, subjectClient, subjectProblems, subscriptionsOf, substrateHere, substrateKey, substrateOf, substrateOn, targetImageOf, targetSourceOf, templated, toolJsonOf, topicOf, topologyOf, toxicBody, unlockedManifests, unpinnedBases, unpoolable, verdictOf, versionsOf, viewOf, writesOf };
8939
9007
 
8940
9008
  //# sourceMappingURL=index.js.map