[TEST] Add compatible device list API
authorJiho Chu <jiho.chu@samsung.com>
Tue, 11 Apr 2023 02:46:15 +0000 (11:46 +0900)
committer추지호/SoC Architecture팀(SR)/삼성전자 <jiho.chu@samsung.com>
Tue, 11 Apr 2023 09:32:53 +0000 (18:32 +0900)
This patch adds tests for compatible device list.

Signed-off-by: Jiho Chu <jiho.chu@samsung.com>
tests/unittests/ne_libnpuhost_test.cc

index f88e5bd4dc6efbdcaafc0bd0542ec38fa592739e..9ba526e5281e5e4348a2d57673ebc7f14049e135 100644 (file)
@@ -548,6 +548,122 @@ TEST (ne_libnpuhost_test, get_npumodel_metadata_04_n) {
   ASSERT_EQ (loaded_meta, nullptr);
 }
 
+/**
+ * @brief test model compatability
+ */
+TEST (ne_libnpuhost_test, get_comaptible_devices_23) {
+  size_t num_devices = 0;
+  dev_type *devices = NULL;
+  npubin_meta *model_meta;
+  int ret;
+
+  std::string model_dir (BASIC_TEST_MODEL);
+  std::string model_path = model_dir + "/model.tvn";
+
+  model_meta = getNPUmodel_metadata (model_path.c_str (), true);
+  ASSERT_NE (model_meta, nullptr) << "invalid model path: " << model_path;
+
+  model_meta->npu_version = 0;
+  model_meta->npu_version |= 0x2;
+  model_meta->npu_version |= 0x3 << 8;
+
+  ret = getNPUmodel_compatibleDevices (model_meta, &devices, &num_devices);
+  EXPECT_EQ (ret, 0);
+
+  free (model_meta);
+
+  EXPECT_EQ (num_devices, 2);
+  EXPECT_NE (devices, nullptr);
+  EXPECT_EQ (devices[0], NPUCOND_TRIV23_CONN_UNKNOWN);
+  EXPECT_EQ (devices[1], NPUCOND_TRIV23_CONN_SOCIP);
+
+  free (devices);
+}
+
+/**
+ * @brief test model compatability
+ */
+TEST (ne_libnpuhost_test, get_compatible_devices_24) {
+  size_t num_devices = 0;
+  dev_type *devices = NULL;
+  npubin_meta *model_meta;
+  int ret;
+
+  std::string model_dir (BASIC_TEST_MODEL);
+  std::string model_path = model_dir + "/model.tvn";
+
+  model_meta = getNPUmodel_metadata (model_path.c_str (), true);
+  ASSERT_NE (model_meta, nullptr) << "invalid model path: " << model_path;
+
+  model_meta->npu_version = 0;
+  model_meta->npu_version |= 0x2;
+  model_meta->npu_version |= 0x4 << 8;
+
+  ret = getNPUmodel_compatibleDevices (model_meta, &devices, &num_devices);
+  EXPECT_EQ (ret, 0);
+
+  free (model_meta);
+
+  EXPECT_EQ (num_devices, 2);
+  EXPECT_NE (devices, nullptr);
+  EXPECT_EQ (devices[0], NPUCOND_TRIV24_CONN_UNKNOWN);
+  EXPECT_EQ (devices[1], NPUCOND_TRIV24_CONN_SOCIP);
+
+  free (devices);
+}
+
+/**
+ * @brief test model compatability
+ */
+TEST (ne_libnpuhost_test, get_comaptible_devices_n) {
+  size_t num_devices = 0;
+  dev_type *devices = NULL;
+  npubin_meta *model_meta;
+  int ret;
+
+  std::string model_dir (BASIC_TEST_MODEL);
+  std::string model_path = model_dir + "/model.tvn";
+
+  model_meta = getNPUmodel_metadata (model_path.c_str (), true);
+  ASSERT_NE (model_meta, nullptr) << "invalid model path: " << model_path;
+
+  model_meta->npu_version = 0;
+  model_meta->npu_version |= 0x1;
+  model_meta->npu_version |= 0x4 << 8;
+
+  ret = getNPUmodel_compatibleDevices (model_meta, &devices, &num_devices);
+  EXPECT_NE (ret, 0);
+  EXPECT_EQ (devices, nullptr);
+
+  free (model_meta);
+}
+
+/**
+ * @brief test model compatability
+ */
+TEST (ne_libnpuhost_test, get_comaptible_devices_n_2) {
+  size_t num_devices = 0;
+  dev_type *devices = NULL;
+  npubin_meta *model_meta;
+  int ret;
+
+  std::string model_dir (BASIC_TEST_MODEL);
+  std::string model_path = model_dir + "/model.tvn";
+
+  model_meta = getNPUmodel_metadata (model_path.c_str (), true);
+  ASSERT_NE (model_meta, nullptr) << "invalid model path: " << model_path;
+
+  model_meta->npu_version = 0;
+  model_meta->npu_version |= 0x2;
+  model_meta->npu_version |= 0x2 << 8;
+
+  ret = getNPUmodel_compatibleDevices (model_meta, &devices, &num_devices);
+  EXPECT_NE (ret, 0);
+  EXPECT_EQ (devices, nullptr);
+
+  free (model_meta);
+}
+
 /**
  * @brief test getNPU_deviceStatus()
  */