#include #include #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(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