safesight/edge/tests/test_infer_backend.cpp
tian 29d9ef5d0d refactor: 项目结构梳理 - 设备端/管理端对称布局
仓库结构:
  edge/     设备端(原根目录设备端代码整体移入)
  control/  管理端(清理后)
  docs/     文档(PRD 移入 design/)
  README.md 根导航(新增)

清理:
- control/.brainstorm 临时草稿删除
- control 根级重复文档(API表/PRD_04)并入 docs/design/
- control/plan.md -> docs/implementation/control-plan.md
- control/safesightd-linux-arm64 二进制取消版本控制(.gitignore)
- edge/transform 模型转换产物归入 models/,onnx/pt 大源文件取消跟踪(.gitignore)
- Readme.md(PRD) -> docs/design/PRD_Product_v1.2.md(避开 README 大小写冲突)

更新:
- 根 README.md 导航、docs/README.md 文档索引
- deployment.md/检查表路径加 edge/ 前缀
- .gitignore 重写(edge/control 分区规则)
2026-08-02 11:39:54 +08:00

54 lines
1.5 KiB
C++

#include <gtest/gtest.h>
#include <filesystem>
#include "hw/hw_factory.h"
#include "hw/rk3588_defaults.h"
namespace rk3588 {
namespace {
TEST(InferBackendTest, LoadModelSmoke) {
SimpleJson config(SimpleJson::Object{});
auto infer = HwFactory::CreateInferBackend(config);
ASSERT_NE(infer, nullptr);
std::filesystem::path repo_root = std::filesystem::path(__FILE__).parent_path().parent_path();
std::filesystem::path model_path = repo_root / "models" / "face_det_scrfd_500m_640_rk3588.rknn";
if (!std::filesystem::exists(model_path)) {
GTEST_SKIP() << "model file not found: " << model_path.string();
}
std::string err;
ModelHandle handle = infer->LoadModel(model_path.string(), err);
#if defined(RK3588_ENABLE_RKNN)
EXPECT_NE(handle, kInvalidModelHandle) << err;
if (handle != kInvalidModelHandle) {
infer->UnloadModel(handle);
}
#else
EXPECT_EQ(handle, kInvalidModelHandle);
EXPECT_FALSE(err.empty());
#endif
}
TEST(InferBackendTest, BorrowedInputUsesDmaFd) {
SimpleJson config(SimpleJson::Object{});
auto infer = HwFactory::CreateInferBackend(config);
auto rk = std::dynamic_pointer_cast<Rk3588InferBackend>(infer);
ASSERT_NE(rk, nullptr);
InferInput input;
input.dma_fd = 7;
input.dma_offset = 16;
rk->InferBorrowed(kInvalidModelHandle, input);
InferInput last = rk->GetLastBorrowedInput();
EXPECT_EQ(last.dma_fd, 7);
EXPECT_EQ(last.dma_offset, 16);
}
} // namespace
} // namespace rk3588