@mark1russell7/kind 0.14.0 → 0.14.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.
@@ -736,6 +736,12 @@ interface KindCell<A = Quantity> {
736
736
  * send messages to one topic and look up its owner. Without it, the cell has no broker.
737
737
  */
738
738
  readonly pulsar?: PulsarSettings | undefined;
739
+ /**
740
+ * This count is the CPUs, 1 or less, that a process outside the cluster keeps busy before each run
741
+ * (SYS-95). The load starts after the baseline of the environment. Thus this cell tests that the
742
+ * quiet gate refuses a loaded VM, and each of its runs is void when the gate holds.
743
+ */
744
+ readonly plannedLoad?: number | undefined;
739
745
  }
740
746
  /** These are the settings of the broker of a cell (`KindCell.pulsar`). */
741
747
  interface PulsarSettings {
@@ -1322,12 +1328,17 @@ declare const judgeKind: (cell: KindCell, runs: readonly KindRun[]) => KindVerdi
1322
1328
  declare const FORMAT = "systems.kind-cell-record/2";
1323
1329
  /** This format is the first format. Its bands, its medians and its times are numbers. */
1324
1330
  declare const FORMAT_V1 = "systems.kind-cell-record/1";
1325
- /** A load sample is what the VM did in 4 s before a run: when (a stamp of the wall clock in milliseconds), its idle share, and its busiest processes. */
1331
+ /**
1332
+ * A load sample is what the VM did in 4 s before a run: when (a stamp of the wall clock in
1333
+ * milliseconds), its idle share, and its busiest processes. A sample of the gate has `needed`, the
1334
+ * idle share of the gate at that time. A baseline sample has no `needed`.
1335
+ */
1326
1336
  interface LoadSample {
1327
1337
  readonly t: number;
1328
1338
  readonly idle: number;
1329
1339
  readonly top: readonly string[];
1330
1340
  readonly foreign: readonly string[];
1341
+ readonly needed?: number | undefined;
1331
1342
  }
1332
1343
  /** A cluster manifest is what a run records about its cluster: the versions, the images, the nodes and the mode as read back. */
1333
1344
  interface ClusterManifest {
@@ -1572,4 +1583,4 @@ declare const judgeReconnects: (prediction: ReconnectsPrediction, run: {
1572
1583
  }, noise: number) => Reconnects;
1573
1584
  //#endregion
1574
1585
  export { factsOf as $, DATAPLANES as $n, transitionOf as $t, KindCellResult as A, KubeletProbe as An, failuresOf as At, upgradeCell as B, ReconnectsPrediction as Bn, restartOf as Bt, BandV1 as C, Band as Cn, ZtunnelPodLine as Ct, FORMAT_V1 as D, Flap as Dn, deletionOf as Dt, FORMAT as E, EdgeProtocol as En, byNode as Et, RunCheckV1 as F, NonePrediction as Fn, periodOf as Ft, LAST_SLACK as G, Stack as Gn, signalsOf as Gt, KIND_NOISE as H, Reference as Hn, rulesOf as Ht, RunFactsV1 as I, PermittedWindow as In, podsAt as It, RunCheck as J, TriggerKind as Jn, sliceReadyAt as Jt, Propagated as K, Template as Kn, sliceDropOf as Kt, TriggerV1 as L, PodSettings as Ln, podsOf as Lt, KindVerdictV1 as M, Mesh as Mn, isTunnelState as Mt, LoadSample as N, MeshFlavor as Nn, kernelCounts as Nt, KindCellRecord as O, KindCell as On, dropOf as Ot, PredictionV1 as P, MeshMode as Pn, outcomesOf as Pt, deletionsOf as Q, Workload as Qn, stoppingOf as Qt, judge as R, Prediction as Rn, recordsOf as Rt, timeSpread as S, Backoff as Sn, TunnelLine as St, EnvironmentManifest as T, Declaration as Tn, byClients as Tt, KindDecision as U, Replica as Un, sessionsAt as Ut, Deleted as V, RedisDeclaration as Vn, restartsAt as Vt, KindVerdict as W, ResetReuse as Wn, signalOf as Wt, checkRun as X, VipSettings as Xn, slicesOf as Xt, RunFacts as Y, VipAnnouncerName as Yn, sliceReadyOf as Yt, cyclesOf as Z, WindowPrediction as Zn, socketsOf as Zt, TimeSpread as _, requestBand as _n, scenario as _r, RulesLine as _t, judgeReconnects as a, LB_CLASS as an, NODE_IMAGES as ar, referenceOf as at, medianText as b, showBand as bn, SocketLine as bt, RELATIVE as c, PORT as cn, ZONE_LABEL as cr, updatesOf as ct, quantileOf as d, VIP_ANNOTATION as dn, cidrRange as dr, Line as dt, tunnelsOf as en, Dataplane as er, judgeKind as et, STAGES as f, CountBand as fn, goDuration as fr, Period as ft, Judged as g, overshootBand as gn, nodeNames as gr, Request as gt, readRecord as h, drainBand as hn, kubeProxyPatch as hr, RecordLine as ht, Try as i, HEALTH_PORT as in, KubeProxyMode as ir, propagationSource as it, KindCellV1 as j, MemberlistSettings as jn, intakeOf as jt, KindCellRecordV1 as k, KindRun as kn, emptyOf as kt, medianInterval as l, REDIS as ln, ZONE_LOST as lr, Endpoint as lt, kindCellRecordV1Schema as m, bandOf as mn, kindConfig as mr, PropagationSource as mt, Return as n, ztunnelReplaced as nn, KindConfig as nr, observationEnd as nt, latestReturn as o, LOG_LABEL as on, NodeImage as or, reusesReset as ot, kindCellRecordSchema as p, backlogEnd as pn, isKubeProxyMode as pr, PodLine as pt, ReconnectsFacts as q, Trigger as qn, sliceEmptyOf as qt, Schedule as r, CLIENT as rn, KindScenario as rr, propagationOf as rt, triesOf as s, OUTSIDE as sn, ZONE_KEPT as sr, unitOf as st, Reconnects as t, ztunnelPodsOf as tn, KUBE_PROXY_MODES as tr, observationAfter as tt, middle as u, SERVER as un, cidrOverlap as ur, HBONE_PORT as ut, calibrationOf as v, seconds as vn, scenarioProblems as vr, Sessions as vt, ClusterManifest as w, Cycle as wn, backendsAt as wt, predictionText as x, BacklogTerm as xn, TCP_STATE as xt, cellsTable as y, secondsOf as yn, zoneOf as yr, SliceLine as yt, upgrade as z, PulsarSettings as zn, requestsOf as zt };
1575
- //# sourceMappingURL=judge-Cp3MzMk1.d.ts.map
1586
+ //# sourceMappingURL=judge-DLn2PLxb.d.ts.map
@@ -1985,6 +1985,32 @@ const run = z.object({
1985
1985
  dropped: z.record(z.string(), count),
1986
1986
  notes: z.array(z.string()).optional()
1987
1987
  });
1988
+ /**
1989
+ * This schema accepts the substrate of a record (`Substrate` of the harness). The entry ./judge loads
1990
+ * no module of the harness, thus the schema is here. Its test holds it to the layers and the clouds of
1991
+ * the harness.
1992
+ */
1993
+ const substrateSchema = z.object({
1994
+ layer: z.enum([
1995
+ "E0",
1996
+ "E1",
1997
+ "E2",
1998
+ "E3",
1999
+ "E4",
2000
+ "E5",
2001
+ "E6"
2002
+ ]),
2003
+ cloud: z.enum([
2004
+ "azure",
2005
+ "aws",
2006
+ "unknown"
2007
+ ]),
2008
+ vendor: z.string().nullable(),
2009
+ kernel: z.string().nullable(),
2010
+ hz: z.number().nullable(),
2011
+ kvm: z.boolean().nullable(),
2012
+ image: z.string().nullable()
2013
+ });
1988
2014
  const manifest = z.object({
1989
2015
  env: count,
1990
2016
  scenario: z.object({
@@ -1999,10 +2025,12 @@ const manifest = z.object({
1999
2025
  }).nullable(),
2000
2026
  cni: z.enum(["kindnet", "cilium"]),
2001
2027
  podSubnet: z.string(),
2002
- serviceSubnet: z.string()
2003
- }).transform(({ dataplane, ...rest }) => ({
2028
+ serviceSubnet: z.string(),
2029
+ zoned: z.boolean().optional()
2030
+ }).transform(({ dataplane, zoned, ...rest }) => ({
2004
2031
  ...rest,
2005
- dataplane: dataplane ?? rest.kubeProxy?.mode ?? "cilium"
2032
+ dataplane: dataplane ?? rest.kubeProxy?.mode ?? "cilium",
2033
+ ...zoned === true ? { zoned } : {}
2006
2034
  })),
2007
2035
  cluster: z.object({
2008
2036
  kind: z.string(),
@@ -2018,13 +2046,18 @@ const manifest = z.object({
2018
2046
  os: z.string()
2019
2047
  }))
2020
2048
  }),
2021
- images: z.record(z.string(), z.string())
2049
+ images: z.record(z.string(), z.string()),
2050
+ substrate: substrateSchema.optional()
2051
+ }).transform(({ substrate, ...rest }) => substrate === void 0 ? rest : {
2052
+ ...rest,
2053
+ substrate
2022
2054
  });
2023
2055
  const load = z.object({
2024
2056
  t: z.number(),
2025
2057
  idle: z.number(),
2026
2058
  top: z.array(z.string()),
2027
- foreign: z.array(z.string())
2059
+ foreign: z.array(z.string()),
2060
+ needed: z.number().optional()
2028
2061
  });
2029
2062
  /**
2030
2063
  * This function gives the schema of a record whose amounts have one form. The schema `a` is for a
@@ -2213,7 +2246,8 @@ const recordOf = (a, main) => {
2213
2246
  pulsar: z.object({
2214
2247
  clients: count,
2215
2248
  probe: time
2216
- }).optional()
2249
+ }).optional(),
2250
+ plannedLoad: z.number().optional()
2217
2251
  });
2218
2252
  const facts = z.object({
2219
2253
  failures: count,
@@ -2342,4 +2376,4 @@ const readRecord = (data) => {
2342
2376
  //#endregion
2343
2377
  export { rulesOf as $, judgeReconnects as A, overshootBand as At, emptyOf as B, observationEnd as C, PORT as Ct, reusesReset as D, backlogEnd as Dt, referenceOf as E, VIP_ANNOTATION as Et, backendsAt as F, outcomesOf as G, intakeOf as H, byClients as I, podsOf as J, periodOf as K, byNode as L, triesOf as M, seconds as Mt, HBONE_PORT as N, secondsOf as Nt, unitOf as O, bandOf as Ot, TCP_STATE as P, showBand as Pt, restartsAt as Q, deletionOf as R, observationAfter as S, OUTSIDE as St, propagationSource as T, SERVER as Tt, isTunnelState as U, failuresOf as V, kernelCounts as W, requestsOf as X, recordsOf as Y, restartOf as Z, checkRun as _, quantileOf as _t, calibrationOf as a, sliceReadyAt as at, factsOf as b, LB_CLASS as bt, predictionText as c, socketsOf as ct, FORMAT_V1 as d, tunnelsOf as dt, sessionsAt as et, judge as f, ztunnelPodsOf as ft, LAST_SLACK as g, middle as gt, KIND_NOISE as h, medianInterval$1 as ht, readRecord as i, sliceEmptyOf as it, latestReturn as j, requestBand as jt, updatesOf as k, drainBand as kt, timeSpread as l, stoppingOf as lt, upgradeCell as m, RELATIVE as mt, kindCellRecordSchema as n, signalsOf as nt, cellsTable as o, sliceReadyOf as ot, upgrade as p, ztunnelReplaced as pt, podsAt as q, kindCellRecordV1Schema as r, sliceDropOf as rt, medianText as s, slicesOf as st, STAGES as t, signalOf as tt, FORMAT as u, transitionOf as ut, cyclesOf as v, CLIENT as vt, propagationOf as w, REDIS as wt, judgeKind as x, LOG_LABEL as xt, deletionsOf as y, HEALTH_PORT as yt, dropOf as z };
2344
2378
 
2345
- //# sourceMappingURL=judge-C6XgY2Pk.js.map
2379
+ //# sourceMappingURL=judge-DjtNaAVO.js.map