@mark1russell7/harness 0.14.4 → 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
@@ -1,5 +1,6 @@
1
- import { $ as Replies, A as LineCount, B as Prediction, C as HopSignal, Ct as latestEndOf, D as Jitter, E as ImageSource, F as Observer, G as QueueConnection, H as ProxyHop, I as Outcomes, J as Reconnects, K as QueueEnd, L as Pair, M as MiddleboxEvent, N as MiddleboxExpectation, O as Kafka, P as MiddleboxForm, Q as ReplicaSetStage, R as PinnedImage, S as HopPlace, St as isHopPlace, T as HttpProbe, U as ProxyTime, V as ProbeEvent, W as QueueBand, X as Reference, Y as Recovers, Z as ReplicaSet, _ as GroupPlace, _t as Subject, a as Cluster, at as RunDrill, b as Hop, bt as Toxic, c as CountBand, ct as RunPart, d as DriverStep, dt as SentinelEvent, et as RequestPrediction, f as Fabric, ft as SentinelStage, g as Group, gt as StageBand, h as FaultPlace, ht as Stage, i as ClientImage, it as RunBackup, j as LineMatch, k as KernelRecord, l as Drill, lt as RunRoute, m as Fault, mt as ShippedImage, n as Cell, nt as RttRange, o as ClusterClientAt, ot as RunFabric, p as FabricManifest, pt as Shipped, q as QueuePrediction, r as Client, rt as Run, s as ClusterStage, st as RunGroup, t as BuildImage, tt as RouterHop, u as DriverBand, ut as RunTopology, v as GroupPrediction, vt as Target, w as HopWrite, x as HopEvent, xt as WsProbe, y as GroupRole, yt as Topology, z as PortsPrediction } from "./cell-DZm8zXN4.js";
1
+ import { $ as ProxyHop, A as ImageSource, At as Subject, B as LoadStream, C as Hop, Ct as RunTopology, D as HopWrite, Dt as ShippedImage, E as HopSignal, Et as Shipped, F as LineCount, Ft as isHopPlace, G as Outcomes, H as MiddleboxExpectation, I as LineMatch, It as latestEndOf, J as PausePrediction, K as Pair, L as LoadBand, M as Kafka, Mt as Topology, N as KafkaPause, Nt as Toxic, O as HostSysctl, Ot as Stage, P as KernelRecord, Pt as WsProbe, Q as ProbeEvent, R as LoadPlan, S as GroupRole, St as RunStream, T as HopPlace, Tt as SentinelStage, U as MiddleboxForm, V as MiddleboxEvent, W as Observer, X as PortsPrediction, Y as PinnedImage, Z as Prediction, _ as Fault, _t as RunFabric, a as ClientCapability, at as Reconnects, b as GroupPlace, bt as RunPause, c as ClusterClientAt, ct as ReplicaSet, d as CountBand, dt as RequestPrediction, et as ProxyTime, f as Drill, ft as RouterHop, g as FabricManifest, gt as RunDrill, h as Fabric, ht as RunBackup, i as Client, it as QueuePrediction, j as Jitter, jt as Target, k as HttpProbe, kt as StageBand, l as ClusterStage, lt as ReplicaSetStage, m as DriverStep, mt as Run, n as CLIENT_CAPABILITIES, nt as QueueConnection, o as ClientImage, ot as Recovers, p as DriverBand, pt as RttRange, q as PauseBand, r as Cell, rt as QueueEnd, s as Cluster, st as Reference, t as BuildImage, tt as QueueBand, u as ConntrackPrediction, ut as Replies, v as FaultPlace, vt as RunGroup, w as HopEvent, wt as SentinelEvent, x as GroupPrediction, xt as RunRoute, y as Group, yt as RunPart, z as LoadPrediction } from "./cell-biffSiEJ.js";
2
2
  import { Quantity } from "@mark1russell7/quantity";
3
+ import { LoadMeasure, Schedule } from "@mark1russell7/rigor-chaos";
3
4
  import { StartedTestContainer } from "testcontainers";
4
5
  //#region src/application.d.ts
5
6
  /**
@@ -135,6 +136,140 @@ interface CallReading {
135
136
  /** This function reads the call that the client sent into the fault: its `call-error` or `data` line after the request. */
