54 lines
1.5 KiB
C++
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
|