From 5e1e4a6a8fba47bab7b534df7d00f170271255b5 Mon Sep 17 00:00:00 2001 From: ETWen Date: Wed, 26 Aug 2026 10:13:34 +0800 Subject: [PATCH] docs(release): Add v1.0.8 notes; wire mgmt ping status into B and C 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) Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM --- docs/release-notes/v1.0.8.md | 61 +++++++++++++++++++ src/Script_ABC_Blanton/1_Blanton_Script_A.ttl | 7 ++- src/Script_ABC_Blanton/2_Blanton_Script_B.ttl | 3 + src/Script_ABC_Blanton/3_Blanton_Script_C.ttl | 5 +- 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 docs/release-notes/v1.0.8.md diff --git a/docs/release-notes/v1.0.8.md b/docs/release-notes/v1.0.8.md new file mode 100644 index 0000000..69f369a --- /dev/null +++ b/docs/release-notes/v1.0.8.md @@ -0,0 +1,61 @@ +# 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.sh` no longer alternates fixed bursts. `start` configures 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. +* `stop` renders a report into the log: the last 20 entries per NIC, each one's ping statistics and PASS/FAIL, then `ip -s link show` for 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. +* `status` shows 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.sh` reports 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 as `sdb` no longer sends a write test at whatever `/dev/sda1` happens 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 that `mount` succeeded. + +**BMC I2C integrity is exercised through the soak** +* `bmc_monitor.sh` is 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.log` and `mgmt_ping.log` into the job directory before it is archived to USB, so the monitors' output travels with the `bgctl` job 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=3` with zero NIC errors, zero drops and sub-millisecond replies. Every failure was missing exactly `icmp_seq=1` and nothing else: once the neighbour entry for the target expires, the first echo request is spent resolving ARP and `ping` counts 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 --yes` while 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 `bind` immediately 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:** + +```bash +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_UNIT1` in `config.ttl` say 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_SPEED` in `config.ttl` is 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. Check `nic_tx` / `nic_rx` on the RESULT line: they are that interface's own counter delta. +* **Two settings persist to `config_db.json`** and survive a reboot: LLDP is left disabled and the 100G uplinks are left configured. Restore them before the DUT moves on. + +## 🔗 Links + +* [ARCHITECTURE.md](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/ARCHITECTURE.md) — test flow, data models, constraints +* [CLAUDE.md](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/CLAUDE.md) — commands and the bench gotchas + +**Full changelog:** [V1.0.7...V1.0.8](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/compare/V1.0.7...V1.0.8) diff --git a/src/Script_ABC_Blanton/1_Blanton_Script_A.ttl b/src/Script_ABC_Blanton/1_Blanton_Script_A.ttl index 3392895..da154ae 100644 --- a/src/Script_ABC_Blanton/1_Blanton_Script_A.ttl +++ b/src/Script_ABC_Blanton/1_Blanton_Script_A.ttl @@ -55,6 +55,9 @@ ; + ARP warm-up so a stale neighbour entry is not counted as loss ; + stop renders last-N per NIC, stats, and both ip -s link show ; .gitignore Ignore monitor *.raw / *.pid / *.state +; ScriptA MGMT ping baseline 45s -> 30s, clear the log afterwards +; ScriptB Show mgmt_ping status after start +; ScriptC Show mgmt_ping status before stop, cat the report after ; ============================================================================= include "config.ttl" @@ -206,10 +209,12 @@ include "utils/show_dmesg.ttl" wait prompt_sonic_root sendln "./Blanton_Script/mgmt_ping_monitor.sh start" wait prompt_sonic_root -pause 45 +pause 30 sendln "~/Blanton_Script/mgmt_ping_monitor.sh stop" wait prompt_sonic_root sendln "cat ~/Blanton_Script/log/mgmt_ping.log" +wait prompt_sonic_root +sendln "~/Blanton_Script/mgmt_ping_monitor.sh clear" ; ========== 100G Port Status ========== diff --git a/src/Script_ABC_Blanton/2_Blanton_Script_B.ttl b/src/Script_ABC_Blanton/2_Blanton_Script_B.ttl index 808190f..d059897 100644 --- a/src/Script_ABC_Blanton/2_Blanton_Script_B.ttl +++ b/src/Script_ABC_Blanton/2_Blanton_Script_B.ttl @@ -96,6 +96,9 @@ timeout = 0 ; ========== 10G/1G MGMT Ping Test ========== wait prompt_sonic_root sendln "./Blanton_Script/mgmt_ping_monitor.sh start" +wait prompt_sonic_root +pause 3 +sendln "./Blanton_Script/mgmt_ping_monitor.sh status" ; ========== 100G Port ========== diff --git a/src/Script_ABC_Blanton/3_Blanton_Script_C.ttl b/src/Script_ABC_Blanton/3_Blanton_Script_C.ttl index 11a71f5..b620a4d 100644 --- a/src/Script_ABC_Blanton/3_Blanton_Script_C.ttl +++ b/src/Script_ABC_Blanton/3_Blanton_Script_C.ttl @@ -22,8 +22,11 @@ wait prompt_sonic_root sendln "systemctl stop qfx5252-bmc-usb-net-test.service" ; 10G/1G MGMT Test STOP wait prompt_sonic_root +sendln "~/Blanton_Script/mgmt_ping_monitor.sh status" +wait prompt_sonic_root sendln "~/Blanton_Script/mgmt_ping_monitor.sh stop" - +wait prompt_sonic_root +sendln "cat ~/Blanton_Script/log/mgmt_ping.log" ; ========== TAKE DATA ========== include "utils/setup_pmon.ttl"