refactor(编号): 16 个测试模块码单词化 + 门禁识别面连带放宽
批 2(用户授权改名 + 「新名要一眼看懂」裁定)
- 16 个有歧义模块码单词化,共 1,146 处随 scripts/rename_ids.py 改写:
AI→ADCIN、AH→ADCHEALTH、PS→PROTSET、PE→PROTELEM、PH→PHASOR、
TS→TIMESYNC、VL→VOLLOCK、NP→NANDPORT、CFG→CONFIG、CLK→SYSCLK、
WD→WATCHDOG、STO→STORAGE、SH→SHA256、FA→FTPAUTH、FR→FREQ、104→IEC104
- 不动 NET/GD5F/RTC/SOE/UI/ADC/LOG/RS485/TOOL(已是单词、芯片名或业界通用词,
改了纯属 churn)
- 别名按全局登记:这批字面量已完全限定(TC-<码>-<nnn>),不存在裸形多义
- 映射表存档 scripts/rename_maps/batch2.json 作审计轨迹;§6 模块码表同步
连带修门禁(关键教训)
- 模块码涨到 9 位(ADCHEALTH/WATCHDOG)后,候选正则与族正则的 {0,4} 上界
会让改名后的号**整批从门禁眼里消失**:实测编号字面量从 8271 掉到 7315、
悬空假降 490 处。已放宽到 {0,9} 并写进 §6 注记
- 结论:改名批次必须连带复核识别面,只改数据不改判据 = 静默放行;
这次是靠「可判定比例跌破基线即失败」那条线拦下来的
现状与遗留
- 校验 1 未登记前缀 0 处;可判定比例 82.71%(基线 82.6%,只涨不跌成立)
- 遗留:7 个模块的「单元测试说明.md」仍缺(PROTSET 116、NANDPORT 109、
PROTELEM 65、FREQ 48、FTPAUTH 45、SHA256 25、SOE 14 处悬空)——改名不解决
缺文档,处置方式待议
- 遗留:T-2/T-3/T-4/T-6 历史任务号悬空(别名表未收全,属本工具批次漏项)
- 未改任何 C/H 可编译语义(仅注释与宏名内的编号),故不需 @build
This commit is contained in:
@@ -11,19 +11,19 @@
|
||||
* 把模块静态态恢复到"刚上电"。
|
||||
*
|
||||
* 覆盖点(对应 docs/测试说明/看门狗单元测试说明.md 的 TC-WD-xxx):
|
||||
* TC-WD-001 未启动时 poll 不做任何判定(也不喂狗)
|
||||
* TC-WD-002 节流:< 100ms 的 poll 直接返回
|
||||
* TC-WD-003 全员到位置位 → 喂狗一次,且位图取走清零
|
||||
* TC-WD-004 取走清零语义:旧位不残留(下一轮必须重新置位)
|
||||
* TC-WD-005 掩码判定:缺任一位不喂,last_mask 精确记录
|
||||
* TC-WD-006 连续 1..7 次缺席不喂不报;第 8 次打 [WD] task stall
|
||||
* TC-WD-007 停喂后 stall 日志持续复报(现状行为,见用例内说明)
|
||||
* TC-WD-008 恢复:重新全员到位 → 喂狗 + streak 归零
|
||||
* TC-WD-009 节流窗口边界 99/100/199/200
|
||||
* TC-WD-010 tick 回绕安全(无符号差)
|
||||
* TC-WD-011 观测接口:last_mask / is_armed
|
||||
* TC-WD-013 非法任务 ID 被忽略(防位图越界)
|
||||
* TC-WD-014 start 幂等
|
||||
* TC-WATCHDOG-001 未启动时 poll 不做任何判定(也不喂狗)
|
||||
* TC-WATCHDOG-002 节流:< 100ms 的 poll 直接返回
|
||||
* TC-WATCHDOG-003 全员到位置位 → 喂狗一次,且位图取走清零
|
||||
* TC-WATCHDOG-004 取走清零语义:旧位不残留(下一轮必须重新置位)
|
||||
* TC-WATCHDOG-005 掩码判定:缺任一位不喂,last_mask 精确记录
|
||||
* TC-WATCHDOG-006 连续 1..7 次缺席不喂不报;第 8 次打 [WD] task stall
|
||||
* TC-WATCHDOG-007 停喂后 stall 日志持续复报(现状行为,见用例内说明)
|
||||
* TC-WATCHDOG-008 恢复:重新全员到位 → 喂狗 + streak 归零
|
||||
* TC-WATCHDOG-009 节流窗口边界 99/100/199/200
|
||||
* TC-WATCHDOG-010 tick 回绕安全(无符号差)
|
||||
* TC-WATCHDOG-011 观测接口:last_mask / is_armed
|
||||
* TC-WATCHDOG-013 非法任务 ID 被忽略(防位图越界)
|
||||
* TC-WATCHDOG-014 start 幂等
|
||||
*
|
||||
* 通过:全部 TC PASS(main 返回 0)。
|
||||
* 入口:int main(void),返回 0=PASS / 1=FAIL(由 run 脚本判读)。
|
||||
@@ -108,7 +108,7 @@ static void poll_advance(uint32_t ms) {
|
||||
|
||||
/*
|
||||
* 启动并清空喂狗计数:task_wd_start() 内部会先喂一次(让首个抽样窗口从启动
|
||||
* 时刻起算,见生产代码注释),该次喂狗由 TC-WD-015 单独断言;其余用例只关心
|
||||
* 时刻起算,见生产代码注释),该次喂狗由 TC-WATCHDOG-015 单独断言;其余用例只关心
|
||||
* "启动之后 poll 的喂狗行为",故此处把计数归零。
|
||||
*/
|
||||
static void start_and_clear(void) {
|
||||
@@ -131,7 +131,7 @@ static void beat_all(void) {
|
||||
/* ===================== 用例 ===================== */
|
||||
|
||||
static void tc_001_not_armed(void) {
|
||||
printf("TC-WD-001 未启动时 poll 不做判定\n");
|
||||
printf("TC-WATCHDOG-001 未启动时 poll 不做判定\n");
|
||||
beat_all();
|
||||
poll_advance(1000);
|
||||
CHECK(s_feed_count == 0, "未启动时 poll 不喂狗");
|
||||
@@ -139,7 +139,7 @@ static void tc_001_not_armed(void) {
|
||||
}
|
||||
|
||||
static void tc_002_throttle(void) {
|
||||
printf("TC-WD-002 节流:< 100ms 直接返回\n");
|
||||
printf("TC-WATCHDOG-002 节流:< 100ms 直接返回\n");
|
||||
start_and_clear();
|
||||
beat_all();
|
||||
poll_advance(50); /* 50ms < 100ms → 不抽样 */
|
||||
@@ -149,7 +149,7 @@ static void tc_002_throttle(void) {
|
||||
}
|
||||
|
||||
static void tc_003_all_beat_feeds(void) {
|
||||
printf("TC-WD-003 全员到位 → 喂狗一次\n");
|
||||
printf("TC-WATCHDOG-003 全员到位 → 喂狗一次\n");
|
||||
start_and_clear();
|
||||
beat_all();
|
||||
poll_advance(100);
|
||||
@@ -158,7 +158,7 @@ static void tc_003_all_beat_feeds(void) {
|
||||
}
|
||||
|
||||
static void tc_004_take_and_clear(void) {
|
||||
printf("TC-WD-004 取走清零:旧位不残留\n");
|
||||
printf("TC-WATCHDOG-004 取走清零:旧位不残留\n");
|
||||
start_and_clear();
|
||||
beat_all();
|
||||
poll_advance(100); /* 消费位图并喂狗 */
|
||||
@@ -168,7 +168,7 @@ static void tc_004_take_and_clear(void) {
|
||||
}
|
||||
|
||||
static void tc_005_mask_required(void) {
|
||||
printf("TC-WD-005 掩码判定:缺任一位不喂\n");
|
||||
printf("TC-WATCHDOG-005 掩码判定:缺任一位不喂\n");
|
||||
start_and_clear();
|
||||
/* 故意缺 UI(bit4) */
|
||||
task_wd_beat(TASK_WD_DEFAULT);
|
||||
@@ -185,7 +185,7 @@ static void tc_005_mask_required(void) {
|
||||
}
|
||||
|
||||
static void tc_006_stall_8(void) {
|
||||
printf("TC-WD-006 连续 8 次缺席 → 打 stall 并停喂\n");
|
||||
printf("TC-WATCHDOG-006 连续 8 次缺席 → 打 stall 并停喂\n");
|
||||
start_and_clear();
|
||||
beat_all(); poll_advance(100); /* streak 清零 */
|
||||
int err0 = g_wdtest_err_count;
|
||||
@@ -199,7 +199,7 @@ static void tc_006_stall_8(void) {
|
||||
}
|
||||
|
||||
static void tc_007_stall_repeats_until_reset(void) {
|
||||
printf("TC-WD-007 停喂后 stall 日志持续复报(当前设计:每 100ms 一条)\n");
|
||||
printf("TC-WATCHDOG-007 停喂后 stall 日志持续复报(当前设计:每 100ms 一条)\n");
|
||||
start_and_clear();
|
||||
for (int i = 0; i < 8; i++) poll_advance(100); /* 第 8 次触发 */
|
||||
int err8 = g_wdtest_err_count;
|
||||
@@ -217,7 +217,7 @@ static void tc_007_stall_repeats_until_reset(void) {
|
||||
}
|
||||
|
||||
static void tc_008_recover(void) {
|
||||
printf("TC-WD-008 恢复:重新全员到位 → 喂狗 + streak 归零\n");
|
||||
printf("TC-WATCHDOG-008 恢复:重新全员到位 → 喂狗 + streak 归零\n");
|
||||
start_and_clear();
|
||||
for (int i = 0; i < 8; i++) poll_advance(100); /* 触发 stall */
|
||||
beat_all();
|
||||
@@ -229,7 +229,7 @@ static void tc_008_recover(void) {
|
||||
}
|
||||
|
||||
static void tc_009_throttle_boundary(void) {
|
||||
printf("TC-WD-009 节流窗口边界 99/100/199/200\n");
|
||||
printf("TC-WATCHDOG-009 节流窗口边界 99/100/199/200\n");
|
||||
start_and_clear();
|
||||
beat_all();
|
||||
poll_advance(99); CHECK(s_feed_count == 0, "99ms 不判");
|
||||
@@ -240,7 +240,7 @@ static void tc_009_throttle_boundary(void) {
|
||||
}
|
||||
|
||||
static void tc_010_tick_wrap(void) {
|
||||
printf("TC-WD-010 tick 回绕安全\n");
|
||||
printf("TC-WATCHDOG-010 tick 回绕安全\n");
|
||||
start_and_clear();
|
||||
s_tick = 0xFFFFFF00u; /* 推到接近 2^32 回绕 */
|
||||
task_wd_poll(); /* 建立基线(此处可能不判,取决节流) */
|
||||
@@ -251,7 +251,7 @@ static void tc_010_tick_wrap(void) {
|
||||
}
|
||||
|
||||
static void tc_011_observers(void) {
|
||||
printf("TC-WD-011 观测接口语义\n");
|
||||
printf("TC-WATCHDOG-011 观测接口语义\n");
|
||||
start_and_clear();
|
||||
CHECK(task_wd_is_armed() == 1, "is_armed == 1(已启动)");
|
||||
beat_all();
|
||||
@@ -261,7 +261,7 @@ static void tc_011_observers(void) {
|
||||
}
|
||||
|
||||
static void tc_013_bad_id(void) {
|
||||
printf("TC-WD-013 非法任务 ID 被忽略\n");
|
||||
printf("TC-WATCHDOG-013 非法任务 ID 被忽略\n");
|
||||
start_and_clear();
|
||||
task_wd_beat((task_wd_id_t)(TASK_WD_ID_MAX + 3)); /* 非法:应被忽略 */
|
||||
poll_advance(100);
|
||||
@@ -270,7 +270,7 @@ static void tc_013_bad_id(void) {
|
||||
}
|
||||
|
||||
static void tc_014_start_idempotent(void) {
|
||||
printf("TC-WD-014 start 幂等\n");
|
||||
printf("TC-WATCHDOG-014 start 幂等\n");
|
||||
task_wd_start();
|
||||
task_wd_start();
|
||||
CHECK(s_start_count == 1, "重复 start 只启动 IWDG 一次");
|
||||
@@ -278,14 +278,14 @@ static void tc_014_start_idempotent(void) {
|
||||
}
|
||||
|
||||
static void tc_015_start_feeds_once(void) {
|
||||
printf("TC-WD-015 start 先喂一次(首个窗口从启动时刻起算)\n");
|
||||
printf("TC-WATCHDOG-015 start 先喂一次(首个窗口从启动时刻起算)\n");
|
||||
task_wd_start();
|
||||
CHECK(s_start_count == 1, "start 启动 IWDG 一次");
|
||||
CHECK(s_feed_count == 1, "start 内部先喂狗一次(避免启动即超时)");
|
||||
}
|
||||
|
||||
static void tc_016_stall_not_armed_no_feed(void) {
|
||||
printf("TC-WD-016 未启动时即便全员到位也不喂\n");
|
||||
printf("TC-WATCHDOG-016 未启动时即便全员到位也不喂\n");
|
||||
/* 未 start:poll 直接返回 */
|
||||
beat_all();
|
||||
poll_advance(500);
|
||||
|
||||
Reference in New Issue
Block a user