feat(ttl): Wait on the DUT with sleep, and gate the DSC scan on EN_TX_FIR

Every 'pause N' in Scripts A, B and C is now 'sendln "sleep N"' followed
by 'wait prompt_sonic_root'.

pause stops the macro for N seconds without touching the DUT: the shell
sits idle and the macro is guessing how long the previous command needed.
On a loaded DUT the guess runs short, the next command goes out before
the previous one has finished, and the whole run ends up a beat ahead of
the switch. Putting the wait on the DUT means the macro resumes when the
prompt actually returns, so the two cannot drift apart - and the wait
lands in the console log with a timestamp, so a round that ran long is
visible afterwards.

Durations changed with it: the management-ping sample in Script A is 15 s
(was 30) and the settle after each traffic 'clear' is 5 s (was 15). The
traffic run stays 15 s and Script B's monitor loop stays 60 s. Script 4
and Script 5 were not converted; the 'pause 1' at the top of B and C
stays, since it runs before there is a prompt to wait for.

EN_TX_FIR gates the DSC scan in Script A and Script C, and the four cp
lines that carry blanton_dsc_Script{A,C}_u{0,1}.log out with the job
logs. It defaults to 0: a full scan is ~10 min and both scripts do one,
so leaving it off keeps ~20 min out of a routine run.

Script C also stops printing bmc_poll.log and mlucas_amm_log to the
console. Both are still copied to /host/hw-eval/jobs and out to the USB
stick, so nothing is lost - the master log is just shorter.

