[UnitTest/NPU] Fix the handling of runInput() return values
authorDongju Chae <dongju.chae@samsung.com>
Wed, 29 Jul 2020 06:15:47 +0000 (15:15 +0900)
committer송욱/On-Device Lab(SR)/Staff Engineer/삼성전자 <wook16.song@samsung.com>
Mon, 3 Aug 2020 04:38:00 +0000 (13:38 +0900)
This patch fixes the handling of runInput() return values.
Now, runInput can return 0 or positive values.

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
src/core/npu/NPUdrvAPI_triv.cc
src/core/npu/NPUdrvAPI_triv2.cc
tests/unittests/ne_core_npu_test.cc

index dd4cc18..d0e8930 100644 (file)
@@ -309,7 +309,7 @@ TrinityVisionAPI::deregisterModel (unsigned long long id) const
 /**
  * @brief run inference with the input config
  * @param[in] input_config input configuration for the inference
- * @return 0 if no error. otherwise a negative errno
+ * @return 0 or positive id if no error. otherwise a negative errno
  */
 int
 TrinityVisionAPI::runInput (input_config_t *input_config) const
@@ -325,7 +325,7 @@ TrinityVisionAPI::runInput (input_config_t *input_config) const
   if (ret != 0)
     return -errno;
 
-  return ret;
+  return input_config->task_id;
 }
 
 /**
index 9f9e51c..1f760c1 100644 (file)
@@ -309,7 +309,7 @@ TrinityVision2API::deregisterModel (unsigned long long id) const
 /**
  * @brief run inference with the input config
  * @param[in] input_config input configuration for the inference
- * @return 0 if no error. otherwise a negative errno
+ * @return 0 or positive id if no error. otherwise a negative errno
  */
 int
 TrinityVision2API::runInput (input_config_t *input_config) const
@@ -325,7 +325,7 @@ TrinityVision2API::runInput (input_config_t *input_config) const
   if (ret != 0)
     return -errno;
 
-  return ret;
+  return input_config->task_id;
 }
 
 /**
index 63e79eb..25da12e 100644 (file)
@@ -330,7 +330,7 @@ TEST (ne_core_npu_test, manage_mem_triv2)
 /**
  * @brief manage memory blocks using driver api (negative cases)
  */
-TEST (ne_core_npu_test, manage_mem_tirv_n)
+TEST (ne_core_npu_test, manage_mem_triv_n)
 {
   int num_devices = DriverAPI::getNumDevices (NPUCOND_TRIV_CONN_SOCIP);
   ASSERT_GT (num_devices, 0);
@@ -373,7 +373,7 @@ TEST (ne_core_npu_test, manage_mem_tirv_n)
 /**
  * @brief manage memory blocks using driver api (negative cases)
  */
-TEST (ne_core_npu_test, manage_mem_tirv2_n)
+TEST (ne_core_npu_test, manage_mem_triv2_n)
 {
   int num_devices = DriverAPI::getNumDevices (NPUCOND_TRIV2_CONN_SOCIP);
   ASSERT_GT (num_devices, 0);
@@ -540,7 +540,7 @@ TEST (ne_core_npu_test, run_inference_triv)
   input.dbuf_fd = buffer_dmabuf;
   input.model_id = model.id;
 
-  EXPECT_EQ (api->runInput (&input), 0);
+  EXPECT_GE (api->runInput (&input), 0);
 
   EXPECT_EQ (api->dealloc (model_dmabuf), 0);
   EXPECT_EQ (api->dealloc (buffer_dmabuf), 0);
@@ -591,8 +591,10 @@ TEST (ne_core_npu_test, run_inference_triv2)
   input.dbuf_fd = buffer_dmabuf;
   input.model_id = model.id;
   input.num_segments = 1;
+  input.input_mode = INPUT_CPU;
+  input.output_mode = OUTPUT_CPU_INTR;
 
-  EXPECT_EQ (api->runInput (&input), 0);
+  EXPECT_GE (api->runInput (&input), 0);
   EXPECT_EQ (api->munmap (buf, size), 0);
   EXPECT_EQ (api->dealloc (model_dmabuf), 0);
   EXPECT_EQ (api->dealloc (buffer_dmabuf), 0);
@@ -650,11 +652,13 @@ TEST (ne_core_npu_test, run_inference_async0_triv2)
         input.dbuf_fd = buffer_dmabuf;
         input.model_id = model.id;
         input.num_segments = 1;
+        input.input_mode = INPUT_CPU;
+        input.output_mode = OUTPUT_CPU_INTR;
 
         return api->runInput (&input);
        });
 
-  EXPECT_EQ (f_ret.get(), 0);
+  EXPECT_GE (f_ret.get(), 0);
   EXPECT_EQ (api->munmap (buf, size), 0);
   EXPECT_EQ (api->dealloc (model_dmabuf), 0);
   EXPECT_EQ (api->dealloc (buffer_dmabuf), 0);
@@ -722,8 +726,10 @@ TEST (ne_core_npu_test, run_inference_async1_triv2)
   ASSERT_GE (model.dbuf_fd, 0);
   input.model_id = model.id;
   input.num_segments = 1;
+  input.input_mode = INPUT_CPU;
+  input.output_mode = OUTPUT_CPU_INTR;
 
-  EXPECT_EQ (api->runInput (&input), 0);
+  EXPECT_GE (api->runInput (&input), 0);
   EXPECT_EQ (api->munmap (buf, size), 0);
   EXPECT_EQ (api->dealloc (model.dbuf_fd), 0);
   EXPECT_EQ (api->dealloc (buffer_dmabuf), 0);
@@ -767,6 +773,8 @@ TEST (ne_core_npu_test, run_inference_triv2_n)
   input.model_id = model.id;
   /** failure case: segments information is not properly set */
   input.num_segments = 0;
+  input.input_mode = INPUT_CPU;
+  input.output_mode = OUTPUT_CPU_INTR;
 
   EXPECT_EQ (api->runInput (&input), -EINVAL);
   EXPECT_EQ (api->dealloc (model_dmabuf), 0);