fix(lab): assert-command output on failure + pin shaper iface selection #257

Merged
vxfemboy merged 1 commit from fix/lab-assert-stderr-and-shaper-iface into main 2026-08-03 01:24:43 +00:00
Owner

Two lab-robustness follow-ups from the container-netns gate fixes (#254 deception, #256 trafficgen).

1. Assert failures now show the command's own output. The self-diagnosing log dump (#251) captured run-node logs but not an assert command's stderr/stdout — so the trafficgen failure showed only # exit 1 != 0 and the sink's log, never the send command's own generator fidelity: … pps reason. A failing assert now folds the command's stderr (then stdout, last 20 lines each) into its TAP # reason as comment-continuation lines, matching the diagnostic a failing wait already gets. Unit-tested (with_cmd_output): appends both streams as # … lines; passes-through a Pass or an empty-output failure unchanged.

2. Third copy of the iface bug, pinned. blackwall-shaper/tests/interop.rs had the same ip link show first-non-lo heuristic as the deception (#254) and trafficgen (#256) drivers. It was latent — shaper-cake (gate 4) passed in CI — but fragile in the container netns, so it now selects the veth by its IPv4 like the other two. All three lab drivers now share the robust selection.

Verified. shaper-cake passes locally; cargo test -p blackwall-lab (incl. the 2 new tests) green; clippy --deny warnings + fmt clean.

Two lab-robustness follow-ups from the container-netns gate fixes (#254 deception, #256 trafficgen). **1. Assert failures now show the command's own output.** The self-diagnosing log dump (#251) captured *run-node* logs but not an *assert* command's stderr/stdout — so the trafficgen failure showed only `# exit 1 != 0` and the sink's log, never the `send` command's own `generator fidelity: … pps` reason. A failing `assert` now folds the command's stderr (then stdout, last 20 lines each) into its TAP `#` reason as comment-continuation lines, matching the diagnostic a failing `wait` already gets. Unit-tested (`with_cmd_output`): appends both streams as `# …` lines; passes-through a `Pass` or an empty-output failure unchanged. **2. Third copy of the iface bug, pinned.** `blackwall-shaper/tests/interop.rs` had the same `ip link show` first-non-`lo` heuristic as the deception (#254) and trafficgen (#256) drivers. It was latent — shaper-cake (gate 4) passed in CI — but fragile in the container netns, so it now selects the veth by its IPv4 like the other two. All three lab drivers now share the robust selection. **Verified.** `shaper-cake` passes locally; `cargo test -p blackwall-lab` (incl. the 2 new tests) green; clippy `--deny warnings` + fmt clean.
fix(lab): show assert-command output on failure; pin shaper iface select
Some checks failed
CI / check (pull_request) Successful in 11m47s
CI / lab (pull_request) Failing after 11m36s
98f2b1dec7
Two lab-robustness follow-ups from the deception-nft/trafficgen container
gate fixes:

- The failure log dump (added for self-diagnosing gates) captured run-node
  logs but not an *assert* command's own output, so a failing `assert`
  showed only the matcher mismatch (`exit 1 != 0`) and not why the command
  failed. A failing assert now folds the command's stderr (then stdout, last
  20 lines each) into its TAP `#` reason.
- blackwall-shaper's interop driver had the same first-non-lo iface heuristic
  as the deception (#254) and trafficgen (#256) drivers — latent (shaper-cake
  passed in CI) but fragile in the container netns. It now selects the veth by
  its IPv4 too, so all three lab drivers share the robust selection.
vxfemboy deleted branch fix/lab-assert-stderr-and-shaper-iface 2026-08-03 01:24:43 +00:00
Sign in to join this conversation.
No description provided.