From: Sangchul Lee Date: Mon, 6 Sep 2021 09:09:18 +0000 (+0900) Subject: [UTC][capi-media-webrtc][ACR-1660] Add asynchronous functions for creating offer... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=933e69c71a2a509caf862fde1ce2eab266f68c3b;p=test%2Ftct%2Fnative%2Fapi.git [UTC][capi-media-webrtc][ACR-1660] Add asynchronous functions for creating offer and answer Change-Id: Ic22dc86b4d8780b8a47507021738229bb23c5704 Signed-off-by: Sangchul Lee --- diff --git a/src/utc/webrtc/public.list b/src/utc/webrtc/public.list index 9b20441a5..c49e78e93 100644 --- a/src/utc/webrtc/public.list +++ b/src/utc/webrtc/public.list @@ -32,6 +32,8 @@ webrtc_set_ice_transport_policy webrtc_get_ice_transport_policy webrtc_create_offer webrtc_create_answer +webrtc_create_offer_async +webrtc_create_answer_async webrtc_set_local_description webrtc_set_remote_description webrtc_add_ice_candidate diff --git a/src/utc/webrtc/tct-webrtc-core_mobile.h b/src/utc/webrtc/tct-webrtc-core_mobile.h index 5f164363c..5f84198a0 100644 --- a/src/utc/webrtc/tct-webrtc-core_mobile.h +++ b/src/utc/webrtc/tct-webrtc-core_mobile.h @@ -102,6 +102,13 @@ extern int utc_media_webrtc_create_answer_p(void); extern int utc_media_webrtc_create_answer_n1(void); extern int utc_media_webrtc_create_answer_n2(void); extern int utc_media_webrtc_create_answer_n3(void); +extern int utc_media_webrtc_create_offer_async_p(void); +extern int utc_media_webrtc_create_offer_async_n1(void); +extern int utc_media_webrtc_create_offer_async_n2(void); +extern int utc_media_webrtc_create_answer_async_p(void); +extern int utc_media_webrtc_create_answer_async_n1(void); +extern int utc_media_webrtc_create_answer_async_n2(void); +extern int utc_media_webrtc_create_answer_async_n3(void); extern int utc_media_webrtc_set_local_description_p(void); extern int utc_media_webrtc_set_local_description_n(void); extern int utc_media_webrtc_set_remote_description_p(void); @@ -281,6 +288,13 @@ testcase tc_array[] = { {"utc_media_webrtc_create_answer_n1",utc_media_webrtc_create_answer_n1,NULL,NULL}, {"utc_media_webrtc_create_answer_n2",utc_media_webrtc_create_answer_n2,NULL,NULL}, {"utc_media_webrtc_create_answer_n3",utc_media_webrtc_create_answer_n3,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_p",utc_media_webrtc_create_offer_async_p,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_n1",utc_media_webrtc_create_offer_async_n1,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_n2",utc_media_webrtc_create_offer_async_n2,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_p",utc_media_webrtc_create_answer_async_p,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n1",utc_media_webrtc_create_answer_async_n1,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n2",utc_media_webrtc_create_answer_async_n2,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n3",utc_media_webrtc_create_answer_async_n3,NULL,NULL}, {"utc_media_webrtc_set_local_description_p",utc_media_webrtc_set_local_description_p,NULL,NULL}, {"utc_media_webrtc_set_local_description_n",utc_media_webrtc_set_local_description_n,NULL,NULL}, {"utc_media_webrtc_set_remote_description_p",utc_media_webrtc_set_remote_description_p,NULL,NULL}, diff --git a/src/utc/webrtc/tct-webrtc-core_tizeniot.h b/src/utc/webrtc/tct-webrtc-core_tizeniot.h index 5f164363c..5f84198a0 100644 --- a/src/utc/webrtc/tct-webrtc-core_tizeniot.h +++ b/src/utc/webrtc/tct-webrtc-core_tizeniot.h @@ -102,6 +102,13 @@ extern int utc_media_webrtc_create_answer_p(void); extern int utc_media_webrtc_create_answer_n1(void); extern int utc_media_webrtc_create_answer_n2(void); extern int utc_media_webrtc_create_answer_n3(void); +extern int utc_media_webrtc_create_offer_async_p(void); +extern int utc_media_webrtc_create_offer_async_n1(void); +extern int utc_media_webrtc_create_offer_async_n2(void); +extern int utc_media_webrtc_create_answer_async_p(void); +extern int utc_media_webrtc_create_answer_async_n1(void); +extern int utc_media_webrtc_create_answer_async_n2(void); +extern int utc_media_webrtc_create_answer_async_n3(void); extern int utc_media_webrtc_set_local_description_p(void); extern int utc_media_webrtc_set_local_description_n(void); extern int utc_media_webrtc_set_remote_description_p(void); @@ -281,6 +288,13 @@ testcase tc_array[] = { {"utc_media_webrtc_create_answer_n1",utc_media_webrtc_create_answer_n1,NULL,NULL}, {"utc_media_webrtc_create_answer_n2",utc_media_webrtc_create_answer_n2,NULL,NULL}, {"utc_media_webrtc_create_answer_n3",utc_media_webrtc_create_answer_n3,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_p",utc_media_webrtc_create_offer_async_p,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_n1",utc_media_webrtc_create_offer_async_n1,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_n2",utc_media_webrtc_create_offer_async_n2,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_p",utc_media_webrtc_create_answer_async_p,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n1",utc_media_webrtc_create_answer_async_n1,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n2",utc_media_webrtc_create_answer_async_n2,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n3",utc_media_webrtc_create_answer_async_n3,NULL,NULL}, {"utc_media_webrtc_set_local_description_p",utc_media_webrtc_set_local_description_p,NULL,NULL}, {"utc_media_webrtc_set_local_description_n",utc_media_webrtc_set_local_description_n,NULL,NULL}, {"utc_media_webrtc_set_remote_description_p",utc_media_webrtc_set_remote_description_p,NULL,NULL}, diff --git a/src/utc/webrtc/tct-webrtc-core_tv.h b/src/utc/webrtc/tct-webrtc-core_tv.h index 5f164363c..5f84198a0 100644 --- a/src/utc/webrtc/tct-webrtc-core_tv.h +++ b/src/utc/webrtc/tct-webrtc-core_tv.h @@ -102,6 +102,13 @@ extern int utc_media_webrtc_create_answer_p(void); extern int utc_media_webrtc_create_answer_n1(void); extern int utc_media_webrtc_create_answer_n2(void); extern int utc_media_webrtc_create_answer_n3(void); +extern int utc_media_webrtc_create_offer_async_p(void); +extern int utc_media_webrtc_create_offer_async_n1(void); +extern int utc_media_webrtc_create_offer_async_n2(void); +extern int utc_media_webrtc_create_answer_async_p(void); +extern int utc_media_webrtc_create_answer_async_n1(void); +extern int utc_media_webrtc_create_answer_async_n2(void); +extern int utc_media_webrtc_create_answer_async_n3(void); extern int utc_media_webrtc_set_local_description_p(void); extern int utc_media_webrtc_set_local_description_n(void); extern int utc_media_webrtc_set_remote_description_p(void); @@ -281,6 +288,13 @@ testcase tc_array[] = { {"utc_media_webrtc_create_answer_n1",utc_media_webrtc_create_answer_n1,NULL,NULL}, {"utc_media_webrtc_create_answer_n2",utc_media_webrtc_create_answer_n2,NULL,NULL}, {"utc_media_webrtc_create_answer_n3",utc_media_webrtc_create_answer_n3,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_p",utc_media_webrtc_create_offer_async_p,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_n1",utc_media_webrtc_create_offer_async_n1,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_n2",utc_media_webrtc_create_offer_async_n2,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_p",utc_media_webrtc_create_answer_async_p,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n1",utc_media_webrtc_create_answer_async_n1,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n2",utc_media_webrtc_create_answer_async_n2,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n3",utc_media_webrtc_create_answer_async_n3,NULL,NULL}, {"utc_media_webrtc_set_local_description_p",utc_media_webrtc_set_local_description_p,NULL,NULL}, {"utc_media_webrtc_set_local_description_n",utc_media_webrtc_set_local_description_n,NULL,NULL}, {"utc_media_webrtc_set_remote_description_p",utc_media_webrtc_set_remote_description_p,NULL,NULL}, diff --git a/src/utc/webrtc/tct-webrtc-core_wearable.h b/src/utc/webrtc/tct-webrtc-core_wearable.h index 5f164363c..5f84198a0 100644 --- a/src/utc/webrtc/tct-webrtc-core_wearable.h +++ b/src/utc/webrtc/tct-webrtc-core_wearable.h @@ -102,6 +102,13 @@ extern int utc_media_webrtc_create_answer_p(void); extern int utc_media_webrtc_create_answer_n1(void); extern int utc_media_webrtc_create_answer_n2(void); extern int utc_media_webrtc_create_answer_n3(void); +extern int utc_media_webrtc_create_offer_async_p(void); +extern int utc_media_webrtc_create_offer_async_n1(void); +extern int utc_media_webrtc_create_offer_async_n2(void); +extern int utc_media_webrtc_create_answer_async_p(void); +extern int utc_media_webrtc_create_answer_async_n1(void); +extern int utc_media_webrtc_create_answer_async_n2(void); +extern int utc_media_webrtc_create_answer_async_n3(void); extern int utc_media_webrtc_set_local_description_p(void); extern int utc_media_webrtc_set_local_description_n(void); extern int utc_media_webrtc_set_remote_description_p(void); @@ -281,6 +288,13 @@ testcase tc_array[] = { {"utc_media_webrtc_create_answer_n1",utc_media_webrtc_create_answer_n1,NULL,NULL}, {"utc_media_webrtc_create_answer_n2",utc_media_webrtc_create_answer_n2,NULL,NULL}, {"utc_media_webrtc_create_answer_n3",utc_media_webrtc_create_answer_n3,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_p",utc_media_webrtc_create_offer_async_p,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_n1",utc_media_webrtc_create_offer_async_n1,NULL,NULL}, + {"utc_media_webrtc_create_offer_async_n2",utc_media_webrtc_create_offer_async_n2,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_p",utc_media_webrtc_create_answer_async_p,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n1",utc_media_webrtc_create_answer_async_n1,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n2",utc_media_webrtc_create_answer_async_n2,NULL,NULL}, + {"utc_media_webrtc_create_answer_async_n3",utc_media_webrtc_create_answer_async_n3,NULL,NULL}, {"utc_media_webrtc_set_local_description_p",utc_media_webrtc_set_local_description_p,NULL,NULL}, {"utc_media_webrtc_set_local_description_n",utc_media_webrtc_set_local_description_n,NULL,NULL}, {"utc_media_webrtc_set_remote_description_p",utc_media_webrtc_set_remote_description_p,NULL,NULL}, diff --git a/src/utc/webrtc/utc-media-webrtc.c b/src/utc/webrtc/utc-media-webrtc.c index 564a2a675..26656c253 100644 --- a/src/utc/webrtc/utc-media-webrtc.c +++ b/src/utc/webrtc/utc-media-webrtc.c @@ -132,6 +132,13 @@ static bool __webrtc_turn_server_cb(const char *turn_server, void *user_data) return true; } +static void __webrtc_session_description_created_cb(webrtc_h webrtc, const char *description, void *user_data) +{ + dlog_print(DLOG_DEBUG, "NativeTCT", "[%s:%d] description[%s]", __FUNCTION__, __LINE__, description); + + __quit_mainloop(); +} + /** * @function utc_media_webrtc_startup_create_win * @description Should be called before a test using a window @@ -2019,7 +2026,7 @@ int utc_media_webrtc_get_display_visible_p(void) ret = webrtc_create(&webrtc); assert_eq(ret, WEBRTC_ERROR_NONE); - ret = webrtc_add_media_source(webrtc, WEBRTC_MEDIA_SOURCE_TYPE_SCREEN, &id); + ret = webrtc_add_media_source(webrtc, WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST, &id); assert_eq(ret, WEBRTC_ERROR_NONE); ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL); @@ -2686,6 +2693,260 @@ int utc_media_webrtc_create_answer_n3(void) return 0; } +/** + * @testcase utc_media_webrtc_create_offer_async_p + * @since_tizen 6.5 + * @description Creates an offer message asynchronously\n + * - Create a webrtc handle\n + * - Add a media source\n + * - Start the webrtc handle\n + * - Create an offer message asynchronously + */ +int utc_media_webrtc_create_offer_async_p(void) +{ + int ret; + webrtc_h webrtc; + unsigned int id; + + ret = webrtc_create(&webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_add_media_source(webrtc, WEBRTC_MEDIA_SOURCE_TYPE_CAMERA, &id); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_start(webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + __run_mainloop(); + + ret = webrtc_create_offer_async(webrtc, NULL, __webrtc_session_description_created_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + __run_mainloop(); + + webrtc_stop(webrtc); + + webrtc_destroy(webrtc); + + return 0; +} + +/** + * @testcase utc_media_webrtc_create_offer_async_n1 + * @since_tizen 6.5 + * @description Creates an offer message asynchronously\n + * - Create a webrtc handle\n + * - Pass invalid parameter to get negative result + */ +int utc_media_webrtc_create_offer_async_n1(void) +{ + int ret; + webrtc_h webrtc; + + ret = webrtc_create(&webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_create_offer_async(webrtc, NULL, NULL, NULL); + assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER); + + webrtc_destroy(webrtc); + + return 0; +} + +/** + * @testcase utc_media_webrtc_create_offer_async_n2 + * @since_tizen 6.5 + * @description Creates an offer message asynchronously\n + * - Create a webrtc handle\n + * - Create an offer in IDLE state to get negative result + */ +int utc_media_webrtc_create_offer_async_n2(void) +{ + int ret; + webrtc_h webrtc; + + ret = webrtc_create(&webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_create_offer_async(webrtc, NULL, __webrtc_session_description_created_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_INVALID_STATE); + + webrtc_destroy(webrtc); + + return 0; +} + +/** + * @testcase utc_media_webrtc_create_answer_async_p + * @since_tizen 6.5 + * @description Creates an answer message asynchronously\n + * - handle1 : Create a webrtc handle\n + * - handle1 : Add a media source\n + * - handle1 : Start the webrtc handle\n + * - handle1 : Create an offer message\n + * - handle2 : Create a webrtc handle\n + * - handle2 : Start the webrtc handle\n + * - handle2 : Set the remote description\n + * - handle2 : Create an answer message asynchronously + */ +int utc_media_webrtc_create_answer_async_p(void) +{ + int ret; + webrtc_h webrtc; + webrtc_h webrtc2; + unsigned int id; + char *offer; + + /* handle 1: offerer */ + ret = webrtc_create(&webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_add_media_source(webrtc, WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST, &id); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_start(webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + __run_mainloop(); + + ret = webrtc_create_offer(webrtc, NULL, &offer); + assert_eq(ret, WEBRTC_ERROR_NONE); + + dlog_print(DLOG_DEBUG, "NativeTCT", "[%s(%d)] offer[%s]", __FUNCTION__, __LINE__, offer); + + /* handle 2: answerer */ + ret = webrtc_create(&webrtc2); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_set_ice_candidate_cb(webrtc2, __webrtc_ice_candidate_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_set_state_changed_cb(webrtc2, __webrtc_state_changed_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_set_signaling_state_change_cb(webrtc2, __webrtc_signaling_state_change_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_start(webrtc2); + assert_eq(ret, WEBRTC_ERROR_NONE); + + __run_mainloop(); + + ret = webrtc_set_remote_description(webrtc2, offer); + assert_eq(ret, WEBRTC_ERROR_NONE); + + __run_mainloop(); + + ret = webrtc_create_answer_async(webrtc2, NULL, __webrtc_session_description_created_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + __run_mainloop(); + + free(offer); + + webrtc_stop(webrtc); + webrtc_destroy(webrtc); + + webrtc_stop(webrtc2); + webrtc_destroy(webrtc2); + + return 0; +} + +/** + * @testcase utc_media_webrtc_create_answer_async_n1 + * @since_tizen 6.5 + * @description Creates an answer message asynchronously\n + * - Create a webrtc handle\n + * - Pass invalid parameter to get negative result + */ +int utc_media_webrtc_create_answer_async_n1(void) +{ + int ret; + webrtc_h webrtc; + + ret = webrtc_create(&webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_create_answer_async(webrtc, NULL, NULL, NULL); + assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER); + + webrtc_destroy(webrtc); + + return 0; +} + +/** + * @testcase utc_media_webrtc_create_answer_async_n2 + * @since_tizen 6.5 + * @description Creates an answer message asynchronously\n + * - Create a webrtc handle\n + * - Create an answer in IDLE state to get negative result + */ +int utc_media_webrtc_create_answer_async_n2(void) +{ + int ret; + webrtc_h webrtc; + + ret = webrtc_create(&webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_create_answer_async(webrtc, NULL, __webrtc_session_description_created_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_INVALID_STATE); + + webrtc_destroy(webrtc); + + return 0; +} + +/** + * @testcase utc_media_webrtc_create_answer_async_n3 + * @since_tizen 6.5 + * @description Creates an answer message asynchronously\n + * - Create a webrtc handle\n + * - Start the webrtc handle\n + * - Create an answer without setting a remote description to get negative result + */ +int utc_media_webrtc_create_answer_async_n3(void) +{ + int ret; + webrtc_h webrtc; + + ret = webrtc_create(&webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_set_ice_candidate_cb(webrtc, __webrtc_ice_candidate_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_set_state_changed_cb(webrtc, __webrtc_state_changed_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_NONE); + + ret = webrtc_start(webrtc); + assert_eq(ret, WEBRTC_ERROR_NONE); + + __run_mainloop(); + + ret = webrtc_create_answer_async(webrtc, NULL, __webrtc_session_description_created_cb, NULL); + assert_eq(ret, WEBRTC_ERROR_INVALID_STATE); + + webrtc_destroy(webrtc); + + return 0; +} + /** * @testcase utc_media_webrtc_set_local_description_p * @since_tizen 6.5