#include <ne_test_utils.h>
#include <ne_test_utils_gtest.h>
+#define BASIC_TEST_MODEL NE_DATADIR "/testdata/TRIV235_2TOPS/CONV_2D_000"
+
/**
* @brief test primitives supported in libnpuhost
*/
}
}
+static bool
+create_test_model (const char *model_path, generic_buffer *model) {
+ off_t model_size = get_file_size (model_path);
+ if (model_size <= 0)
+ return false;
+
+ model->type = BUFFER_FILE;
+ model->size = model_size;
+ model->filepath = model_path;
+
+ return true;
+}
+
/**
* @brief test APIs to registerNPU model
*/
TEST (ne_libnpuhost_test, register_model) {
npudev_h dev;
- ASSERT_EQ (getNPUdeviceByType (&dev, NPUCOND_TRIV2_CONN_SOCIP, 0), 0);
-
- std::string model_path (NE_DATADIR);
- model_path += "/testdata/TRIV235_2TOPS/CONV_2D_000/model.tvn";
+ uint32_t model_id;
+ generic_buffer model;
+ std::string model_dir (BASIC_TEST_MODEL);
+ std::string model_path = model_dir + "/model.tvn";
- npubin_meta *meta = getNPUmodel_metadata (model_path.c_str (), false);
- if (meta == nullptr) {
- /* skip */
- putNPUdevice (dev);
+ /* skip if the test model is not available */
+ if (!create_test_model (model_path.c_str (), &model))
return;
- }
-
- generic_buffer model;
- uint32_t model_id;
- model.type = BUFFER_FILE;
- model.size = meta->size;
- model.filepath = model_path.c_str ();
+ ASSERT_EQ (getNPUdeviceByType (&dev, NPUCOND_TRIV2_CONN_SOCIP, 0), 0);
EXPECT_EQ (registerNPUmodel (dev, &model, &model_id), 0);
EXPECT_EQ (unregisterNPUmodel (dev, model_id), 0);
- free (meta);
putNPUdevice (dev);
}
*/
TEST (ne_libnpuhost_test, register_model_n) {
npudev_h dev;
- ASSERT_EQ (getNPUdeviceByType (&dev, NPUCOND_TRIV2_CONN_SOCIP, 0), 0);
-
- std::string model_path (NE_DATADIR);
- model_path += "/testdata/TRIV235_2TOPS/CONV_2D_000/model.tvn";
+ uint32_t model_id;
+ generic_buffer model;
+ std::string model_dir (BASIC_TEST_MODEL);
+ std::string model_path = model_dir + "/model.tvn";
- npubin_meta *meta = getNPUmodel_metadata (model_path.c_str (), false);
- if (meta == nullptr) {
- /* skip */
- putNPUdevice (dev);
+ /* skip if the test model is not available */
+ if (!create_test_model (model_path.c_str (), &model))
return;
- }
-
- generic_buffer model;
- uint32_t model_id = 0;
- model.type = BUFFER_FILE;
- model.size = meta->size;
- model.filepath = model_path.c_str ();
+ ASSERT_EQ (getNPUdeviceByType (&dev, NPUCOND_TRIV2_CONN_SOCIP, 0), 0);
EXPECT_NE (registerNPUmodel (nullptr, &model, &model_id), 0);
EXPECT_NE (registerNPUmodel (dev, nullptr, &model_id), 0);
EXPECT_NE (registerNPUmodel (dev, &model, nullptr), 0);
EXPECT_NE (unregisterNPUmodel (dev, model_id), 0);
- free (meta);
putNPUdevice (dev);
}
ASSERT_EQ (tester.init (), 0);
- std::string model_dir (NE_DATADIR);
- model_dir += "/testdata/TRIV235_2TOPS/CONV_2D_000";
-
+ std::string model_dir (BASIC_TEST_MODEL);
uint32_t model_id = 0;
+ /* skip if the test model is not available */
if (tester.loadModel (model_dir, &model_id) != 0)
- /* skip */
return;
EXPECT_GT (tester.run (model_id, true), 0);
EXPECT_NE (tester.run (0, false), 0);
/* invalid model id */
- std::string model_dir (NE_DATADIR);
- model_dir += "/testdata/TRIV235_2TOPS/CONV_2D_000";
-
+ std::string model_dir (BASIC_TEST_MODEL);
uint32_t model_id = 0;
+ /* skip if the test model is not available */
if (tester.loadModel (model_dir, &model_id) != 0)
- /* skip */
return;
EXPECT_NE (tester.run (model_id + 1, true), 0);
TEST (ne_libnpuhost_test, request_decoupled_apis) {
npudev_h dev;
uint32_t modelid;
-
- std::string model_dir (NE_DATADIR);
- model_dir += "/testdata/TRIV235_2TOPS/CONV_2D_000";
-
+ generic_buffer model;
+ std::string model_dir (BASIC_TEST_MODEL);
std::string model_path = model_dir + "/model.tvn";
- off_t model_size = get_file_size (model_path.c_str ());
- if (model_size <= 0)
- /* skip */
+ /* skip if the test model is not available */
+ if (!create_test_model (model_path.c_str (), &model))
return;
- generic_buffer modelfile;
- modelfile.type = BUFFER_FILE;
- modelfile.filepath = model_path.c_str ();
- modelfile.size = model_size;
-
ASSERT_EQ (getNPUdeviceByTypeAny (&dev, NPUCOND_TRIV2_CONN_SOCIP, 2), 0);
- ASSERT_EQ (registerNPUmodel (dev, &modelfile, &modelid), 0);
+ ASSERT_EQ (registerNPUmodel (dev, &model, &modelid), 0);
/* tensor input/output data */
generic_buffers input, output = {0};
TEST (ne_libnpuhost_test, request_get_model) {
npudev_h dev;
uint32_t modelid, modelid2;
-
- std::string model_dir (NE_DATADIR);
- model_dir += "/testdata/TRIV235_2TOPS/CONV_2D_000";
-
+ generic_buffer model;
+ std::string model_dir (BASIC_TEST_MODEL);
std::string model_path = model_dir + "/model.tvn";
+ int req_id;
- off_t model_size = get_file_size (model_path.c_str ());
- if (model_size <= 0)
- /* skip */
+ /* skip if the test model is not available */
+ if (!create_test_model (model_path.c_str (), &model))
return;
- generic_buffer modelfile;
- modelfile.type = BUFFER_FILE;
- modelfile.filepath = model_path.c_str ();
- modelfile.size = model_size;
-
ASSERT_EQ (getNPUdeviceByTypeAny (&dev, NPUCOND_TRIV2_CONN_SOCIP, 2), 0);
- ASSERT_EQ (registerNPUmodel (dev, &modelfile, &modelid), 0);
-
- int req_id;
+ ASSERT_EQ (registerNPUmodel (dev, &model, &modelid), 0);
ASSERT_EQ (createNPU_request (dev, modelid, &req_id), 0);
EXPECT_EQ (getNPU_requestModel (dev, req_id, &modelid2), 0);
ASSERT_EQ (removeNPU_request (dev, req_id), 0);
ASSERT_EQ (unregisterNPUmodel (dev, modelid), 0);
+
putNPUdevice (dev);
}
TEST (ne_libnpuhost_test, request_get_model_n) {
npudev_h dev;
uint32_t modelid;
+ generic_buffer model;
+ std::string model_dir (BASIC_TEST_MODEL);
+ std::string model_path = model_dir + "/model.tvn";
int req_id;
+ /* skip if the test model is not available */
+ if (!create_test_model (model_path.c_str (), &model))
+ return;
+
ASSERT_EQ (getNPUdeviceByTypeAny (&dev, NPUCOND_TRIV2_CONN_SOCIP, 2), 0);
+
/* invalid req_id */
EXPECT_NE (getNPU_requestModel (dev, -1, &modelid), 0);
- std::string model_dir (NE_DATADIR);
- model_dir += "/testdata/TRIV235_2TOPS/CONV_2D_000";
-
- std::string model_path = model_dir + "/model.tvn";
-
- off_t model_size = get_file_size (model_path.c_str ());
- if (model_size <= 0)
- /* skip */
- return;
-
- generic_buffer modelfile;
- modelfile.type = BUFFER_FILE;
- modelfile.filepath = model_path.c_str ();
- modelfile.size = model_size;
-
- ASSERT_EQ (registerNPUmodel (dev, &modelfile, &modelid), 0);
+ ASSERT_EQ (registerNPUmodel (dev, &model, &modelid), 0);
ASSERT_EQ (createNPU_request (dev, modelid, &req_id), 0);
+
/* empty modelid */
EXPECT_NE (getNPU_requestModel (dev, req_id, nullptr), 0);
ASSERT_EQ (removeNPU_request (dev, req_id), 0);
ASSERT_EQ (unregisterNPUmodel (dev, modelid), 0);
+
putNPUdevice (dev);
}