用途:capsem-doctor 是 capsem 项目里运行于客户机 VM 内的 pytest 诊断套件,作为冒烟测试门槛——每次改动必须通过后才能发布。它也是 Ironbank 的输入:当用于关闭发布关键的 VM/安全/协议/包管理器门禁时,需加载 /ironbank 并通过 tests/ironbank/ 断言完整账本(客户端结果、数据库行、结构化日志、UDS/HTTP 路由输出、计数器、面向 UI 的 JSON),仅凭退出码或“行存在”检查不够。
主要能力:测试分为 11 个文件。test_sandbox.py 校验只读 rootfs、二进制权限(chmod 555)、无 setuid/setgid、内核加固(无模块、无 debugfs、无 IPv6、无 swap、无 kallsyms)、进程完整性(pty-agent、dnsmasq 运行;无 systemd、sshd、cron)、网络隔离(dummy0、假 DNS、iptables、无真实网卡)。test_network.py 校验 MITM CA 在系统存储与 certifi 中、curl 不用 -k 可用、Python urllib HTTPS、CA 环境变量、HTTP/80 与非 443 端口被阻断、直连 IP 被阻断、多域名 DNS 伪造、AI 提供商域名可达。其余覆盖环境变量与挂载点、运行时(Python3、Node.js、npm、pip3、git)、约 36 个 Unix 工具、工作流、AI CLI、VirtioFS、MCP、注入安全测试等。
使用方式: just exec "capsem-doctor" # 完整套件(含 VM 启动约 10 秒) just exec "capsem-doctor -k sandbox" # 仅沙箱测试 just exec "capsem-doctor -k network" # 仅网络测试 just exec "capsem-doctor -x" # 首次失败即停止 just exec "capsem-doctor -v" # 更详细输出
测试位于 guest/artifacts/diagnostics/test_.py(源码),rootfs 中路径为 /usr/local/lib/capsem-tests/test_.py(由 Dockerfile.rootfs 烘焙),initrd 中通过 pack-initrd 覆盖 rootfs 副本以便快速迭代。新增测试加入对应 test*.py 或新建 test_<category>.py,使用 conftest 的 run 与 output_dir;VM 外会自动跳过。根级变更需 just _build-assets 后再运行。
限制:仅在 capsem VM 内运行(非 VM 环境自动跳过);VirtioFS 测试在 block 模式下需优雅跳过,但 Ironbank/发布门禁不可跳过。其他细节资料暂未提供。