用途:在本地运行或调试 OpenVMM 的 VMM 测试。这类测试会启动完整虚拟机并验证其行为,代码位于 vmm_tests/vmm_tests/tests/tests/,使用 petri 测试框架编写。
主要能力:通过 cargo xflowey vmm-tests-run 统一处理产物发现、依赖构建与测试执行;支持 nextest 过滤表达式、跨平台目标(windows-x64、windows-aarch64、linux-x64);默认按需通过 HTTP 流式拉取磁盘镜像并使用本地 SQLite 缓存,避免一次性下载数 GB 文件;默认在失败时输出 petri 日志与 guest 串口信息,可用 OPENVMM_LOG 开启完整 OpenVMM 跟踪。
必要用法:始终使用 cargo xflowey vmm-tests-run,不要直接使用 cargo nextest run -p vmm_tests。运行单个测试:cargo xflowey vmm-tests-run --filter "test(my_test_name)";按前缀运行:cargo xflowey vmm-tests-run --filter "test(/^boot_/)";运行全部(本地很少需要):cargo xflowey vmm-tests-run --filter "all()"。
常用选项:--target 指定目标平台;--release 使用发布构建;--build-only 只构建不运行;--verbose 输出详细 cargo 日志;--install-missing-deps 自动安装缺失系统依赖;--no-lazy-fetch 改为预先下载全部镜像;--skip-vhd-prompt 跳过交互式 VHD 下载提示;--custom-uefi-firmware <PATH> 使用自定义 UEFI 固件;--custom-kernel <PATH> 使用自定义内核镜像。完整选项见 --help。
注意事项与限制:--dir 默认指向 target/vmm_tests;从 WSL2 交叉编译运行 Windows 测试时,仅当选中的测试需要 Windows 文件系统(Hyper-V 测试,或使用 VHDX / 动态 VHD1 镜像)才必须把 --dir 设在 Windows 文件系统上(如 --dir /mnt/d/vmm_tests),此时 --dir 需位于 /mnt/c/ 或 /mnt/d/,否则默认 WSL 侧目录可用;vmm-tests-run 在需要时会给出明确报错。Hyper-V 测试需要 Hyper-V Administrators 组成员身份,并会自动禁用延迟拉取。CI 失败诊断应使用 openvmm-ci-investigation 技能,而非本流程。