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.
83 lines
2.0 KiB
YAML
83 lines
2.0 KiB
YAML
# Mixed transport mesh: 6 nodes, UDP + Ethernet edges
|
|
#
|
|
# Exercises both transports in a single mesh. UDP edges use static
|
|
# peer config; Ethernet edges use beacon discovery. Tests that the
|
|
# spanning tree converges across heterogeneous transports with netem
|
|
# and link flaps active.
|
|
#
|
|
# Topology:
|
|
#
|
|
# n01 ---udp--- n02 ---udp--- n03
|
|
# | | |
|
|
# eth eth udp
|
|
# | | |
|
|
# n04 ---eth--- n05 ---udp--- n06
|
|
#
|
|
# UDP edges: n01-n02, n02-n03, n03-n06, n05-n06
|
|
# Ethernet edges: n01-n04, n02-n05, n04-n05
|
|
|
|
scenario:
|
|
name: "ethernet-mesh"
|
|
seed: 42
|
|
duration_secs: 120
|
|
|
|
topology:
|
|
algorithm: explicit
|
|
num_nodes: 6
|
|
params:
|
|
adjacency:
|
|
- [n01, n02, udp]
|
|
- [n02, n03, udp]
|
|
- [n03, n06, udp]
|
|
- [n05, n06, udp]
|
|
- [n01, n04, ethernet]
|
|
- [n02, n05, ethernet]
|
|
- [n04, n05, ethernet]
|
|
|
|
netem:
|
|
enabled: true
|
|
default_policy:
|
|
delay_ms: [1, 10]
|
|
jitter_ms: [0, 2]
|
|
loss_pct: [0, 1]
|
|
mutation:
|
|
interval_secs: {min: 20, max: 40}
|
|
fraction: 0.3
|
|
policies:
|
|
normal:
|
|
delay_ms: [1, 10]
|
|
loss_pct: [0, 1]
|
|
degraded:
|
|
delay_ms: [30, 80]
|
|
jitter_ms: [5, 20]
|
|
loss_pct: [3, 8]
|
|
|
|
link_flaps:
|
|
enabled: true
|
|
interval_secs: {min: 20, max: 40}
|
|
max_down_links: 1
|
|
down_duration_secs: {min: 10, max: 20}
|
|
protect_connectivity: true
|
|
|
|
traffic:
|
|
enabled: false
|
|
|
|
# Baseline: the mesh came up, agreed on a root, and took parents. This
|
|
# asserts nothing about Ethernet link behaviour under flaps; 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.
|
|
#
|
|
# Six nodes, one root, five parented in all six provably-completed
|
|
# archived runs. The other assertion covering Ethernet transport in
|
|
# CI; see ethernet-only for why that matters.
|
|
assertions:
|
|
baseline:
|
|
min_nodes_reporting: 6
|
|
max_roots: 1
|
|
min_nodes_parented: 5
|
|
|
|
logging:
|
|
rust_log: "info"
|
|
output_dir: "./sim-results"
|