修改测试

This commit is contained in:
2026-07-22 11:14:22 +08:00
parent c646df5c2a
commit a7f367f6a3
77 changed files with 1691 additions and 950 deletions

View File

@@ -1,24 +1,27 @@
/*
* 模块名称CH395F Driver Test Suite
* 模块功能CH395F 驱动各功能模块的测试入口,分阶段组织测试用例,
* 覆盖 SPI 命令路径、协议栈配置、Socket 状态机
* 覆盖 SPI 命令路径、协议栈配置、Socket 状态机、大文件传输、
* 边界条件、KeepAlive、PHY 链路恢复等,基于单连接 socket 模式
* 适用平台STM32F4 系列CH395F 以太网芯片)
* 作者:王建锋
* 创建日期2026-07-19
* 修改记录:
* 2026-07-22 全面重构为单连接模式,增加大文件传输、边界条件等测试
*
* === 通过标准速查 ===
*
* Phase | 通过条件 | 失败特征
* ---------|-----------------------------------|--------------------------------
* Phase 1 | 9 项全部打印 OK/SUCCESS/YES/0x00 | 任何一项显示 FAIL、ERROR、MISMATCH
* Phase 2 | 3 轮 "PASS" 打印 | 任何一轮打印 "FAIL" 或超时
* Phase 3 | 20/20 回显 + PING 5/5 + 大包 10/10 | 任何回显超时或丢包
* Phase 4 | PC 脚本显示 10/10 sent/received | 断连、数据错乱
* Phase 5 | PC 脚本显示 10/10 sent/received | 断连、数据错乱
* Phase 6 | 日志打印 IP/GW/MASK 非零 IP | DHCP timeout 或 0.0.0.0
* Phase 7 | PC 脚本显示 10/10 sent/received | 断连、数据错乱
* Phase 8 | 70/70 成功率 100% | 任何连接失败或丢包
* === 测试阶段一览 ===
* Phase | 类型 | 描述
* ---------|--------------|-----------------------------------------------
* Phase 1 | 独立运行 | 寄存器读写 + SPI 命令路径验证
* Phase 2 | PC 配合 | TCP Client 收发 + 关闭重连
* Phase 3 | PC 配合 | UDP Server EchoHELLO + PING + 大包)
* Phase 4 | netTask | NET 层 TCP Echo单连接模式基础收发验证
* Phase 5 | netTask | NET 层大文件传输20KB+ 分块收发)
* Phase 6 | PC 配合 | DHCP 自动获取 IP
* Phase 7 | netTask | Select/Poll I/O 多路复用
* Phase 8 | netTask | 边界条件测试零长度、DMA 边界、缓冲溢出)
* Phase 9 | 需拔插网线 | PHY 链路恢复
* Phase 10 | netTask | KeepAlive 超时断开测试
*/
#ifndef __CH395F_TEST_H
@@ -32,15 +35,19 @@ extern "C" {
/*
* 阶段使能开关(取消注释即启用对应阶段)
* 注意:Phase 6 (DHCP) 会改变 IP建议独立运行
* 注意:一次仅启用一个阶段Phase 4/5/7/8 共享 netTask 循环,可同时启用)
* Phase 6 (DHCP) 会改变 IP必须独立运行
*/
//#define ENABLE_PHASE1_TESTS /* 寄存器读写 + 中断一致性 */
//#define ENABLE_PHASE1_TESTS /* 寄存器读写 + SPI 命令路径 */
//#define ENABLE_PHASE2_TESTS /* TCP Client 收发 + 关闭重连 */
//#define ENABLE_PHASE3_TESTS /* UDP Server Echo */
#define ENABLE_PHASE4_TESTS /* NET 层 TCP EchonetTask 中运行 */
//#define ENABLE_PHASE5_TESTS /* NET 层 UDP EchonetTask 中运行 */
//#define ENABLE_PHASE6_TESTS /* DHCP 自动获取 IP会改 IP */
//#define ENABLE_PHASE7_TESTS /* Select/Poll I/O 多路复用netTask 中运行) */
#define ENABLE_PHASE4_TESTS /* NET 层 TCP Echo单连接基础收发 */
//#define ENABLE_PHASE5_TESTS /* NET 层大文件传输20KB+ 分块 */
//#define ENABLE_PHASE6_TESTS /* DHCP 自动获取 IP会改 IP独立运行 */
//#define ENABLE_PHASE7_TESTS /* Select/Poll I/O 多路复用 */
//#define ENABLE_PHASE8_TESTS /* 边界条件测试 */
//#define ENABLE_PHASE9_TESTS /* PHY 链路恢复测试 */
//#define ENABLE_PHASE10_TESTS /* KeepAlive 超时断开测试 */
/* 测试统计 */
typedef struct {
@@ -85,30 +92,28 @@ void ch395f_phase2_tests(void);
/*
* Phase 3: UDP Server Echo + PING + 大包
* 通过: 20/20 回显 + PING 5/5 + 大包 10/10
* 通过: 30/30 回显匹配
* 失败: 任何回显超时或丢包
* PC 端:
* ping 192.168.1.100
* python test/ch395f_socket_test.py udp_client --ip 192.168.1.100 --port 60000
*/
void ch395f_phase3_tests(void);
/*
* Phase 4: NET 层 TCP EchonetTask 中运行)
* 通过: PC 脚本 10/10 sent/received
* 失败: 断连或数据错乱
* Phase 4: NET 层 TCP Echo单连接模式,netTask 中运行)
* 验证 Socket 0 单连接生命周期LISTEN → ESTABLISHED → DISCONNECT → re-LISTEN
* 覆盖载荷64B、1460B(MSS)、4096B(缓冲满)、20KB(大文件分块)
* PC 端:
* python test/ch395f_socket_test.py tcp_client --ip 192.168.1.100 --port 8080
*/
void ch395f_phase4_tests(void);
/*
* Phase 5: NET 层 UDP EchonetTask 中运行)
* 通过: PC 脚本 10/10 sent/received
* 失败: 断连或数据错乱
* 注init 在 USER CODE BEGIN 2 中调用echo 在 netTask 中运行
* Phase 5: NET 层大文件传输netTask 中运行)
* 验证超过 CH395F 内部缓冲区大小4KB的连续数据收发
* 覆盖载荷20480B(20KB)、65535B(64KBrecv_len上限)
* PC 端:
* python test/ch395f_socket_test.py udp_client --ip 192.168.1.100 --port 60000
* python test/ch395f_socket_test.py tcp_file --ip 192.168.1.100 --port 8080 --size 20480
*/
void ch395f_phase5_init(void);
void ch395f_phase5_tests(void);
@@ -119,19 +124,44 @@ void ch395f_phase5_tests(void);
* 失败: DHCP timeout 或宣告/HELLO 失败
* 注意: 会改变 IP需独立运行
* PC 端:管理员权限
* python test/ch395f_socket_test.py dhcp_server --dhcp-iface 192.168.1.2 --ip 192.168.1.100
* python test/ch395f_socket_test.py dhcp_server --dhcp-iface 192.168.1.2 --ip 192.168.1.100
*/
void ch395f_phase6_tests(void);
/*
* Phase 7: Select/Poll 测试netTask 中运行)
* 通过: PC 脚本 10/10 sent/received
* 失败: 断连或数据错乱
* Phase 7: Select/Poll I/O 多路复用netTask 中运行)
* 验证 net_select() 和 net_poll_events() 在单 socket 模式下正确工作
* PC 端:
* python test/ch395f_socket_test.py tcp_client --ip 192.168.1.100 --port 8080
*/
void ch395f_phase7_tests(void);
/*
* Phase 8: 边界条件测试netTask 中运行)
* 覆盖零长度收发、DMA 边界4095/4096/4097B、recv 缓冲区小于数据、
* 连续快速发送、多轮快速连接-断开循环
* PC 端:
* python test/ch395f_socket_test.py tcp_client --ip 192.168.1.100 --port 8080
*/
void ch395f_phase8_init(void);
void ch395f_phase8_tests(void);
/*
* Phase 9: PHY 链路恢复测试
* 通过拔插网线验证 PHY 断开检测和链路恢复后 socket 自动重新监听
* 需物理操作PC 端:
* python test/ch395f_socket_test.py tcp_client --ip 192.168.1.100 --port 8080
*/
void ch395f_phase9_tests(void);
/*
* Phase 10: TCP KeepAlive 超时断开测试
* 验证 KeepAlive 在空闲超时后触发断开并自动重新监听
* PC 端:连接后静置(不发数据),等待 KeepAlive 触发
* python test/ch395f_socket_test.py tcp_client --ip 192.168.1.100 --port 8080 --silent
*/
void ch395f_phase10_tests(void);
#ifdef __cplusplus
}
#endif