测试¶
三类测试,互不混放:
| 类型 | 位置 | 框架与执行 |
|---|---|---|
| C++ 单元 | 各工程 tests/(doctest 2.4.11,DOCTEST_CONFIG_NO_EXCEPTIONS) |
随工程构建,顶层 CTest 聚合 |
| Python | tests/python/ |
python3 -m unittest discover -s tests/python -p 'test_*.py' |
| Bash | tests/bash/test_*.sh |
逐个 bash 执行(MLVC / SR 导出链路入口,优先 .venv 回退 python3) |
C++ 测试¶
| 工程 | 测试 | 覆盖 |
|---|---|---|
| core | status_result、spec_frame、model、queue、plugin、pipeline、c_abi、c_header、download | Status/Result/Diag、帧规约、模型目录装载、队列、插件握手、管线、C ABI、纯 C 头文件、Dmabuf 下载桥 |
| mlvc | tables、ratectl、rans、pixel、mlvc_codec | 算法表、码控、熵编码、像素打包、编解码往返 |
| av1 | av1 | SVT 软编逻辑 |
| sr | sr_post | 超分后处理(非方形 core_w/core_h 拆分) |
| h264h265 | mpp_logic、mpp_plugin | MPP 参数逻辑、插件装载 |
| pspack | ps | GB28181 PS 打包 / 解包、PSM 与 PTS、AU 组装 |
| cli | cli | 长选项解析(含 --fps/--json,无 --low-delay) |
cmake --preset tests && cmake --build --preset tests
ctest --test-dir .build/tests --output-on-failure
tests 预设多开 RKVC_CORE_BUILD_TESTS=ON(core 测试默认关闭,其余工程
测试开关默认全开)。缺 MPP 头少 2 个(mpp_logic / mpp_plugin)、缺
SVT-AV1 少 1 个(av1),两者都缺时注册 17 个用例、齐备时 20 个;CI 逐个
断言这份清单都已注册(依赖缺失即失败,不再静默跳过)。x86 只覆盖纯软
路径;MPP / NPU 用例在板端跑同一条 ctest。
c_header 是唯一一个用 C 编译器编的用例(core/tests/test_c_header.c,
C99 + -Wall -Wextra -Werror):公开头 rkvc.h 必须能被纯 C 包含并使用,
C++ 侧看不出这类回归(见 CHANGELOG 里 noexcept 泄漏的那条)。
av1 插件按 SVT-AV1 4.2.0 API 写(子模块钉的版本),发行版包太旧—— noble 是 1.7.0,配置期会被版本门挡下并提示。本地要跑 av1 用例先从子模块 构建,再带上前缀:
cmake -S third_party/SVT-AV1 -B .build/svt -G Ninja \
-DCMAKE_BUILD_TYPE=Release -DBUILD_APPS=OFF -DBUILD_TESTING=OFF \
-DSVT_AV1_LTO=OFF -DCMAKE_INSTALL_PREFIX="$PWD/.build/svt-install"
cmake --build .build/svt -j"$(nproc)" && cmake --install .build/svt
cmake -B .build/tests -G Ninja -DCMAKE_BUILD_TYPE=Debug \
-DRKVC_CORE_BUILD_TESTS=ON \
-DSVT_AV1_INSTALL_PREFIX="$PWD/.build/svt-install"
Python 测试¶
| 测试 | 覆盖 |
|---|---|
| test_rd.py | RD 核算(pooled MSE、GOP 审计、resume 校验;直读 tools/bench/rd.uvg.json 模板,模板失配即失败) |
| test_benchmark.py | benchmark.py 配置与命令生成(新 CLI 长选项、无 --low-delay) |
| test_mlvc_export.py / test_sr_export.py | MLVC / SR 导出、ONNX 重写、bundle 校验(缺 ONNX/NumPy 时 skip) |
板端回归¶
MPP / NPU 硬件路径必须在 Rockchip 板卡验证:同一 ctest 全量 +
tools/bench/ 的 RD 与性能采样(见 bench 说明)。
tools/bench/results/ 下的历史 rd.json 是旧协议归档,只作文档对照,
不作回归基线。
真实 MPP / NPU 硬件路径仍必须在 Rockchip 板卡运行(同一 ctest 全量 +
tools/bench/ 采样)。x86 只验证加载、CLI 与无硬件纯软路径。