test(guard): 验收链改名入库 + 补真退出码;tx 冻结守卫真机门槛两段
之前 e2e_web_send_latency.py / recover_ecat_after_reset.py / measure_click_to_motion.py 全在 .gitignore 里(e2e_/measure_ 通配),换台机器 clone 就跑不了验收;且 recover 脚本零失败路径(--skip-e2e 无条件退 0)。现在统一到已跟踪的 check_ 前缀, .gitignore 一行例外都不用加,并把"跑过了"和"恢复了"绑成一件事。 - check_recover_after_reset.py:force_reopen 后改为轮询到 dc=1/250us/loop=1/op=1/ wkc>=3(上限 15s,替掉原来单点采样那次假 loop=0),并断言守卫心跳在涨、 发一帧 3s 内出口必须跟上;退出码 0/1/2(前置不满足=BLOCKED=2)。 - check_web_send_latency.py:新增第 6 段读 health.guard(旧 exe 无 guard 块 / alive_ticks 不涨 都算 FAIL),第 5 段改调已入库的 check_click_to_motion.py。 它每次发送只等 2s,结构上看不到 8s 判据,所以只报"守卫当时是死是活", 不拿它冒充触发验证。 - check_guard_idle_silence.py:健康总线的"另一极"——90s 静默 + 25s 1Hz 发送, 要求心跳在涨、armed 恒 0、fires/wr 零增量、每次发送都被消费。这是防 "把守卫修成重连风暴"的真机版(对应离线 T1b/T4/T5/T6)。 - check_guard_fires_hw.py:需人在场按 GD32 RESET 制造冻结,证明 armed 秒起、 tx_stale_s 爬过 8s、fires +1、日志有 [GUARD] 全量重连、松手后 20s 内出口 重新前进,再验证 60s 冷却内不第二次触发;--with-pm-hold 另证"静音"时心跳仍在涨。 只认 guard.fires,不认 wr(wr 汇总所有恢复路径,会以错误的理由通过)。 - guard_probe.py:两个真机脚本共用同一份前置判据与通路选择(先 :2625 页面代理, 再直连 native 8090..8095)。前置没满足一律 BLOCKED——loop=0 或 pm_hold=1 时判据 按设计是静音的,那种"绿了"毫无意义,所以判据只放一个执行点。
This commit is contained in:
+3
-1
@@ -38,6 +38,9 @@ scripts/selftest_*.py
|
||||
# _ 前缀:现场排障探针、预览截图、一次性驱动
|
||||
scripts/_*
|
||||
# 一次性分析/采样/测量/追踪脚本
|
||||
# 注:验收链上的脚本一律用 check_ 前缀入库(check_web_send_latency /
|
||||
# check_recover_after_reset / check_click_to_motion / check_guard_*),
|
||||
# 下面这些 e2e_/measure_/capture_ 通配只挡新的一次性草稿
|
||||
scripts/anal_*.py
|
||||
scripts/collect_*.py
|
||||
scripts/capture_*.py
|
||||
@@ -45,7 +48,6 @@ scripts/measure_*.py
|
||||
scripts/e2e_*.py
|
||||
scripts/trace_*.py
|
||||
scripts/flash_gd32_ecat.py
|
||||
scripts/recover_ecat_after_reset.py
|
||||
scripts/test_ecat_version_*.py
|
||||
scripts/test_gd32_restart_version.py
|
||||
scripts/test_motor_ui_state.*
|
||||
|
||||
Reference in New Issue
Block a user