SuperAPI AI 工具集

build-prevail

测试与质量

查看项目

更新于 10-16 06:47

技能介绍

用途:在 eBPF for Windows 仓库中独立构建和测试 PREVAIL eBPF 验证器(external/ebpf-verifier),适用于修改验证器代码、运行或调试 YAML 验证测试、构建 run_yaml.exe 或 tests.exe,以及需要比完整 MSBuild 更快反馈的迭代场景。

前置条件:验证器的 cmake 构建目录必须存在。若 external/ebpf-verifier/build/ 缺失,需在解决方案根目录运行 .\scripts\initialize_ebpf_repo.ps1 生成 cmake 工程,通常只需执行一次或在重置子模块后执行。

构建方式:进入 external\ebpf-verifier 后,用 cmake --build build --config Release --target run_yaml 构建 YAML 测试运行器;用 --target tests 构建完整 Catch2 测试二进制;用 --clean-first 做干净重建。作为子模块构建时 prevail_ENABLE_TESTS 默认为 OFF,需用 cmake -B build -Dprevail_ENABLE_TESTS=ON 重新配置才能独立构建 tests.exe。

运行测试:YAML 测试文件位于 external/ebpf-verifier/test-data/*.yaml,每个文件是一个测试套件,测试之间以 --- 分隔。可用 .\bin\run_yaml.exe test-data\loop.yaml 运行整个套件,附加子串或精确名称可筛选单个测试。退出码 0 表示全部通过,1 表示有失败。tests.exe 还包含 ELF 验证、一致性和单元测试,支持 --reporter compact、--abort 等参数。

编写新测试:可先用占位 post 和 messages,运行后从失败输出的 Unexpected properties 与 Unseen properties 中获取实际值再填入。YAML 中 r 前缀表示 64 位寄存器,w 前缀表示 32 位;svalue 为有符号值,uvalue 为无符号值,区间写作 [0, 100],关系约束写作 r2.svalue=r1.svalue;post 必须列出全部预期属性。

其他:验证器以 git 子模块形式位于 external/ebpf-verifier/,父仓库的 git stash 不影响子模块工作树;重置子模块后需重新运行 initialize_ebpf_repo.ps1。在完整解决方案中构建时,验证器库的 MSBuild 目标为 libs\user\prevail。