单元测试

cargo test 

# 查看输出
cargo test -- --nocapture

覆盖率cargo-llvm-cov

安装工具:

rustup component add llvm-tools-preview
cargo install cargo-llvm-cov --locked

统计行覆盖率并要求 >=90%

./scripts/coverage.sh
# 或
cargo llvm-cov --fail-under-lines 90

默认会复用现有插桩产物,不会先 clean。需要强制全量重编译时

COVERAGE_FORCE_CLEAN=1 ./scripts/coverage.sh

说明:

  • 默认行为适合本地重复确认覆盖率,避免每次都重编译整套插桩目标;
  • 默认还会设置 RPKI_SKIP_HEAVY_SCRIPT_REPLAY_TESTS=1,跳过会拉起 shell replay pipeline 的重型集成测试,避免 coverage 期间额外触发 target/release 构建;
  • 默认还会设置 RPKI_SKIP_HEAVY_BLACKBOX_TESTS=1,跳过更慢的 blackbox CLI / CIR record 脚本测试,进一步降低日常 coverage 成本;
  • 默认还会设置 RPKI_SKIP_HEAVY_CRYPTO_TESTS=1,跳过需要大量 OpenSSL 生成证书/CRL 的重型密码学测试,进一步压缩日常 coverage 时长;
  • 如需把这批脚本回放测试也纳入 coverage可显式关闭该开关
RPKI_SKIP_HEAVY_SCRIPT_REPLAY_TESTS=0 ./scripts/coverage.sh

如需连同第二批 blackbox 测试一起跑:

RPKI_SKIP_HEAVY_BLACKBOX_TESTS=0 ./scripts/coverage.sh

如需连同重型 OpenSSL 证书路径测试一起跑:

RPKI_SKIP_HEAVY_CRYPTO_TESTS=0 ./scripts/coverage.sh
  • replay 脚本现在也支持通过环境变量注入现成二进制,避免找不到二进制时自动 cargo build --release
    • RPKI_BIN
    • CIR_MATERIALIZE_BIN
    • CIR_EXTRACT_INPUTS_BIN
    • CCR_TO_COMPARE_VIEWS_BIN
  • COVERAGE_FORCE_CLEAN=1 适合需要完全从零重建插桩目标时使用。
Description
No description provided
Readme 51 MiB
Languages
Rust 100%