[UTC][nnstreamer][ACR-1647] Add testcases for src callback 58/263258/2
authorGichan Jang <gichan2.jang@samsung.com>
Fri, 6 Aug 2021 05:10:56 +0000 (14:10 +0900)
committerGichan Jang <gichan2.jang@samsung.com>
Mon, 30 Aug 2021 08:16:43 +0000 (17:16 +0900)
Add testcases for src callback.

Change-Id: Ic04cebf659db149910aafd3beb526d2e05cd8d0b
Signed-off-by: Gichan Jang <gichan2.jang@samsung.com>
src/utc/nnstreamer/tct-nnstreamer-core_mobile.h
src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h
src/utc/nnstreamer/tct-nnstreamer-core_tv.h
src/utc/nnstreamer/tct-nnstreamer-core_wearable.h
src/utc/nnstreamer/utc-nnstreamer-pipeline-src.c

index 4a3bf5cf8263208a88fa9eb0d98201422e325024..b9a528dde883fc632d2c027fe3340f925388475d 100755 (executable)
@@ -72,8 +72,12 @@ extern int utc_ml_pipeline_src_input_data_p (void);
 extern int utc_ml_pipeline_src_input_data_n (void);
 extern int utc_ml_pipeline_src_get_tensors_info_p (void);
 extern int utc_ml_pipeline_src_get_tensors_info_n (void);
-extern int utc_ml_pipeline_switch_get_handle_p (void);
+extern int utc_ml_pipeline_src_set_event_cb_p (void);
+extern int utc_ml_pipeline_src_set_event_cb_n1 (void);
+extern int utc_ml_pipeline_src_set_event_cb_n2 (void);
+
 
+extern int utc_ml_pipeline_switch_get_handle_p (void);
 extern int utc_ml_pipeline_switch_get_handle_n (void);
 extern int utc_ml_pipeline_switch_release_handle_p (void);
 extern int utc_ml_pipeline_switch_release_handle_n (void);
