SuperAPI AI 工具集

dev-testing-hypervisor

测试与质量

查看项目

更新于 10-15 21:53

技能介绍

用途:测试 capsem 的虚拟化层(crates/capsem-core/src/hypervisor/),包括 Hypervisor、VmHandle、SerialConsole 等 trait,Apple VZ 后端(apple_vz/,仅 macOS,使用 Virtualization.framework)与 KVM 后端(kvm/,仅 Linux,使用 rust-vmm crates)。测试应尽量覆盖两个后端:macOS CI 测 Apple VZ,Linux CI(ubuntu-24.04-arm 且启用 /dev/kvm)测 KVM。

主要能力与用法:VirtioFS FUSE 操作在 kvm/virtio_fs/mod.rs 有 30+ 单元测试,覆盖文件 I/O、目录操作、元数据与对抗性输入(路径遍历、截断请求、非法操作码)。运行:cargo test -p capsem-core virtio_fs,或 cargo test -p capsem-core hypervisor。macOS 上只跑纯逻辑测试并跳过需要 /dev/kvm 的部分。跨 crate 的 VM 生命周期集成测试在 crates/capsem-core/tests/,运行 cargo test -p capsem-core --test '*',需要预先构建 VM 资产。CI 方面,macOS 测试 capsem-core、capsem-agent、capsem-logger、capsem-proto,并对 aarch64 与 x86_64 musl 做交叉编译检查,不启动 VM;Linux 在 ubuntu-24.04-arm 上验证 /dev/kvm 可用(若 KVM 测试被静默跳过会使 CI 失败)。

变更对应测试:VirtioFS FUSE 操作→cargo test virtio_fs 与 just exec "capsem-doctor -k virtiofs";VM 配置/启动→cargo test -p capsem-core 加 just exec;Vsock/串口→cargo test -p capsem-core 加 just exec "echo ok";KVM 设备模型→cargo test -p capsem-core(Linux CI 验证);KVM x86_64 启动→cargo test -p capsem-core boot_x86_64。

限制与注意:warm checkpoint 必须保留宿主设备模型状态,恢复新 FUSE 处理器无效;x86_64 KVM 引导入口应为 KERNEL_LOAD_ADDR + 0x200,需保留 setup_header;x86_64 代码被 cfg 门控,在 macOS 上不编译。安全不变量包括拒绝 .. 路径、文件句柄上限 4096、读大小限制 1MB、gather buffer 限制 2MB、只读 rootfs 不可写、guest 二进制以 555 部署不可修改。其它细节暂未提供。