[UTC][capi-media-webrtc][ACR-1660] Add asynchronous functions for creating offer... 56/263556/4
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 6 Sep 2021 09:09:18 +0000 (18:09 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 17 Sep 2021 05:09:05 +0000 (05:09 +0000)
Change-Id: Ic22dc86b4d8780b8a47507021738229bb23c5704
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
src/utc/webrtc/public.list
src/utc/webrtc/tct-webrtc-core_mobile.h
src/utc/webrtc/tct-webrtc-core_tizeniot.h
src/utc/webrtc/tct-webrtc-core_tv.h
src/utc/webrtc/tct-webrtc-core_wearable.h
src/utc/webrtc/utc-media-webrtc.c

index 9b20441a58f84207bac6e20f8f46801d8182017e..c49e78e938364bbcdf88faad24f9b1451ca28e6b 100644 (file)
@@ -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
index 5f164363c6966ce5eab97510d5d923991c3269bf..5f84198a0422853f72c89c241cb52b1fc8a0f200 100644 (file)
@@ -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},
index 5f164363c6966ce5eab97510d5d923991c3269bf..5f84198a0422853f72c89c241cb52b1fc8a0f200 100644 (file)
@@ -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},
index 5f164363c6966ce5eab97510d5d923991c3269bf..5f84198a0422853f72c89c241cb52b1fc8a0f200 100644 (file)
@@ -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},
index 5f164363c6966ce5eab97510d5d923991c3269bf..5f84198a0422853f72c89c241cb52b1fc8a0f200 100644 (file)
@@ -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},
index 564a2a6759bdddbf7b73c3be878f14a783125b99..26656c253e4710ce429577d5f5ab22479629f0c5 100644 (file)
@@ -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