Script A: the baseline ping window is 30 s rather than 45, and the log is cleared afterwards so Script B starts from nothing. Script B: `status` after `start`, and Script C: `status` before `stop` plus a `cat` of the report. The status line shows both pids and the replies received per NIC, so a dead link is visible while the soak is still running instead of only at the end. docs/release-notes/v1.0.8.md written in the house format. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
5.2 KiB
5.2 KiB
v1.0.8 — Both management links tested at once, and ARP stops looking like packet loss
✨ New features
Both management NICs are pinged simultaneously and continuously
mgmt_ping_monitor.shno longer alternates fixed bursts.startconfigures both NICs, then pings from each at the same time and keeps accumulating until stopped — so a soak-long run is one continuous measurement rather than a series of snapshots.stoprenders a report into the log: the last 20 entries per NIC, each one's ping statistics and PASS/FAIL, thenip -s link showfor both interfaces.- Every line is timestamped, and a request that got no reply prints a marker instead of merely being absent — a drop is visible in the tail, not inferred from a gap in the sequence numbers.
statusshows both pids and how many replies each NIC has received so far, which is the quick way to see one side is dead without waiting for the report.
The USB stress target is detected, not assumed
- New
usb_target.shreports an inserted USB device's node, mount point or by-id path. Script B asks it for the node and builds the stress command from the answer, so a stick that enumerates assdbno longer sends a write test at whatever/dev/sda1happens to be. - It excludes whatever disk backs
/and/host— this platform can boot from a USB DOM, which also reports as USB — refuses to guess when several USB disks are present, and when it mounts, verifies the result is actually writable rather than trusting thatmountsucceeded.
BMC I2C integrity is exercised through the soak
bmc_monitor.shis back in the run and now writes two complementary patterns to a BMC scratch register and reads each back. One pattern alone cannot catch a bit stuck the same way it was written; repeating the pair through the soak turns an intermittent I2C fault into something the log records rather than something the tester has to witness.
Test artefacts leave the DUT with the run
- Script C copies
bmc_poll.logandmgmt_ping.loginto the job directory before it is archived to USB, so the monitors' output travels with thebgctljob logs. - DDR stress now runs continuously instead of stopping after 100 passes, matching the other soak loads.
🐛 Bug fixes
Three FAILs that were not link faults
- A bench run reported
FAIL=3with zero NIC errors, zero drops and sub-millisecond replies. Every failure was missing exactlyicmp_seq=1and nothing else: once the neighbour entry for the target expires, the first echo request is spent resolving ARP andpingcounts it as loss. A discarded warm-up ping per NIC now absorbs that, which is what lets the loss threshold stay at zero and still mean something. Raising the threshold instead would have hidden genuine single-packet loss.
Job logs were being cleared before they were collected
- Script C ran
bgctl reset --yeswhile killing processes — before the job directory is copied to USB. Moved to after the archive, so a run's own logs are collected before anything clears them.
The fan controller was bound twice
- One of the two MAX31790 controllers received a second
bindimmediately after the first, which could only fail because the driver was already attached.
📦 Downloads
| File | Contents |
|---|---|
Script_ABC_Blanton_V1.0.8.zip |
The full Tera Term working directory, including Blanton_Script/ to copy onto the DUT |
After copying to the DUT:
chmod +x ~/Blanton_Script/*.sh # see below
grep -rlU $'\r' ~/Blanton_Script # expect no output
mgmt_ping_monitor.sh no longer re-execs itself, so bash mgmt_ping_monitor.sh start works without the execute bit. bmc_monitor.sh and usb_target.sh still need it — and neither git (mode 100644) nor a Windows/USB copy carries it. Without the chmod, start fails with Permission denied and the later cat finds nothing: the section ends up empty and nothing reports an error.
⚠️ Before you run
- Declare the switch population.
SWB_UNIT0/SWB_UNIT1inconfig.ttlsay which switch units this DUT has. Traffic and the readiness gate both follow them; with neither set the traffic stage is skipped rather than failing against hardware that is not there. - Set the fan speed you want.
FAN_SPEEDinconfig.ttlis applied at the start of every run. - Management connectivity is in use, not preserved. Both NICs are up and pinging — drive the run from the serial console.
- If the two management NICs share a subnet, keep
ARP_STRICT=1. Otherwise the target's ARP can be answered by either NIC and a reply may arrive on the one that did not send. Checknic_tx/nic_rxon the RESULT line: they are that interface's own counter delta. - Two settings persist to
config_db.jsonand survive a reboot: LLDP is left disabled and the 100G uplinks are left configured. Restore them before the DUT moves on.
🔗 Links
- ARCHITECTURE.md — test flow, data models, constraints
- CLAUDE.md — commands and the bench gotchas
Full changelog: V1.0.7...V1.0.8