Script A carried a V1.0.7 history block while its "; Version :" header still read V1.0.6, so publish.sh built Script_ABC_Blanton_V1.0.6 and the folder would have disagreed with the tag. Header and date corrected -- reading the version from the header rather than a flag is what surfaced this. utils/wait_init.ttl V3.1.1: poll interval 10 s -> 60 s, and the WT_MIN comments now say "at least" to match the test, which has been `< WT_MIN` since the threshold was fixed. The stale "more than" wording described exactly the off-by-one that once hung Script A. Script C: the BMC USB journalctl dump is commented out. docs/release-notes/v1.0.7.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.3 KiB
5.3 KiB
v1.0.7 — Management-link ping test, and the fans start where you set them
✨ New features
10G / 1G management port ping test
- New
mgmt_ping_monitor.shexercises both management NICs in one loop: it brings each up with iproute2, waits for the link to settle, then pings that NIC's own target —eth0→192.168.1.30,eth1→192.168.1.31. - Runs detached like the other monitors:
start/stop/status/fg/summary.startclears the previous log, so one run means one log. - Every leg writes a single greppable line —
RESULT 10G eth0 -> 192.168.1.30 tx=10 rx=10 loss=0% rtt_avg=1.743ms nic_tx=10 nic_rx=10 PASS— so a whole soak can be read withsummaryinstead of scrolling. nic_tx/nic_rxare that interface's own counter delta across the burst. If a ping passes but they stay near zero, the traffic left on the other NIC and the number does not belong to this one.- Script A runs one round as a baseline; Script B leaves it running through the soak.
Fan speed is set at the start of every run
FAN_SPEEDinconfig.ttl(default 30) is applied by Script A, so a run no longer inherits whatever the previous test left the fans doing.- Both MAX31790 controllers are rebound first, which clears a controller left in an odd state.
Stress load moved onto the platform's own job runner
- CPU, DDR, SSD and USB stress now go through
bgctl, replacing the~/hammer/tools/stress_*.pyscripts.bgctl listshows what is running; Script C stops everything withbgctl stop --all. - BMC DDR stress runs through
bmc-manager, and a new BMC USB test discovers thecdc_ncminterface and pings across it for four hours undersystemd-run.
More of the DUT on record
- Script A now captures the boot image,
show version, firmware status, system EEPROM, SSD health, TPM version and NVMe SMART data before the test starts. - PCIe AER now sits next to
ras-mc-ctl --summary, and Script C closes with NVMe health so a disk that degraded during the soak is visible. dmesgcapture uses human-readable timestamps and one combined error pattern, then clears the ring buffer — so Script C's dmesg shows only what the soak produced, not everything since boot.- Each run opens with
hw-test-session startand closes withfinish; Script C copies the job logs to/mnt/usb/jobs-<date>_<time>so they leave the DUT with the run they belong to.
🐛 Bug fixes
Script A no longer hangs waiting for ports that are already up
- The readiness gate required more than 216 ports up, but a fully cabled unit reports exactly 216 — 108 loopback pairs times two. Script A sat in the poll loop forever on the very state it was waiting for. It now proceeds at 216.
- The comments in
wait_init.ttlstill described the old "more than" rule; they now match the code, so the off-by-one cannot be reintroduced by reading the wrong line.
The macro no longer runs ahead of the DUT during the soak
- Script B set a 15-second wait cap for the
cdc_ncmprobe and never restored it. In Tera Term that cap is global, so it stayed in force for everything after — including the traffic setup, which walks 108 VLANs per switch unit and takes far longer. A timed-out wait returns without the prompt, leaving every later command issued a step early.
Fan controller is no longer 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.7.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 # required -- see below
grep -rlU $'\r' ~/Blanton_Script # expect no output
The chmod +x is not optional. mgmt_ping_monitor.sh is executed rather than sourced and re-execs its own path to daemonise, and neither git (mode 100644) nor a Windows/USB copy carries the execute bit. Without it 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: a single unit gets-u 0or-u 1, and with neither set the traffic stage is skipped instead of failing against hardware that is not there. - Both management NICs stay up. If they 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. - Management connectivity is exercised, not preserved. Drive the run from the serial console.
- 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.5...V1.0.7