OrangePi3588Media/tests/test_infer_backend.cpp

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" / "RetinaFace_mobile320.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