Skip to content

测试

三类测试,互不混放:

类型 位置 框架与执行
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 是旧协议归档,只作文档对照, 不作回归基线。

for test_script in tests/bash/test_*.sh; do
    bash "$test_script"
done

真实 MPP / NPU 硬件路径仍必须在 Rockchip 板卡运行(同一 ctest 全量 + tools/bench/ 采样)。x86 只验证加载、CLI 与无硬件纯软路径。