Script A's header goes to V1.2.0 and its Version History covers all of
the above.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
This commit is contained in:
2026-09-07 10:02:42 +08:00
co-authored by Claude Opus 5
parent 79a3604ac4
commit d73b119dc3
4 changed files with 104 additions and 33 deletions
+68 -8
View File
@@ -1,6 +1,6 @@
; =============================================================================
; Script A for Blanton
; Version : V1.1.9
; Version : V1.2.0
; Date : 2026-09-07
; Author : ETWen
; =============================================================================
@@ -484,6 +484,57 @@
; bmc_monitor.sh and friends in the chmod +x line after
; deployment. Without it both scans fail with Permission
; denied and the macro walks straight past it
; V1.2.0 2026-09-07
; Blanton_Script/bcm_dsc_scan.sh v1.3.0 bcmcmd was eating the port list
; The scan loop read the port file on stdin, and bcmcmd
; reads stdin too, so the first call swallowed the rest of
; the file and the loop ended after ONE port
; Nothing looked wrong: the log held one PORT marker and
; one dsc block, markers == dumps, exit code 0. A 445 port
; scan finished in seconds and reported success
; Fixed by reading the loop on fd 3 (done 3< "$PORTFILE")
; and giving bcmcmd < /dev/null
; Added a check that the iteration count equals the port
; list count. The marker / dump comparison cannot catch a
; loop that ends early, because both numbers shrink
; together; the Saved: line now reports dumps out of TOTAL,
; not out of markers
; !! this is the same bcmcmd trap
; blanton_traffic_linespeed.sh hit at v0.3.1, where only
; the first VLAN was configured. Every while ... done <
; file loop that calls bcmcmd needs < /dev/null - assume
; it will read stdin unless proven otherwise
; ScriptA / ScriptB / ScriptC Wait on the DUT with 'sleep', not on the macro with 'pause'
; pause N stops the macro for N seconds without touching
; the DUT: the shell sits idle and the macro is guessing
; how long the last command took. sendln "sleep N" + wait
; prompt_sonic_root moves the wait onto the DUT, so the
; macro resumes when the prompt actually comes back and the
; two cannot drift apart
; It also lands in the console log with a timestamp, so a
; round that ran long is visible afterwards instead of
; invisible
; Durations changed with it: ScriptA mgmt ping 30 -> 15 s;
; the settle after every traffic 'clear' 15 -> 5 s; the
; traffic run itself stays 15 s; ScriptB's monitor loop
; stays 60 s
; !! Script4 and Script5 were NOT converted and still use
; pause. The 'pause 1' at the top of ScriptB / ScriptC
; also stays - it only spaces the log header and runs
; before there is a prompt to wait for
; config.ttl Add EN_TX_FIR to gate the SerDes DSC scan
; EN_TX_FIR = 1 enables bcm_dsc_scan.sh in ScriptA and
; ScriptC, and the four cp lines that carry
; blanton_dsc_Script{A,C}_u{0,1}.log to /host/hw-eval/jobs.
; Default is 0
; A full scan is ~10 min and both scripts do one, so
; leaving it off keeps ~20 min out of a routine run. Turn
; it on when the SerDes data is what you are after
; ScriptC Stop printing the BMC poll and mlucas logs to the console
; cat bmc_poll.log and cat mlucas_amm_log are commented
; out. Both files are still copied to /host/hw-eval/jobs
; and out to the USB stick with everything else, so no data
; is lost - the master log is just shorter
; =============================================================================
include "config.ttl"
@@ -649,7 +700,8 @@ include "utils/show_dmesg.ttl"
wait prompt_sonic_root
sendln "./Blanton_Script/mgmt_ping_monitor.sh start"
wait prompt_sonic_root
pause 30
sendln "sleep 15"
wait prompt_sonic_root
sendln "~/Blanton_Script/mgmt_ping_monitor.sh stop"
wait prompt_sonic_root
sendln "cat ~/Blanton_Script/log/mgmt_ping.log"
@@ -700,12 +752,14 @@ if SWB_UNIT0 = 1 && SWB_UNIT1 = 1 then
wait prompt_sonic_root
sendln "blanton_traffic_linespeed clear"
wait prompt_sonic_root
pause 15
sendln "sleep 5"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed show"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed start"
wait prompt_sonic_root
pause 15
sendln "sleep 15"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed stop"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed report"
@@ -717,12 +771,14 @@ elseif SWB_UNIT0 = 1 && SWB_UNIT1 = 0 then
wait prompt_sonic_root
sendln "blanton_traffic_linespeed clear -u 0"
wait prompt_sonic_root
pause 15
sendln "sleep 5"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed show -u 0"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed start -u 0"
wait prompt_sonic_root
pause 15
sendln "sleep 15"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed stop -u 0"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed report -u 0"
@@ -734,12 +790,14 @@ elseif SWB_UNIT0 = 0 && SWB_UNIT1 = 1 then
wait prompt_sonic_root
sendln "blanton_traffic_linespeed clear -u 1"
wait prompt_sonic_root
pause 15
sendln "sleep 5"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed show -u 1"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed start -u 1"
wait prompt_sonic_root
pause 15
sendln "sleep 15"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed stop -u 1"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed report -u 1"
@@ -747,9 +805,11 @@ else
endif
if EN_TX_FIR = 1 then
; ========== Collect bcm dsc data ==========
wait prompt_sonic_root
sendln "./Blanton_Script/bcm_dsc_scan.sh -f blanton_dsc_ScriptA.log -F"
endif
; ========== Show Power on uptime ==========
wait prompt_sonic_root
+11 -6
View File
@@ -109,7 +109,8 @@ timeout = 0
wait prompt_sonic_root
sendln "./Blanton_Script/mgmt_ping_monitor.sh start"
wait prompt_sonic_root
pause 3
sendln "sleep 3"
wait prompt_sonic_root
sendln "./Blanton_Script/mgmt_ping_monitor.sh status"
; ========== NFC Test ==========
@@ -139,7 +140,8 @@ if SWB_UNIT0 = 1 && SWB_UNIT1 = 1 then
wait prompt_sonic_root
sendln "blanton_traffic_linespeed clear"
wait prompt_sonic_root
pause 15
sendln "sleep 5"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed show"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed start"
@@ -151,7 +153,8 @@ elseif SWB_UNIT0 = 1 && SWB_UNIT1 = 0 then
wait prompt_sonic_root
sendln "blanton_traffic_linespeed clear -u 0"
wait prompt_sonic_root
pause 15
sendln "sleep 5"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed show -u 0"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed start -u 0"
@@ -163,7 +166,8 @@ elseif SWB_UNIT0 = 0 && SWB_UNIT1 = 1 then
wait prompt_sonic_root
sendln "blanton_traffic_linespeed clear -u 1"
wait prompt_sonic_root
pause 15
sendln "sleep 5"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed show -u 1"
wait prompt_sonic_root
sendln "blanton_traffic_linespeed start -u 1"
@@ -173,7 +177,7 @@ endif
; ========== Monitor loop: platform data + background jobs (pause 60s per round) ==========
; ========== Monitor loop: platform data + background jobs (sleep 60s per round) ==========
while 1
include "utils/setup_pmon.ttl"
wait prompt_sonic_root
@@ -182,5 +186,6 @@ while 1
sendln "jobs"
wait prompt_sonic_root
sendln "systemctl is-active mlucas-amm"
pause 60
wait prompt_sonic_root
sendln "sleep 60"
endwhile
@@ -53,8 +53,8 @@ sendln "/usr/sbin/ras-mc-ctl --summary"
; ========== BMC Monitor TAKE DATA ==========
wait prompt_sonic_root
sendln "./Blanton_Script/bmc_monitor.sh stop"
wait prompt_sonic_root
sendln "cat ./Blanton_Script/log/bmc_poll.log"
; wait prompt_sonic_root
; sendln "cat ./Blanton_Script/log/bmc_poll.log"
; ========== BMC USB Test result ==========
wait prompt_sonic_root
@@ -64,8 +64,8 @@ sendln "journalctl -u qfx5252-bmc-usb-net-test.service --no-pager -o short-iso >
; ========== CHECK Stress results ==========
wait prompt_sonic_root
sendln "cat ~/hammer/tools/amd/mlucas_amm_log"
; wait prompt_sonic_root
; sendln "cat ~/hammer/tools/amd/mlucas_amm_log"
wait prompt_sonic_root
sendln "cat /host/hw-eval/jobs/qfx5252-stress-ssd.log"
wait prompt_sonic_root
@@ -150,10 +150,11 @@ else
endif
if EN_TX_FIR = 1 then
; ========== Collect bcm dsc data ==========
wait prompt_sonic_root
sendln "./Blanton_Script/bcm_dsc_scan.sh -f blanton_dsc_ScriptC.log -F"
endif
; ========== NVME Err Info ==========
wait prompt_sonic_root
@@ -199,6 +200,8 @@ wait prompt_sonic_root
sendln "cp ./Blanton_Script/log/mgmt_ping.log /host/hw-eval/jobs/"
wait prompt_sonic_root
sendln "cp ./Blanton_Script/log/nfc_poll.log /host/hw-eval/jobs/"
if EN_TX_FIR = 1 then
wait prompt_sonic_root
sendln "cp ./Blanton_Script/log/blanton_dsc_ScriptA_u0.log /host/hw-eval/jobs/"
wait prompt_sonic_root
@@ -207,6 +210,7 @@ wait prompt_sonic_root
sendln "cp ./Blanton_Script/log/blanton_dsc_ScriptC_u0.log /host/hw-eval/jobs/"
wait prompt_sonic_root
sendln "cp ./Blanton_Script/log/blanton_dsc_ScriptC_u1.log /host/hw-eval/jobs/"
endif
wait prompt_sonic_root
getdate ts_date "%Y%m%d"
+2
View File
@@ -5,6 +5,8 @@ project_name = "Blanton"
strTestcase="ENV" ;ENV,EMC,Margin...etc
EN_Margin = 0 ; 1: Enable Margin Test, 0: Disable Margin Test
EN_TX_FIR = 0 ; 1: Enable bcm_dsc_scan.sh collect port TX_FIR, 0: Disable (saves ~20 min: ScriptA and ScriptC each scan for ~10 min)
EN_log = 1 ; 1: Enable log, 0: Disable log
EN_timestamp = 1 ; 1: Enable timestamp in log, 0: Disable timestamp in log