136
137
  export declare const callOf: (events: readonly ProbeEvent[], request: ProbeEvent, detected: number | undefined) => CallReading;
137
138
  //#endregion
139
+ //#region src/load.d.ts
140
+ /**
141
+ * The measure and the verdict of an open-loop cell (SYS-68). A client on a schedule sends each
142
+ * arrival at its time, thus a stall counts in each arrival that it delayed. The package rigor-chaos
143
+ * counts each latency from the planned time. The package rigor-bench judges a quantile by a
144
+ * distribution-free interval.
145
+ */
146
+ /** This path is where the client of an open-loop cell finds its schedule. */
147
+ export declare const SCHEDULE_PATH = "/tmp/schedule.json";
148
+ /**
149
+ * This function gives the measure of one run of a schedule from the lines of its client. It gives
150
+ * null when the client did not start the schedule. The first `sent` line of a client is its request
151
+ * before `ready`, and it names no arrival. The end of the run is its last line.
152
+ */
153
+ export declare const loadOf: (events: readonly ProbeEvent[], plan: Schedule) => RunLoad | null;
154
+ /**
155
+ * A run load is the measure of one run of a schedule. `failed` counts the replies with a status
156
+ * outside 200 to 299. Such a reply is a completion, thus its time is in `latency`. The client
157
+ * `schedule` gives no status, and a record from before this field has none: both read as 0.
158
+ */
159
+ type RunLoad = LoadMeasure & {
160
+ readonly failed?: number;
161
+ };
162
+ /** This path is where the client `load` finds its plan. */
163
+ export declare const LOAD_PATH = "/tmp/load.json";
164
+ /** This text is the format of the plan of the client `load`. */
165
+ export declare const LOAD_FORMAT = "systems-load/1";
166
+ /**
167
+ * This function gives the schedule of each stream of a cell, and the text of the plan of the client
168
+ * `load`. It throws for no stream, for two streams with one key and for a stream with no request.
169
+ */
170
+ export declare const loadPlanOf: (streams: readonly LoadStream[]) => {
171
+ readonly streams: readonly RunStream[];
172
+ readonly content: string;
173
+ };
174
+ /**
175
+ * This function gives the measure of each stream of a run of the client `load`, and their pool. Each
176
+ * stream counts its arrivals from 0, thus the lines of a stream are the lines with its key. The pool
177
+ * sums the counts and joins the times, in the order of the streams. It gives null when the client did
178
+ * not start its schedule.
179
+ */
180
+ export declare const streamsLoadOf: (events: readonly ProbeEvent[], streams: readonly RunStream[]) => {
181
+ readonly pool: RunLoad;
182
+ readonly streams: Readonly<Record<string, RunLoad>>;
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;
213
+ /** A load spread is a part of the distribution of one measure of an open-loop cell, over its counted runs. */
214
+ interface LoadSpread {
215
+ readonly p50: Quantity;
216
+ readonly p99: Quantity;
217
+ readonly max: Quantity;
218
+ }
219
+ /**
220
+ * A load verdict sums the schedule of an open-loop cell over its counted runs. `latency` counts from
221
+ * the planned time, and `service` counts from the send: the measure of a closed-loop driver. Each
222
+ * arrival with no reply counts in `latency` at its age at the end of its run, a lower bound.
223
+ */
224
+ interface LoadVerdict {
225
+ readonly planned: number;
226
+ readonly unsent: number;
227
+ readonly unfinished: number;
228
+ /** This count is the replies with a status of a failure, over the counted runs. */
229
+ readonly failed: number;
230
+ readonly latency: LoadSpread | null;
231
+ readonly service: LoadSpread | null;
232
+ readonly lag: LoadSpread | null;
233
+ /** This text is the verdict of each band, in the order of the prediction. */
234
+ readonly bands: readonly string[];
235
+ /** This text is the verdict of the share of failed arrivals, when the prediction has a limit on it. */
236
+ readonly failures?: string;
237
+ }
238
+ /** This record is what the verdict of a cell takes from its load: the runs that broke the schedule, and the sum. */
239
+ interface LoadJudgement {
240
+ readonly holds: boolean;
241
+ readonly outside: ReadonlyArray<{
242
+ readonly run: string;
243
+ readonly why: string;
244
+ }>;
245
+ readonly load: LoadVerdict;
246
+ }
247
+ /**
248
+ * This function judges the load of an open-loop cell over its counted runs. A run that did not keep
249
+ * its schedule measures its driver, not the target, thus it is a finding of that run. Each
250
+ * band reads all the arrivals of the counted runs.
251
+ */
252
+ export declare const loadVerdict: (prediction: LoadPrediction, runs: ReadonlyArray<{
253
+ readonly name: string;
254
+ readonly load: RunLoad | undefined;
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;
272
+ //#endregion
138
273
  //#region src/driver.d.ts
139
274
  /**
140
275
  * This module measures a run of a cell whose client is a driver with more than one socket, for
@@ -204,6 +339,103 @@ export declare const referenceOf: (run: Run, from: Reference, role: string, data
204
339
  */
205
340
  export declare const measureDriver: (cell: Cell, run: Run) => Measured;
206
341
  //#endregion
342
+ //#region src/conntrack.d.ts
343
+ /** This record is the end of a connect that found no entry at its start. */
344
+ interface StallReading {
345
+ readonly errno: string;
346
+ readonly time: Quantity;
347
+ /** This count is the rise of the field `drop` of the conntrack statistics during the connect. */
348
+ readonly drops: number;
349
+ /** This count is the rise of `TCPRetransFail` during the connect. */
350
+ readonly retransFail: number;
351
+ }
352
+ /** This record is what a run of a conntrack cell measured. */
353
+ interface ConntrackReading {
354
+ /** This count is the flows that the client holds at its `full` line. */
355
+ readonly flows: number;
356
+ /** This count is what the namespace of the client reads at that line. */
357
+ readonly count: number;
358
+ /** This count is what the namespace of the target reads while the client holds its flows. */
359
+ readonly neighbor: number | null;
360
+ readonly stall: StallReading | null;
361
+ /** This time is from the `closing` line to the first fall of the count. */
362
+ readonly firstFall: Quantity | null;
363
+ /** This time is from the `closing` line to the zero of the count. */
364
+ readonly zero: Quantity | null;
365
+ /** This count is what the namespace reads after each side closes. */
366
+ readonly closed: number | null;
367
+ /** This count is the lowest that the poll of the count read. */
368
+ readonly lowest: number | null;
369
+ /** This count is what the namespace reads after a connect that got a slot. */
370
+ readonly after: number | null;
371
+ }
372
+ /**
373
+ * This function reads one run of a conntrack cell from the lines of its client and its target. An
374
+ * `unsettled` line makes the run void. The entries of the run before it were still in the table, thus
375
+ * the run did not start from an empty table.
376
+ */
377
+ export declare const measureConntrack: (run: Run, expected: ConntrackPrediction) => Measured;
378
+ //#endregion
379
+ //#region src/pause.d.ts
380
+ /**
381
+ * This module reads one run of a paused consumer against its law. Two members of a group each hold
382
+ * one partition. A SIGSTOP stops the first member while it holds a batch, and a SIGCONT ends that
383
+ * stop. Three sources give the reading: the lines of each member, the log lines of the brokers, and
384
+ * the stamps of the injector.
385
+ *
386
+ * The broker writes its log on the clock of the wall, and the members and the injector use the
387
+ * monotonic clock. The `start` line of a member has both clocks, thus it converts a log line.
388
+ */
389
+ /** A commit reading is the first commit of the stopped member after the stop. */
390
+ interface PauseCommit {
391
+ readonly acked: boolean;
392
+ /** This name is the class of the error of the commit. It is null for a commit that the broker acknowledged. */
393
+ readonly name: string | null;
394
+ readonly message: string | null;
395
+ /** This number is the epoch that the member held at the commit. */
396
+ readonly epoch: number | null;
397
+ }
398
+ /** A pause reading is what one run of a paused consumer measured. Each offset is the next offset to read, as a commit names it. */
399
+ interface PauseReading {
400
+ /** This number is the partition of the stopped member before the stop. */
401
+ readonly partition: number;
402
+ /** This time is from the stop to the log line of the broker that removes the member. It is null when no such line came. */
403
+ readonly fence: Quantity | null;
404
+ /** This time is from the stop to the first report of the partition by the other member. It is null when no report came. */
405
+ readonly takeover: Quantity | null;
406
+ readonly commit: PauseCommit | null;
407
+ /** This number is the epoch at the last acknowledged commit before the stop. */
408
+ readonly epochBefore: number | null;
409
+ /** This offset is the last acknowledged commit of the stopped member before the stop. */
410
+ readonly lastAck: number;
411
+ /** This offset is the first offset of the partition that the other member read after the stop. */
412
+ readonly otherFirst: number | null;
413
+ /** This offset is the last acknowledged commit of the other member on the partition, before the commit of the stopped member. */
414
+ readonly otherLast: number | null;
415
+ /** This time is from the end of the stop to the new epoch of the member. It is null when no new epoch came. */
416
+ readonly rejoin: Quantity | null;
417
+ /** This value tells if the stopped member reported the partition again between the end of the stop and its commit. */
418
+ readonly reassigned: boolean;
419
+ /** This offset is the committed offset that the member read after its commit. */
420
+ readonly committed: number | null;
421
+ /** This offset is what the first commit after the stop names for the partition. */
422
+ readonly stale: number | null;
423
+ }
424
+ /** This function gives the time of a log line on the monotonic clock of a member, in ns, from the `start` line of that member. It is null for a line with no stamp. */
425
+ export declare const logTimeOf: (line: string, start: ProbeEvent) => number | null;
426
+ /**
427
+ * This function tells if the two members can take the fault. Each member holds one partition, the
428
+ * two partitions differ, and the first member has two acknowledged commits on its partition after its
429
+ * last change. Thus the first member reads and commits at a steady rate.
430
+ */
431
+ export declare const pauseReady: (first: readonly ProbeEvent[], other: readonly ProbeEvent[]) => boolean;
432
+ /** This function tells if a log line of a broker tells that a member left a group, under either protocol. */
433
+ export declare const isFenceLine: (line: string) => boolean;
434
+ /** This function tells if a fence line names a group. The two protocols write the name in different words. */
435
+ export declare const namesGroup: (line: string, group: string) => boolean;
436
+ /** This function reads one run of a paused consumer against its law. */
437
+ export declare const measurePause: (run: Run, prediction: PausePrediction) => Measured;
438
+ //#endregion
207
439
  //#region src/recovery.d.ts
208
440
  /**
209
441
  * This module holds the pure parts of a recovery drill. These are the scripts of the shell, the reader
@@ -596,6 +828,10 @@ interface Verdict {
596
828
  readonly slowest?: Quantity;
597
829
  /** This record is the sum of what reordering did in each counted run of a measurement-only cell. */
598
830
  readonly reordering?: Reordering;
831
+ /** This record is the load of an open-loop cell over its counted runs. */
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;
599
835
  /** This record is the time of the proxy of a calibration cell, in each direction. */
600
836
  readonly proxy?: {
601
837
  readonly hop: string;
@@ -783,6 +1019,10 @@ interface Measured {
783
1019
  * sample is the time from its send to the first data after it.
784
1020
  */
785
1021
  readonly samples?: readonly Quantity[];
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. */
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;
786
1026
  /** This count is the number of keepalive probes that the kernel sent. */
787
1027
  readonly probes: number;
788
1028
  /** This count is the number of segments that the kernel sent again. */
@@ -811,6 +1051,8 @@ interface Measured {
811
1051
  readonly queue?: QueueReading;
812
1052
  /** This record is what a run of a port cell measured: the count of each search, and when each port came back. */
813
1053
  readonly ports?: PortsReading;
1054
+ /** This record is what a run of a conntrack cell measured: the flows, the count, and when a slot came back. */
1055
+ readonly conntrack?: ConntrackReading;
814
1056
  /** This record is what the second request of an HTTP client met, for a cell whose prediction says it. */
815
1057
  readonly request?: RequestReading | null;
816
1058
  /** This record is the time of each later band of a driver cell (`DriverBand.then`). */
@@ -839,6 +1081,8 @@ interface Measured {
839
1081
  * reader can check each pairing of the run again.
840
1082
  */
841
1083
  readonly pairing?: Pairing;
1084
+ /** This record is what a run of a paused consumer measured. */
1085
+ readonly pause?: PauseReading;
842
1086
  /** This text is the reason that the run cannot count, or null. A void run is not a pass and not a finding. */
843
1087
  readonly void: string | null;
844
1088
  /** This text tells what in the run disagrees with the prediction, other than its timing, or null. */
@@ -1363,6 +1607,14 @@ interface ManifestHop {
1363
1607
  /** These are the sysctls of the namespace of the hop, as read back after the harness set them. */
1364
1608
  readonly sysctls: Readonly<Record<string, string>>;
1365
1609
  }
1610
+ /** This record is one sysctl of the host for one environment, as the harness read it. */
1611
+ interface HostSetting {
1612
+ readonly name: string;
1613
+ readonly before: string;
1614
+ readonly set: string;
1615
+ /** This value is the read after the restore. It is null until the restore. */
1616
+ readonly restored: string | null;
1617
+ }
1366
1618
  /** A manifest is what a lab records about its machine, its images and its settings. */
1367
1619
  interface Manifest {
1368
1620
  readonly kernel: string;
@@ -1416,6 +1668,7 @@ interface Manifest {
1416
1668
  readonly client: {
1417
1669
  readonly kind: Client | "image";
1418
1670
  readonly image: string;
1671
+ readonly capabilities?: readonly ClientCapability[];
1419
1672
  readonly source?: ImageSource;
1420
1673
  readonly build?: BuildRecord;
1421
1674
  };
@@ -1427,6 +1680,8 @@ interface Manifest {
1427
1680
  };
1428
1681
  /** These are the sysctls of the client namespace, as read back after the harness set them. */
1429
1682
  readonly sysctls: Readonly<Record<string, string>>;
1683
+ /** These are the sysctls of the host that the cell set: each value before, as set, and as restored. */
1684
+ readonly host?: readonly HostSetting[];
1430
1685
  /** These are the hops of a topology, in sequence from the client. */
1431
1686
  readonly hops?: readonly ManifestHop[];
1432
1687
  /** These are the parts of a group, with their settings as each part read them back. */
@@ -1536,6 +1791,12 @@ interface Lab {
1536
1791
  configure(values: Readonly<Record<string, string>>): Promise<Record<string, string>>;
1537
1792
  /** This method sets the sysctls of the target namespace through a privileged sidecar there, and reads them back. */
1538
1793
  targetSysctl(values: Readonly<Record<string, string>>): Promise<Record<string, string>>;
1794
+ /** This method runs each command in the namespace of the client and in the namespace of the target. */
1795
+ namespaceSetup(commands: readonly (readonly string[])[]): Promise<void>;
1796
+ /** This method sets sysctls of the host through a privileged sidecar on the network of the host, and reads them back. */
1797
+ hostSysctl(settings: readonly HostSysctl[]): Promise<void>;
1798
+ /** This method puts back each value that `hostSysctl` changed, once, and gives the record of each. Closing the lab also does it. */
1799
+ restoreHost(): Promise<readonly HostSetting[]>;
1539
1800
  /**
1540
1801
  * This method applies a fault between the client and the target, by default from the namespace
1541
1802
  * of the target. The fault is a black hole, or a reset that answers the next segment of the
@@ -1613,7 +1874,11 @@ interface Lab {
1613
1874
  t0: number;
1614
1875
  t1: number;
1615
1876
  } | null>;
1616
- probe(args: readonly string[]): Promise<Probe>;
1877
+ /** This method starts the client with `args`. Each file is in its container before it starts. */
1878
+ probe(args: readonly string[], files?: ReadonlyArray<{
1879
+ readonly content: string;
1880
+ readonly target: string;
1881
+ }>): Promise<Probe>;
1617
1882
  /**
1618
1883
  * This method waits for the next clock line of the prober, which gives the count of lost
1619
1884
  * records. It gives null when no clock line comes in 5 s, because then nothing tells the count.
@@ -2308,6 +2573,11 @@ export declare const kafkaCutOf: (kafka: Kafka, members: Readonly<Record<string,
2308
2573
  export declare const bootstrapOf: (kafka: Kafka) => string;
2309
2574
  /** This function gives the name of the topic of a run. A warm-up has the index -1. */
2310
2575
  export declare const topicOf: (environment: number, index: number) => string;
2576
+ /** A Kafka member is one member of a consumer group. A signal goes from a sidecar in its process namespace. */
2577
+ interface KafkaMember extends GroupClient {
2578
+ /** This method sends a signal to the process of the member, at once or at an instant of the VM. The injector stamps it. */
2579
+ signal(signal: "STOP" | "CONT", at?: number): Promise<Stamp>;
2580
+ }
2311
2581
  /** A Kafka lab is one environment of a Kafka cell. */
2312
2582
  interface KafkaLab {
2313
2583
  readonly kafka: Kafka;
@@ -2325,8 +2595,14 @@ interface KafkaLab {
2325
2595
  sysctl(values: Readonly<Record<string, string>>): Promise<Record<string, string>>;
2326
2596
  /** This method waits until each broker is not fenced. */
2327
2597
  brokersUp(within?: number): Promise<void>;
2328
- /** This method makes the topic of a run. */
2329
- create(topic: string): Promise<void>;
2598
+ /** These are the log lines of the brokers that tell that a member left a group (`isFenceLine`), in sequence. */
2599
+ readonly fences: readonly string[];
2600
+ /** This method makes the topic of a run, with one partition or more. */
2601
+ create(topic: string, partitions?: number): Promise<void>;
2602
+ /** This method writes `count` records in each partition of a topic, each acknowledged by each in-sync replica. */
2603
+ fill(topic: string, partitions: number, count: number): Promise<void>;
2604
+ /** This method starts one member of a consumer group, with the arguments of `ConsumerKafka` after the bootstrap. */
2605
+ consumer(args: readonly string[]): Promise<KafkaMember>;
2330
2606
  /** This method waits until the partition is whole and calm, and gives the name of the broker of its leader. */
2331
2607
  converge(topic: string, within?: number): Promise<string>;
2332
2608
  /** This method gives the sequence numbers that the partition holds, one entry for each copy. */
@@ -2373,6 +2649,18 @@ export declare const kafkaArgs: (cell: Cell, topic: string) => string[];
2373
2649
  * the whole partition, thus the record tells which writes the group kept.
2374
2650
  */
2375
2651
  export declare const kafkaOnce: (lab: KafkaLab, cell: Cell, environment: number, index: number) => Promise<Run>;
2652
+ /**
2653
+ * This function does one run of a paused consumer:
2654
+ * - The topic of the run has two partitions, each with records that a run does not finish.
2655
+ * - Two members join one group, and the run waits until each member holds one partition and the
2656
+ * first member has two commits on its partition.
2657
+ * - A SIGSTOP stops the first member while it holds its next batch, and a SIGCONT ends the stop
2658
+ * after the hold of the cell. The run then waits for the tail.
2659
+ *
2660
+ * The fault is null when the members did not get one partition each. The measure then voids the run.
2661
+ * The law reads no kernel record, thus a lost record does not void this run.
2662
+ */
2663
+ export declare const kafkaPauseOnce: (lab: KafkaLab, cell: Cell, environment: number, index: number) => Promise<Run>;
2376
2664
  //#endregion
2377
2665
  //#region src/run.d.ts
2378
2666
  /** A cell result is a cell with its manifests, its runs, their measurements and its verdict. */
@@ -2422,5 +2710,5 @@ export declare const spread: (runs: number, environments: number) => number[];
2422
2710
  */
2423
2711
  export declare const runCell: (cell: Cell, say?: (line: string) => void) => Promise<CellResult>;
2424
2712
  //#endregion
2425
- export { type Agent, type BuildImage, type BuildRecord, type CallReading, type Cell, type CellResult, type Client, type ClientImage, type ClockPair, type Cloud, type Cluster, type ClusterClientAt, type ClusterLab, type ClusterStage, 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 HttpProbe, type ImagePlan, type ImageSource, type Interval, type Jitter, type Kafka, type KafkaLab, type KernelRecord, type Lab, type Layer, type LeafViews, type LineCount, type LineMatch, 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 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 RunPart, type RunRoute, type RunTopology, type SentinelEvent, type SentinelStage, type Shipped, type ShippedImage, type Sibling, type SocketPlace, type Spread, type Stage, type StageBand, type StageVerdict, 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 };
2426
2714
  //# sourceMappingURL=index.d.ts.map