• V1.0.8 5e1e4a6a8f

    etwen released this 2026-08-26 10:13:34 +08:00 | 29 commits to main since this release

    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:

    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

    Full changelog: V1.0.7...V1.0.8

    Downloads