@@ -355,8 +359,11 @@ testcase tc_array[] = {
   {"utc_ml_pipeline_src_input_data_n", utc_ml_pipeline_src_input_data_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
   {"utc_ml_pipeline_src_get_tensors_info_p", utc_ml_pipeline_src_get_tensors_info_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
   {"utc_ml_pipeline_src_get_tensors_info_n", utc_ml_pipeline_src_get_tensors_info_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
-  {"utc_ml_pipeline_switch_get_handle_p", utc_ml_pipeline_switch_get_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_p", utc_ml_pipeline_src_set_event_cb_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_n1", utc_ml_pipeline_src_set_event_cb_n1, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_n2", utc_ml_pipeline_src_set_event_cb_n2, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
 
+  {"utc_ml_pipeline_switch_get_handle_p", utc_ml_pipeline_switch_get_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_get_handle_n", utc_ml_pipeline_switch_get_handle_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_release_handle_p", utc_ml_pipeline_switch_release_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_release_handle_n", utc_ml_pipeline_switch_release_handle_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
index 4a3bf5cf8263208a88fa9eb0d98201422e325024..b9a528dde883fc632d2c027fe3340f925388475d 100755 (executable)
@@ -72,8 +72,12 @@ extern int utc_ml_pipeline_src_input_data_p (void);
 extern int utc_ml_pipeline_src_input_data_n (void);
 extern int utc_ml_pipeline_src_get_tensors_info_p (void);
 extern int utc_ml_pipeline_src_get_tensors_info_n (void);
-extern int utc_ml_pipeline_switch_get_handle_p (void);
+extern int utc_ml_pipeline_src_set_event_cb_p (void);
+extern int utc_ml_pipeline_src_set_event_cb_n1 (void);
+extern int utc_ml_pipeline_src_set_event_cb_n2 (void);
+
 
+extern int utc_ml_pipeline_switch_get_handle_p (void);
 extern int utc_ml_pipeline_switch_get_handle_n (void);
 extern int utc_ml_pipeline_switch_release_handle_p (void);
 extern int utc_ml_pipeline_switch_release_handle_n (void);
@@ -355,8 +359,11 @@ testcase tc_array[] = {
   {"utc_ml_pipeline_src_input_data_n", utc_ml_pipeline_src_input_data_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
   {"utc_ml_pipeline_src_get_tensors_info_p", utc_ml_pipeline_src_get_tensors_info_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
   {"utc_ml_pipeline_src_get_tensors_info_n", utc_ml_pipeline_src_get_tensors_info_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
-  {"utc_ml_pipeline_switch_get_handle_p", utc_ml_pipeline_switch_get_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_p", utc_ml_pipeline_src_set_event_cb_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_n1", utc_ml_pipeline_src_set_event_cb_n1, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_n2", utc_ml_pipeline_src_set_event_cb_n2, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
 
+  {"utc_ml_pipeline_switch_get_handle_p", utc_ml_pipeline_switch_get_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_get_handle_n", utc_ml_pipeline_switch_get_handle_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_release_handle_p", utc_ml_pipeline_switch_release_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_release_handle_n", utc_ml_pipeline_switch_release_handle_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
index 21f3add6ccbaea5c967969c72edca68fd26fcc37..a0c7774eb1ca19faf94f36b7fa59bd2160177836 100755 (executable)
@@ -72,6 +72,10 @@ extern int utc_ml_pipeline_src_input_data_p (void);
 extern int utc_ml_pipeline_src_input_data_n (void);
 extern int utc_ml_pipeline_src_get_tensors_info_p (void);
 extern int utc_ml_pipeline_src_get_tensors_info_n (void);
+
+extern int utc_ml_pipeline_src_set_event_cb_p (void);
+extern int utc_ml_pipeline_src_set_event_cb_n1 (void);
+extern int utc_ml_pipeline_src_set_event_cb_n2 (void);
 extern int utc_ml_pipeline_switch_get_handle_p (void);
 
 extern int utc_ml_pipeline_switch_get_handle_n (void);
@@ -344,6 +348,10 @@ testcase tc_array[] = {
 
   {"utc_ml_pipeline_src_get_tensors_info_p", utc_ml_pipeline_src_get_tensors_info_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
   {"utc_ml_pipeline_src_get_tensors_info_n", utc_ml_pipeline_src_get_tensors_info_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_p", utc_ml_pipeline_src_set_event_cb_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_n1", utc_ml_pipeline_src_set_event_cb_n1, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_n2", utc_ml_pipeline_src_set_event_cb_n2, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+
   {"utc_ml_pipeline_switch_get_handle_p", utc_ml_pipeline_switch_get_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_get_handle_n", utc_ml_pipeline_switch_get_handle_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_release_handle_p", utc_ml_pipeline_switch_release_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
index 4a3bf5cf8263208a88fa9eb0d98201422e325024..b9a528dde883fc632d2c027fe3340f925388475d 100755 (executable)
@@ -72,8 +72,12 @@ extern int utc_ml_pipeline_src_input_data_p (void);
 extern int utc_ml_pipeline_src_input_data_n (void);
 extern int utc_ml_pipeline_src_get_tensors_info_p (void);
 extern int utc_ml_pipeline_src_get_tensors_info_n (void);
-extern int utc_ml_pipeline_switch_get_handle_p (void);
+extern int utc_ml_pipeline_src_set_event_cb_p (void);
+extern int utc_ml_pipeline_src_set_event_cb_n1 (void);
+extern int utc_ml_pipeline_src_set_event_cb_n2 (void);
+
 
+extern int utc_ml_pipeline_switch_get_handle_p (void);
 extern int utc_ml_pipeline_switch_get_handle_n (void);
 extern int utc_ml_pipeline_switch_release_handle_p (void);
 extern int utc_ml_pipeline_switch_release_handle_n (void);
@@ -355,8 +359,11 @@ testcase tc_array[] = {
   {"utc_ml_pipeline_src_input_data_n", utc_ml_pipeline_src_input_data_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
   {"utc_ml_pipeline_src_get_tensors_info_p", utc_ml_pipeline_src_get_tensors_info_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
   {"utc_ml_pipeline_src_get_tensors_info_n", utc_ml_pipeline_src_get_tensors_info_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
-  {"utc_ml_pipeline_switch_get_handle_p", utc_ml_pipeline_switch_get_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_p", utc_ml_pipeline_src_set_event_cb_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_n1", utc_ml_pipeline_src_set_event_cb_n1, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_set_event_cb_n2", utc_ml_pipeline_src_set_event_cb_n2, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
 
+  {"utc_ml_pipeline_switch_get_handle_p", utc_ml_pipeline_switch_get_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_get_handle_n", utc_ml_pipeline_switch_get_handle_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_release_handle_p", utc_ml_pipeline_switch_release_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
   {"utc_ml_pipeline_switch_release_handle_n", utc_ml_pipeline_switch_release_handle_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
index c3dae49bfb74a248d26167ec39a3024c8f80a239..d10935929c887952e0d3ac133d2e199aedceff1b 100644 (file)
@@ -44,7 +44,7 @@ void utc_nnstreamer_pipeline_src_startup(void)
     return;
   }
 
-  pipeline = g_strdup ("appsrc name=srcx ! other/tensor,dimension=(string)4:1:1:1,type=(string)uint8,framerate=(fraction)0/1 ! tensor_sink");
+  pipeline = g_strdup ("appsrc name=srcx ! other/tensor,dimension=(string)4:1:1:1,type=(string)uint8,framerate=(fraction)0/1 ! tensor_sink name=sinkx");
 
   status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
   status = ml_pipeline_start (handle);
@@ -237,3 +237,129 @@ int utc_ml_pipeline_src_get_tensors_info_n (void)
 
   return 0;
 }
+
+/* @function           test_src_cb_push_dummy
+ * @description Internal function to push dummy into appsrc.
+ */
+
+static void
+test_src_cb_push_dummy (ml_pipeline_src_h src_handle)
+{
+  ml_tensors_data_h data;
+  ml_tensors_info_h info;
+
+  if (ml_pipeline_src_get_tensors_info (src_handle, &info) == ML_ERROR_NONE) {
+    ml_tensors_data_create (info, &data);
+    ml_pipeline_src_input_data (src_handle, data, ML_PIPELINE_BUF_POLICY_AUTO_FREE);
+    ml_tensors_info_destroy (info);
+  }
+}
+
+
+/* @function           test_src_cb_need_data
+ * @description A appsrc callback for src handle in a pipeline
+ */
+static void
+test_src_cb_need_data (ml_pipeline_src_h src_handle, unsigned int length,
+    void *user_data)
+{
+  test_src_cb_push_dummy (src_handle);
+}
+
+/**
+ * @testcase           utc_ml_pipeline_src_set_event_cb_p
+ * @since_tizen                6.5
+ * @description                Test NNStreamer pipeline set src callback
+ */
+int utc_ml_pipeline_src_set_event_cb_p (void)
+{
+  IS_SUPPORT_FEATURE;
+
+  ml_pipeline_sink_h sinkhandle;
+  ml_pipeline_src_callbacks_s callback = { 0, };
+  guint *count_sink;
+
+  callback.need_data = test_src_cb_need_data;
+
+  count_sink = (guint *) g_malloc0 (sizeof (guint));
+  assert_neq (count_sink, NULL);
+
+  status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_pipeline_src_get_handle (handle, "srcx", &srchandle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_pipeline_src_set_event_cb (srchandle, &callback, NULL);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_pipeline_sink_register (
+    handle, "sinkx", test_sink_callback_count, count_sink, &sinkhandle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_pipeline_start (handle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  test_src_cb_push_dummy (srchandle);
+  g_usleep (100000);
+
+  status = ml_pipeline_stop (handle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  assert_gt (*count_sink, 1U);
+
+  status = ml_pipeline_src_release_handle (srchandle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_pipeline_src_release_handle (sinkhandle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  g_free (count_sink);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_ml_pipeline_src_set_event_cb_n1
+ * @since_tizen                6.5
+ * @description                Test NNStreamer pipeline set src callback with invalid param
+ */
+int utc_ml_pipeline_src_set_event_cb_n1 (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_pipeline_src_callbacks_s callback;
+
+  status = ml_pipeline_src_get_handle (handle, "srcx", &srchandle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  /* invalid param */
+  status = ml_pipeline_src_set_event_cb (NULL, &callback, NULL);
+  assert_eq (status, ML_ERROR_INVALID_PARAMETER);
+
+  status = ml_pipeline_src_release_handle (srchandle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_ml_pipeline_src_set_event_cb_n2
+ * @since_tizen                6.5
+ * @description                Test NNStreamer pipeline set src callback with invalid param
+ */
+int utc_ml_pipeline_src_set_event_cb_n2 (void)
+{
+  IS_SUPPORT_FEATURE;
+
+  status = ml_pipeline_src_get_handle (handle, "srcx", &srchandle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  /* invalid param */
+  status = ml_pipeline_src_set_event_cb (srchandle, NULL, NULL);
+  assert_eq (status, ML_ERROR_INVALID_PARAMETER);
+
+  status = ml_pipeline_src_release_handle (srchandle);
+  assert_eq (status, ML_ERROR_NONE);
+
+  return 0;
+}