mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-30 19:46:15 +00:00
Five scenarios named by the audit carried no assertions at all, so a run in which the mesh never formed exited 0 and reported green. Add a baseline assertion covering how many nodes answered, how many distinct roots they agreed on, how many took a parent, and optionally how many sessions were established, and apply it to those five plus the two cost scenarios left unasserted by the previous commit. For ethernet-only, ethernet-mesh, tcp-mesh, smoke-10, mixed-technology and depth-vs-cost the values are not calibrated: one root and N-1 parented nodes is what a spanning tree is, and all provably-completed archived runs of each show exactly that. churn-mixed is different and says so at the site. A scenario that stops and starts nodes on purpose does not hold a single tree, and its six completed runs end with two or three roots and seven or eight of ten nodes parented, so its floors sit one step outside the observed range. That leaves them catching a mesh that collapsed rather than one that churned, which is the most a sample of six supports. This gives Ethernet transport its only assertion anywhere in CI. The three tests in src/node/tests/ethernet.rs are ignored for requiring CAP_NET_RAW and neither runner passes --ignored, so until now nothing exercised that transport with a verdict attached. The floor is deliberately weak and deliberately not a substitute: it says the mesh formed, not that it formed the tree the scenario describes. Where those differ the scenario now says so in its own comments.
66 lines
1.6 KiB
YAML
66 lines
1.6 KiB
YAML
# Ethernet-only: 4-node ring, all Ethernet transport
|
|
#
|
|
# All links use raw Ethernet (AF_PACKET) over veth pairs. Nodes
|
|
# discover each other via beacons (no static peer config). Tests
|
|
# that Ethernet transport and beacon discovery work end-to-end.
|
|
#
|
|
# Topology:
|
|
#
|
|
# n01 ---eth--- n02
|
|
# | |
|
|
# eth eth
|
|
# | |
|
|
# n04 ---eth--- n03
|
|
|
|
scenario:
|
|
name: "ethernet-only"
|
|
seed: 42
|
|
duration_secs: 30
|
|
|
|
topology:
|
|
algorithm: explicit
|
|
num_nodes: 4
|
|
default_transport: ethernet
|
|
params:
|
|
adjacency:
|
|
- [n01, n02]
|
|
- [n02, n03]
|
|
- [n03, n04]
|
|
- [n04, n01]
|
|
|
|
netem:
|
|
enabled: true
|
|
default_policy:
|
|
delay_ms: [1, 5]
|
|
jitter_ms: [0, 1]
|
|
loss_pct: [0, 0.5]
|
|
|
|
link_flaps:
|
|
enabled: false
|
|
|
|
traffic:
|
|
enabled: false
|
|
|
|
# Baseline: the mesh came up, agreed on a root, and took parents. This
|
|
# asserts nothing about what Ethernet transport does; it exists so that
|
|
# a run in which the mesh never formed cannot report success, which
|
|
# until now it could, because this scenario carried no assertions at
|
|
# all.
|
|
#
|
|
# A 4-node mesh forms a spanning tree: one root and three nodes
|
|
# with a parent. All six provably-completed archived runs show exactly
|
|
# that, so these are the shape of a converged mesh rather than a
|
|
# tolerance fitted to observations. This is currently the only
|
|
# assertion covering Ethernet transport anywhere in CI: the three
|
|
# tests in src/node/tests/ethernet.rs are #[ignore]d for requiring
|
|
# CAP_NET_RAW and neither runner passes --ignored.
|
|
assertions:
|
|
baseline:
|
|
min_nodes_reporting: 4
|
|
max_roots: 1
|
|
min_nodes_parented: 3
|
|
|
|
logging:
|
|
rust_log: "info"
|
|
output_dir: "./sim-results"
|