From b3ef7289a0f87bad0357b65b2af1bc9c8884714e Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Tue, 13 Oct 2026 06:52:07 +0800 Subject: [PATCH] =?UTF-8?q?test(time=5Fsync):=20=E5=8D=95=E6=B5=8B?= =?UTF-8?q?=E6=96=AD=E8=A8=80=E9=9A=8F=E9=98=B6=E6=AE=B51=E5=A5=91?= =?UTF-8?q?=E7=BA=A6=E6=9B=B4=E6=96=B0=EF=BC=88handle=5Fconn=20=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=20close=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 阶段 1 第 5 项(b8c6a3d)删除了 time_sync_handle_conn 的 net_close(conn_sock) ——单连接模式下 conn==listen,close 会把监听一起毁掉;会话收尾改为返回外层, 由 time_sync_task 仅在 `conn != ls`(模拟器多连接后端)时关数据 fd。 4 条主机侧断言仍按旧契约要求"处理完关闭连接",ci_local 报 4 处失败 (TC-TS-020e/023b/024b/027c)。 - 4 条断言改为 `s_close_calls == 0`,文案说明新契约 - TC-TS-020..029 段头补契约变更注释(指向 TC-TS-040e 的任务级关闭路径) - TC-TS-040e(任务级 conn!=ls 关闭)与 TC-TS-043(代次变化关旧监听)不变 验证:time_sync 单测 80/80 PASSED(原 76/80);ci_local L0.5 15 runner 951/951 assertions 全过。 --- test/host/time_sync/time_sync_test.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/test/host/time_sync/time_sync_test.c b/test/host/time_sync/time_sync_test.c index 734c4c72..92278aa2 100644 --- a/test/host/time_sync/time_sync_test.c +++ b/test/host/time_sync/time_sync_test.c @@ -497,7 +497,11 @@ static void tc_open_listener(void) { CHECK(s_beat_id_bad == 0, "TC-TS-015b 心跳位恒为 TASK_WD_TIMESYNC"); } -/* ===================== TC-TS-020..029:handle_conn ===================== */ +/* ===================== TC-TS-020..029:handle_conn ===================== + * ⚠ N34 阶段1(2026-10-13)契约变更:handle_conn **不再** net_close + * (单连接模式下 conn==listen,close 会连监听一起毁);会话收尾只返回外层, + * 由 time_sync_task 在 `conn != ls`(模拟器多连接后端)时才关数据 fd。 + * 故本组断言一律为 s_close_calls == 0;任务级关闭见 TC-TS-040e。 */ static void tc_handle_conn(void) { uint8_t pkt[16]; @@ -513,7 +517,7 @@ static void tc_handle_conn(void) { CHECK(s_set_unix_last == 0x12345678u, "TC-TS-020b epoch 按大端解析"); CHECK((s_recv_calls == 1) && (s_recv_len_log[0] == 16), "TC-TS-020c 首次请求 16 字节"); CHECK(s_recv_to_log[0] == 50U, "TC-TS-020d 单次等待片长 = 50ms"); - CHECK((s_close_calls == 1) && (s_close_socks[0] == 7), "TC-TS-020e 处理完关闭连接"); + CHECK(s_close_calls == 0, "TC-TS-020e 处理完**不**关闭连接(N34 阶段1:close 交外层 conn!=ls 分支)"); CHECK(g_tstest_info_count == 1, "TC-TS-020f 留痕 wall clock updated"); /* 2) 分段送达:4 + 4 */ @@ -552,7 +556,7 @@ static void tc_handle_conn(void) { s_recv_seq_n = 1; time_sync_handle_conn(4); CHECK(s_set_unix_calls == 0, "TC-TS-023 非 TIME 前缀不更新墙钟"); - CHECK(s_close_calls == 1, "TC-TS-023b 仍关闭连接"); + CHECK(s_close_calls == 0, "TC-TS-023b 非 TIME 前缀也不关闭连接"); /* 5) 对端关闭(EOF) */ fakes_reset(); @@ -560,7 +564,7 @@ static void tc_handle_conn(void) { s_recv_seq_n = 1; time_sync_handle_conn(6); CHECK((s_set_unix_calls == 0) && (s_recv_calls == 1), "TC-TS-024 对端关闭(EOF)立即退出不解析"); - CHECK(s_close_calls == 1, "TC-TS-024b 关闭连接"); + CHECK(s_close_calls == 0, "TC-TS-024b EOF 也不关闭连接(net 层 auto_relisten 收口监听)"); /* 6) 真错误 */ fakes_reset(); @@ -586,7 +590,7 @@ static void tc_handle_conn(void) { time_sync_handle_conn(6); CHECK(s_recv_calls == 1, "TC-TS-027 预算耗尽后不再读(只读 1 次)"); CHECK(g_tstest_info_count == 1, "TC-TS-027b 留痕 no TIME packet in 30s, drop conn"); - CHECK(s_close_calls == 1, "TC-TS-027c 仍关闭连接"); + CHECK(s_close_calls == 0, "TC-TS-027c 预算耗尽也不关闭连接"); /* 9) 剩余预算不足一片 */ fakes_reset();