From: Gichan Jang Date: Fri, 6 Aug 2021 05:10:56 +0000 (+0900) Subject: [UTC][nnstreamer][ACR-1647] Add testcases for src callback X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1b651939be2aede1c5e676686cc8a030d8a201c8;p=test%2Ftct%2Fnative%2Fapi.git [UTC][nnstreamer][ACR-1647] Add testcases for src callback Add testcases for src callback. Change-Id: Ic04cebf659db149910aafd3beb526d2e05cd8d0b Signed-off-by: Gichan Jang --- diff --git a/src/utc/nnstreamer/tct-nnstreamer-core_mobile.h b/src/utc/nnstreamer/tct-nnstreamer-core_mobile.h index 4a3bf5cf8..b9a528dde 100755 --- a/src/utc/nnstreamer/tct-nnstreamer-core_mobile.h +++ b/src/utc/nnstreamer/tct-nnstreamer-core_mobile.h @@ -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}, diff --git a/src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h b/src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h index 4a3bf5cf8..b9a528dde 100755 --- a/src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h +++ b/src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h @@ -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}, diff --git a/src/utc/nnstreamer/tct-nnstreamer-core_tv.h b/src/utc/nnstreamer/tct-nnstreamer-core_tv.h index 21f3add6c..a0c7774eb 100755 --- a/src/utc/nnstreamer/tct-nnstreamer-core_tv.h +++ b/src/utc/nnstreamer/tct-nnstreamer-core_tv.h @@ -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}, diff --git a/src/utc/nnstreamer/tct-nnstreamer-core_wearable.h b/src/utc/nnstreamer/tct-nnstreamer-core_wearable.h index 4a3bf5cf8..b9a528dde 100755 --- a/src/utc/nnstreamer/tct-nnstreamer-core_wearable.h +++ b/src/utc/nnstreamer/tct-nnstreamer-core_wearable.h @@ -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}, diff --git a/src/utc/nnstreamer/utc-nnstreamer-pipeline-src.c b/src/utc/nnstreamer/utc-nnstreamer-pipeline-src.c index c3dae49bf..d10935929 100644 --- a/src/utc/nnstreamer/utc-nnstreamer-pipeline-src.c +++ b/src/utc/nnstreamer/utc-nnstreamer-pipeline-src.c @@ -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; +}