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) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
This commit is contained in:
@@ -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)
|
||||||
@@ -55,6 +55,9 @@
|
|||||||
; + ARP warm-up so a stale neighbour entry is not counted as loss
|
; + 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
|
; + stop renders last-N per NIC, stats, and both ip -s link show
|
||||||
; .gitignore Ignore monitor *.raw / *.pid / *.state
|
; .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"
|
include "config.ttl"
|
||||||
|
|
||||||
@@ -206,10 +209,12 @@ include "utils/show_dmesg.ttl"
|
|||||||
wait prompt_sonic_root
|
wait prompt_sonic_root
|
||||||
sendln "./Blanton_Script/mgmt_ping_monitor.sh start"
|
sendln "./Blanton_Script/mgmt_ping_monitor.sh start"
|
||||||
wait prompt_sonic_root
|
wait prompt_sonic_root
|
||||||
pause 45
|
pause 30
|
||||||
sendln "~/Blanton_Script/mgmt_ping_monitor.sh stop"
|
sendln "~/Blanton_Script/mgmt_ping_monitor.sh stop"
|
||||||
wait prompt_sonic_root
|
wait prompt_sonic_root
|
||||||
sendln "cat ~/Blanton_Script/log/mgmt_ping.log"
|
sendln "cat ~/Blanton_Script/log/mgmt_ping.log"
|
||||||
|
wait prompt_sonic_root
|
||||||
|
sendln "~/Blanton_Script/mgmt_ping_monitor.sh clear"
|
||||||
|
|
||||||
|
|
||||||
; ========== 100G Port Status ==========
|
; ========== 100G Port Status ==========
|
||||||
|
|||||||
@@ -96,6 +96,9 @@ timeout = 0
|
|||||||
; ========== 10G/1G MGMT Ping Test ==========
|
; ========== 10G/1G MGMT Ping Test ==========
|
||||||
wait prompt_sonic_root
|
wait prompt_sonic_root
|
||||||
sendln "./Blanton_Script/mgmt_ping_monitor.sh start"
|
sendln "./Blanton_Script/mgmt_ping_monitor.sh start"
|
||||||
|
wait prompt_sonic_root
|
||||||
|
pause 3
|
||||||
|
sendln "./Blanton_Script/mgmt_ping_monitor.sh status"
|
||||||
|
|
||||||
|
|
||||||
; ========== 100G Port ==========
|
; ========== 100G Port ==========
|
||||||
|
|||||||
@@ -22,8 +22,11 @@ wait prompt_sonic_root
|
|||||||
sendln "systemctl stop qfx5252-bmc-usb-net-test.service"
|
sendln "systemctl stop qfx5252-bmc-usb-net-test.service"
|
||||||
; 10G/1G MGMT Test STOP
|
; 10G/1G MGMT Test STOP
|
||||||
wait prompt_sonic_root
|
wait prompt_sonic_root
|
||||||
|
sendln "~/Blanton_Script/mgmt_ping_monitor.sh status"
|
||||||
|
wait prompt_sonic_root
|
||||||
sendln "~/Blanton_Script/mgmt_ping_monitor.sh stop"
|
sendln "~/Blanton_Script/mgmt_ping_monitor.sh stop"
|
||||||
|
wait prompt_sonic_root
|
||||||
|
sendln "cat ~/Blanton_Script/log/mgmt_ping.log"
|
||||||
|
|
||||||
; ========== TAKE DATA ==========
|
; ========== TAKE DATA ==========
|
||||||
include "utils/setup_pmon.ttl"
|
include "utils/setup_pmon.ttl"
|
||||||
|
|||||||
Reference in New Issue
Block a user