[UTC][capi-media-webrtc][ACR-1677] Add functions for data channel buffered amount 58/269558/3
authorbackto.kim <backto.kim@samsung.com>
Tue, 18 Jan 2022 07:32:57 +0000 (16:32 +0900)
committerhj kim <backto.kim@samsung.com>
Sun, 6 Feb 2022 23:46:39 +0000 (23:46 +0000)
Change-Id: Ibf3f065c61e7982b0ca2ecaf05eefd62ae2dc3d1

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 e70a6d79abbf77da9e1fafa49c6cfe92b992c540..cc4278f75a5b426ef7c4c69c73765b5503050a91 100644 (file)
@@ -52,6 +52,10 @@ webrtc_data_channel_get_label
 webrtc_data_channel_send_string
 webrtc_data_channel_send_bytes
 webrtc_get_data
+webrtc_data_channel_get_buffered_amount
+webrtc_data_channel_set_buffered_amount_low_cb
+webrtc_data_channel_get_buffered_amount_low_threshold
+webrtc_data_channel_unset_buffered_amount_low_cb
 webrtc_set_state_changed_cb
 webrtc_unset_state_changed_cb
 webrtc_set_error_cb
index df3a1a467e22728ed35c05bd0fbb2dd4814c1c89..635c7d4202648cb1191603fd5a5d38734db3f813 100644 (file)
@@ -156,6 +156,14 @@ extern int utc_media_webrtc_data_channel_send_bytes_p(void);
 extern int utc_media_webrtc_data_channel_send_bytes_n(void);
 extern int utc_media_webrtc_get_data_p(void);
 extern int utc_media_webrtc_get_data_n(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_p(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_n(void);
+extern int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p(void);
+extern int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n(void);
+extern int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p(void);
+extern int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n(void);
 extern int utc_media_webrtc_set_state_changed_cb_p(void);
 extern int utc_media_webrtc_set_state_changed_cb_n(void);
 extern int utc_media_webrtc_unset_state_changed_cb_p(void);
@@ -360,6 +368,14 @@ testcase tc_array[] = {
        {"utc_media_webrtc_data_channel_send_bytes_n",utc_media_webrtc_data_channel_send_bytes_n,NULL,NULL},
        {"utc_media_webrtc_get_data_p",utc_media_webrtc_get_data_p,NULL,NULL},
        {"utc_media_webrtc_get_data_n",utc_media_webrtc_get_data_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_p",utc_media_webrtc_data_channel_get_buffered_amount_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_n",utc_media_webrtc_data_channel_get_buffered_amount_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p",utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n",utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p",utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n",utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p",utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n",utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n,NULL,NULL},
        {"utc_media_webrtc_set_state_changed_cb_p",utc_media_webrtc_set_state_changed_cb_p,NULL,NULL},
        {"utc_media_webrtc_set_state_changed_cb_n",utc_media_webrtc_set_state_changed_cb_n,NULL,NULL},
        {"utc_media_webrtc_unset_state_changed_cb_p",utc_media_webrtc_unset_state_changed_cb_p,NULL,NULL},
index df3a1a467e22728ed35c05bd0fbb2dd4814c1c89..635c7d4202648cb1191603fd5a5d38734db3f813 100644 (file)
@@ -156,6 +156,14 @@ extern int utc_media_webrtc_data_channel_send_bytes_p(void);
 extern int utc_media_webrtc_data_channel_send_bytes_n(void);
 extern int utc_media_webrtc_get_data_p(void);
 extern int utc_media_webrtc_get_data_n(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_p(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_n(void);
+extern int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p(void);
+extern int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n(void);
+extern int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p(void);
+extern int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n(void);
 extern int utc_media_webrtc_set_state_changed_cb_p(void);
 extern int utc_media_webrtc_set_state_changed_cb_n(void);
 extern int utc_media_webrtc_unset_state_changed_cb_p(void);
@@ -360,6 +368,14 @@ testcase tc_array[] = {
        {"utc_media_webrtc_data_channel_send_bytes_n",utc_media_webrtc_data_channel_send_bytes_n,NULL,NULL},
        {"utc_media_webrtc_get_data_p",utc_media_webrtc_get_data_p,NULL,NULL},
        {"utc_media_webrtc_get_data_n",utc_media_webrtc_get_data_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_p",utc_media_webrtc_data_channel_get_buffered_amount_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_n",utc_media_webrtc_data_channel_get_buffered_amount_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p",utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n",utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p",utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n",utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p",utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n",utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n,NULL,NULL},
        {"utc_media_webrtc_set_state_changed_cb_p",utc_media_webrtc_set_state_changed_cb_p,NULL,NULL},
        {"utc_media_webrtc_set_state_changed_cb_n",utc_media_webrtc_set_state_changed_cb_n,NULL,NULL},
        {"utc_media_webrtc_unset_state_changed_cb_p",utc_media_webrtc_unset_state_changed_cb_p,NULL,NULL},
index df3a1a467e22728ed35c05bd0fbb2dd4814c1c89..635c7d4202648cb1191603fd5a5d38734db3f813 100644 (file)
@@ -156,6 +156,14 @@ extern int utc_media_webrtc_data_channel_send_bytes_p(void);
 extern int utc_media_webrtc_data_channel_send_bytes_n(void);
 extern int utc_media_webrtc_get_data_p(void);
 extern int utc_media_webrtc_get_data_n(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_p(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_n(void);
+extern int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p(void);
+extern int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n(void);
+extern int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p(void);
+extern int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n(void);
 extern int utc_media_webrtc_set_state_changed_cb_p(void);
 extern int utc_media_webrtc_set_state_changed_cb_n(void);
 extern int utc_media_webrtc_unset_state_changed_cb_p(void);
@@ -360,6 +368,14 @@ testcase tc_array[] = {
        {"utc_media_webrtc_data_channel_send_bytes_n",utc_media_webrtc_data_channel_send_bytes_n,NULL,NULL},
        {"utc_media_webrtc_get_data_p",utc_media_webrtc_get_data_p,NULL,NULL},
        {"utc_media_webrtc_get_data_n",utc_media_webrtc_get_data_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_p",utc_media_webrtc_data_channel_get_buffered_amount_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_n",utc_media_webrtc_data_channel_get_buffered_amount_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p",utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n",utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p",utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n",utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p",utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n",utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n,NULL,NULL},
        {"utc_media_webrtc_set_state_changed_cb_p",utc_media_webrtc_set_state_changed_cb_p,NULL,NULL},
        {"utc_media_webrtc_set_state_changed_cb_n",utc_media_webrtc_set_state_changed_cb_n,NULL,NULL},
        {"utc_media_webrtc_unset_state_changed_cb_p",utc_media_webrtc_unset_state_changed_cb_p,NULL,NULL},
index df3a1a467e22728ed35c05bd0fbb2dd4814c1c89..635c7d4202648cb1191603fd5a5d38734db3f813 100644 (file)
@@ -156,6 +156,14 @@ extern int utc_media_webrtc_data_channel_send_bytes_p(void);
 extern int utc_media_webrtc_data_channel_send_bytes_n(void);
 extern int utc_media_webrtc_get_data_p(void);
 extern int utc_media_webrtc_get_data_n(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_p(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_n(void);
+extern int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p(void);
+extern int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p(void);
+extern int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n(void);
+extern int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p(void);
+extern int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n(void);
 extern int utc_media_webrtc_set_state_changed_cb_p(void);
 extern int utc_media_webrtc_set_state_changed_cb_n(void);
 extern int utc_media_webrtc_unset_state_changed_cb_p(void);
@@ -360,6 +368,14 @@ testcase tc_array[] = {
        {"utc_media_webrtc_data_channel_send_bytes_n",utc_media_webrtc_data_channel_send_bytes_n,NULL,NULL},
        {"utc_media_webrtc_get_data_p",utc_media_webrtc_get_data_p,NULL,NULL},
        {"utc_media_webrtc_get_data_n",utc_media_webrtc_get_data_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_p",utc_media_webrtc_data_channel_get_buffered_amount_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_n",utc_media_webrtc_data_channel_get_buffered_amount_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p",utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n",utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p",utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n",utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n,NULL,NULL},
+       {"utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p",utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p,NULL,NULL},
+       {"utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n",utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n,NULL,NULL},
        {"utc_media_webrtc_set_state_changed_cb_p",utc_media_webrtc_set_state_changed_cb_p,NULL,NULL},
        {"utc_media_webrtc_set_state_changed_cb_n",utc_media_webrtc_set_state_changed_cb_n,NULL,NULL},
        {"utc_media_webrtc_unset_state_changed_cb_p",utc_media_webrtc_unset_state_changed_cb_p,NULL,NULL},
index 629c9d03579be1949dbd789ef882f92a96431c14..1fd01803df0be3da14be48fc852ae026864e7fa9 100644 (file)
@@ -31,7 +31,7 @@
 #define TEST_DATA_CHANNEL_LABEL "test data channel"
 #define TEST_STRING_DATA        "test string"
 #define TEST_BUFFER_SIZE        16
-
+#define TEST_BUFFERED_AMOUNT_THRESHOLD 65535
 static GMainLoop *g_mainloop = NULL;
 static int g_timeout_id = 0;
 static Evas_Object *g_win = NULL;
@@ -143,6 +143,10 @@ static void __webrtc_session_description_created_cb(webrtc_h webrtc, const char
        __quit_mainloop();
 }
 
+static void __data_channel_buffered_amount_low_cb(webrtc_data_channel_h channel, void *user_data)
+{
+}
+
 /**
  * @function           utc_media_webrtc_startup_create_win
  * @description                Should be called before a test using a window
@@ -4172,3 +4176,254 @@ int utc_media_webrtc_get_data_n(void)
 
        return 0;
 }
+
+/**
+ * @testcase           utc_media_webrtc_data_channel_get_buffered_amount_p
+ * @since_tizen                7.0
+ * @description                Gets the number of bytes of data currently queued to be sent through the data channel\n
+ *                             - Create a webrtc handle\n
+ *                             - Create a data channel\n
+ *                             - Get buffered amount
+ */
+int utc_media_webrtc_data_channel_get_buffered_amount_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_data_channel_h channel;
+       unsigned int buffered_amount;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_data_channel(webrtc, TEST_DATA_CHANNEL_LABEL, NULL, &channel);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       /* FIXME: Buffered amount should be checked while sending data over the data channel.
+        * But, it's not ready to send data before negotiation success with remote peer.
+        * For now, we don't handle a remote peer, therefore here just check the API usage. */
+       ret = webrtc_data_channel_get_buffered_amount(channel, &buffered_amount);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_destroy_data_channel(channel);
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_data_channel_get_buffered_amount_n
+ * @since_tizen                7.0
+ * @description                Gets the number of bytes of data currently queued to be sent through the data channel\n
+ *                             - Create a webrtc handle\n
+ *                             - Create a data channel\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_data_channel_get_buffered_amount_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_data_channel_h channel;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_data_channel(webrtc, TEST_DATA_CHANNEL_LABEL, NULL, &channel);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_get_buffered_amount(channel, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       webrtc_destroy_data_channel(channel);
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p
+ * @since_tizen                7.0
+ * @description                Sets the threshold at which the buffered amount is considered low and callback function\n
+ *                             - Create a webrtc handle\n
+ *                             - Create a data channel\n
+ *                             - Set the threshold and callback
+ */
+int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_data_channel_h channel;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_data_channel(webrtc, TEST_DATA_CHANNEL_LABEL, NULL, &channel);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_set_buffered_amount_low_cb(channel, TEST_BUFFERED_AMOUNT_THRESHOLD, __data_channel_buffered_amount_low_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_destroy_data_channel(channel);
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n
+ * @since_tizen                7.0
+ * @description                Sets the threshold at which the buffered amount is considered low and callback function\n
+ *                             - Create a webrtc handle\n
+ *                             - Create a data channel\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_data_channel_set_buffered_amount_low_cb_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_data_channel_h channel;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_data_channel(webrtc, TEST_DATA_CHANNEL_LABEL, NULL, &channel);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_set_buffered_amount_low_cb(channel, TEST_BUFFERED_AMOUNT_THRESHOLD, NULL, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       webrtc_destroy_data_channel(channel);
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p
+ * @since_tizen                7.0
+ * @description                Gets the threshold at which the buffered amount is considered low\n
+ *                             - Create a webrtc handle\n
+ *                             - Create a data channel\n
+ *                             - Set the threshold and callback\n
+ *                             - Get the threshold
+ */
+int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_data_channel_h channel;
+       unsigned int threshold;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_data_channel(webrtc, TEST_DATA_CHANNEL_LABEL, NULL, &channel);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_set_buffered_amount_low_cb(channel, TEST_BUFFERED_AMOUNT_THRESHOLD, __data_channel_buffered_amount_low_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_get_buffered_amount_low_threshold(channel, &threshold);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       assert_eq(threshold, TEST_BUFFERED_AMOUNT_THRESHOLD);
+
+       webrtc_destroy_data_channel(channel);
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n
+ * @since_tizen                7.0
+ * @description                Gets the threshold at which the buffered amount is considered low\n
+ *                             - Create a webrtc handle\n
+ *                             - Create a data channel\n
+ *                             - Set the threshold and callback\n
+ *                             - Pass invalid parameter to get negative result
+ */
+int utc_media_webrtc_data_channel_get_buffered_amount_low_threshold_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_data_channel_h channel;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_data_channel(webrtc, TEST_DATA_CHANNEL_LABEL, NULL, &channel);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_set_buffered_amount_low_cb(channel, TEST_BUFFERED_AMOUNT_THRESHOLD, __data_channel_buffered_amount_low_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_get_buffered_amount_low_threshold(channel, NULL);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_PARAMETER);
+
+       webrtc_destroy_data_channel(channel);
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p
+ * @since_tizen                7.0
+ * @description                Unsets the data channel buffered amount low callback function\n
+ *                             - Create a webrtc handle\n
+ *                             - Create a data channel\n
+ *                             - Set the threshold and callback\n
+ *                             - Unset the callback
+ */
+int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_p(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_data_channel_h channel;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_data_channel(webrtc, TEST_DATA_CHANNEL_LABEL, NULL, &channel);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_set_buffered_amount_low_cb(channel, TEST_BUFFERED_AMOUNT_THRESHOLD, __data_channel_buffered_amount_low_cb, NULL);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_unset_buffered_amount_low_cb(channel);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       webrtc_destroy_data_channel(channel);
+       webrtc_destroy(webrtc);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n
+ * @since_tizen                7.0
+ * @description                Unsets the data channel buffered amount low callback function\n
+ *                             - Create a webrtc handle\n
+ *                             - Create a data channel\n
+ *                             - Unset the callback without setting it to get negative result
+ */
+int utc_media_webrtc_data_channel_unset_buffered_amount_low_cb_n(void)
+{
+       int ret;
+       webrtc_h webrtc;
+       webrtc_data_channel_h channel;
+
+       ret = webrtc_create(&webrtc);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_create_data_channel(webrtc, TEST_DATA_CHANNEL_LABEL, NULL, &channel);
+       assert_eq(ret, WEBRTC_ERROR_NONE);
+
+       ret = webrtc_data_channel_unset_buffered_amount_low_cb(channel);
+       assert_eq(ret, WEBRTC_ERROR_INVALID_OPERATION);
+
+       webrtc_destroy_data_channel(channel);
+       webrtc_destroy(webrtc);
+
+       return 0;
+}