测试与限制
本文说明 ax-net 现有测试资产、运行方式、覆盖范围和当前限制。测试分三层:net/ax-net crate 内单元测试验证协议栈内部数据结构和路由/绑定语义;StarryOS system 测试验证 Linux ABI 观测面;apps/starry/qemu/dual-net 验证双网口 DHCP、路由和并发数据面。
测试资产
| 层级 | 位置 | 作用 |
|---|---|---|
| crate 单元测试 | net/ax-net/src 内各 #[cfg(test)] 模块 | 验证 RouteTable、NetControl/Service、TCP/UDP 设备绑定、UDP bind 表、TCP listen 表和通用 socket option |
| StarryOS system 测试 | test-suit/starryos/qemu-smp1/system | 验证 Linux socket syscall、ioctl、AF_PACKET、netlink、procfs 等 ABI |
| dual-net 集成测试 | apps/starry/qemu/dual-net | 验证两张 virtio-net、双 DHCP、接口绑定下载和并发数据面 |
| xtask 结构自检 | scripts/axbuild/src/starry/test/tests/asset_network_tests.rs | 验证 dual-net app 配置必须包含双网卡、host HTTP fixture 和 guest probe |
ax-net 单元测试
运行方式
cargo test -p ax-net
ax-net 单元测试是 host-side Rust 测试,主要覆盖不依赖真实 QEMU 设备的内部逻辑。部分测试会使用 lib.rs 中的 test_support 构造一个 split-route 测试网络:
LOCAL_IF = InterfaceId(2), LOCAL_ADDR = 10.0.2.15
PEER_IF = InterfaceId(3), PEER_ADDR = 10.0.3.15
network_test_guard() 用全局 mutex 串行化会初始化全局网络状态的测试,避免 SERVICE、NET_CONTROL、SOCKET_SET 这类全局单例在并发 host test 中互相污染。
RouteTable
位置:router.rs
| 测试 | 覆盖点 |
|---|---|
route_lookup_uses_longest_prefix | 最长前缀优先,10.0.1.0/24 优先于默认路由 |
route_lookup_uses_metric_for_same_prefix |