summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatricia Muscalu <patricia@axis.com>2016-02-23 15:01:22 +0100
committerSebastian Dröge <sebastian@centricular.com>2016-02-23 17:05:15 +0200
commita6367c59711cbf8811e0f4e170ca1c2ee8abf974 (patch)
tree1146cf8fd8224127b8cd471dcd4fe34b47b141b1
parentf62a9a7eb9fda096fb88c013d6787c28090037a2 (diff)
tests: unit test fixes
Removed port allocation test from the media suite. The port allocation failure is now in the stream suite. rtspserver: Make sure that the media is suspended after the DESCRIBE request before reconfiguring the UDP sinks. rtspclientsink: In the RECORD case we have to set async property to false for the appsink element in the test in order to make sure that the media pipeline doesn't hang in start_preroll(). https://bugzilla.gnome.org/show_bug.cgi?id=757488
-rw-r--r--tests/check/gst/media.c40
-rw-r--r--tests/check/gst/rtspclientsink.c2
-rw-r--r--tests/check/gst/rtspserver.c7
-rw-r--r--tests/check/gst/stream.c65
4 files changed, 72 insertions, 42 deletions
diff --git a/tests/check/gst/media.c b/tests/check/gst/media.c
index c8cdf30..b0ddb19 100644
--- a/tests/check/gst/media.c
+++ b/tests/check/gst/media.c
@@ -298,45 +298,6 @@ GST_START_TEST (test_media_dyn_prepare)
GST_END_TEST;
-GST_START_TEST (test_media_prepare_port_alloc_fail)
-{
- GstRTSPMediaFactory *factory;
- GstRTSPMedia *media;
- GstRTSPUrl *url;
- GstRTSPThreadPool *pool;
- GstRTSPThread *thread;
- GstRTSPAddressPool *addrpool;
-
- pool = gst_rtsp_thread_pool_new ();
-
- factory = gst_rtsp_media_factory_new ();
- fail_unless (gst_rtsp_url_parse ("rtsp://localhost:8554/test",
- &url) == GST_RTSP_OK);
-
- gst_rtsp_media_factory_set_launch (factory,
- "( fakesrc is-live=true ! text/plain ! rtpgstpay name=pay0 )");
-
- media = gst_rtsp_media_factory_construct (factory, url);
- fail_unless (GST_IS_RTSP_MEDIA (media));
-
- addrpool = gst_rtsp_address_pool_new ();
- fail_unless (gst_rtsp_address_pool_add_range (addrpool, "192.168.1.1",
- "192.168.1.1", 6000, 6001, 0));
- gst_rtsp_media_set_address_pool (media, addrpool);
-
- thread = gst_rtsp_thread_pool_get_thread (pool,
- GST_RTSP_THREAD_TYPE_MEDIA, NULL);
- fail_if (gst_rtsp_media_prepare (media, thread));
-
- g_object_unref (media);
- g_object_unref (addrpool);
- gst_rtsp_url_free (url);
- g_object_unref (factory);
- g_object_unref (pool);
-}
-
-GST_END_TEST;
-
GST_START_TEST (test_media_take_pipeline)
{
GstRTSPMediaFactory *factory;
@@ -497,7 +458,6 @@ rtspmedia_suite (void)
tcase_add_test (tc, test_media);
tcase_add_test (tc, test_media_prepare);
tcase_add_test (tc, test_media_dyn_prepare);
- tcase_add_test (tc, test_media_prepare_port_alloc_fail);
tcase_add_test (tc, test_media_take_pipeline);
tcase_add_test (tc, test_media_reset);
tcase_add_test (tc, test_media_multidyn_prepare);
diff --git a/tests/check/gst/rtspclientsink.c b/tests/check/gst/rtspclientsink.c
index 584422b..dd7f90f 100644
--- a/tests/check/gst/rtspclientsink.c
+++ b/tests/check/gst/rtspclientsink.c
@@ -155,7 +155,7 @@ GST_START_TEST (test_record)
gint i;
mfactory =
- start_record_server ("( rtppcmadepay name=depay0 ! appsink name=sink )");
+ start_record_server ("( rtppcmadepay name=depay0 ! appsink name=sink async=false )");
g_signal_connect (mfactory, "media-constructed",
G_CALLBACK (media_constructed_cb), &server_sink);
diff --git a/tests/check/gst/rtspserver.c b/tests/check/gst/rtspserver.c
index ec66f99..d21bf04 100644
--- a/tests/check/gst/rtspserver.c
+++ b/tests/check/gst/rtspserver.c
@@ -169,6 +169,8 @@ start_server (void)
pool = gst_rtsp_address_pool_new ();
gst_rtsp_address_pool_add_range (pool,
"224.3.0.0", "224.3.0.10", 5000, 5010, 16);
+ gst_rtsp_address_pool_add_range (pool, GST_RTSP_ADDRESS_POOL_ANY_IPV4,
+ GST_RTSP_ADDRESS_POOL_ANY_IPV4, 6000, 6010, 0);
gst_rtsp_media_factory_set_address_pool (factory, pool);
gst_object_unref (pool);
@@ -1511,6 +1513,9 @@ GST_START_TEST (test_play_specific_server_port)
mounts = gst_rtsp_server_get_mount_points (server);
factory = gst_rtsp_media_factory_new ();
+ /* we have to suspend media after SDP in order to make sure that
+ * we can reconfigure UDP sink with new UDP ports */
+ gst_rtsp_media_factory_set_suspend_mode (factory, GST_RTSP_SUSPEND_MODE_RESET);
pool = gst_rtsp_address_pool_new ();
gst_rtsp_address_pool_add_range (pool, GST_RTSP_ADDRESS_POOL_ANY_IPV4,
GST_RTSP_ADDRESS_POOL_ANY_IPV4, 7770, 7780, 0);
@@ -1744,7 +1749,7 @@ GST_START_TEST (test_record_tcp)
gint i;
mfactory =
- start_record_server ("( rtppcmadepay name=depay0 ! appsink name=sink )");
+ start_record_server ("( rtppcmadepay name=depay0 ! appsink name=sink async=false )");
g_signal_connect (mfactory, "media-constructed",
G_CALLBACK (media_constructed_cb), &server_sink);
diff --git a/tests/check/gst/stream.c b/tests/check/gst/stream.c
index 582e674..26353b1 100644
--- a/tests/check/gst/stream.c
+++ b/tests/check/gst/stream.c
@@ -29,9 +29,11 @@ GST_START_TEST (test_get_sockets)
GstRTSPStream *stream;
GstBin *bin;
GstElement *rtpbin;
+ GstRTSPAddressPool *pool;
GSocket *socket;
gboolean have_ipv4;
gboolean have_ipv6;
+ GstRTSPTransport *tr;
srcpad = gst_pad_new ("testsrcpad", GST_PAD_SRC);
fail_unless (srcpad != NULL);
@@ -48,8 +50,21 @@ GST_START_TEST (test_get_sockets)
fail_unless (bin != NULL);
fail_unless (gst_bin_add (bin, rtpbin));
+ /* configure address pool for IPv4 and IPv6 unicast addresses */
+ pool = gst_rtsp_address_pool_new ();
+ fail_unless (gst_rtsp_address_pool_add_range (pool, GST_RTSP_ADDRESS_POOL_ANY_IPV4,
+ GST_RTSP_ADDRESS_POOL_ANY_IPV4, 50000, 60000, 0));
+ fail_unless (gst_rtsp_address_pool_add_range (pool, GST_RTSP_ADDRESS_POOL_ANY_IPV6,
+ GST_RTSP_ADDRESS_POOL_ANY_IPV6, 50000, 60000, 0));
+ gst_rtsp_stream_set_address_pool (stream, pool);
+
fail_unless (gst_rtsp_stream_join_bin (stream, bin, rtpbin, GST_STATE_NULL));
+ gst_rtsp_transport_new (&tr);
+ tr->lower_transport = GST_RTSP_LOWER_TRANS_UDP;
+ fail_unless (gst_rtsp_stream_allocate_udp_sockets (stream, G_SOCKET_FAMILY_IPV4,
+ tr, FALSE));
+
socket = gst_rtsp_stream_get_rtp_socket (stream, G_SOCKET_FAMILY_IPV4);
have_ipv4 = (socket != NULL);
if (have_ipv4) {
@@ -85,6 +100,9 @@ GST_START_TEST (test_get_sockets)
/* check that at least one family is available */
fail_unless (have_ipv4 || have_ipv6);
+ gst_rtsp_transport_free (tr);
+ g_object_unref (pool);
+
fail_unless (gst_rtsp_stream_leave_bin (stream, bin, rtpbin));
gst_object_unref (bin);
@@ -93,6 +111,52 @@ GST_START_TEST (test_get_sockets)
GST_END_TEST;
+GST_START_TEST (test_allocate_udp_ports_fail)
+{
+ GstPad *srcpad;
+ GstElement *pay;
+ GstRTSPStream *stream;
+ GstBin *bin;
+ GstElement *rtpbin;
+ GstRTSPAddressPool *pool;
+ GstRTSPTransport *tr;
+
+ srcpad = gst_pad_new ("testsrcpad", GST_PAD_SRC);
+ fail_unless (srcpad != NULL);
+ gst_pad_set_active (srcpad, TRUE);
+ pay = gst_element_factory_make ("rtpgstpay", "testpayloader");
+ fail_unless (pay != NULL);
+ stream = gst_rtsp_stream_new (0, pay, srcpad);
+ fail_unless (stream != NULL);
+ gst_object_unref (pay);
+ gst_object_unref (srcpad);
+ rtpbin = gst_element_factory_make ("rtpbin", "testrtpbin");
+ fail_unless (rtpbin != NULL);
+ bin = GST_BIN (gst_bin_new ("testbin"));
+ fail_unless (bin != NULL);
+ fail_unless (gst_bin_add (bin, rtpbin));
+
+ pool = gst_rtsp_address_pool_new ();
+ fail_unless (gst_rtsp_address_pool_add_range (pool, "192.168.1.1",
+ "192.168.1.1", 6000, 6001, 0));
+ gst_rtsp_stream_set_address_pool (stream, pool);
+
+ fail_unless (gst_rtsp_stream_join_bin (stream, bin, rtpbin, GST_STATE_NULL));
+
+ gst_rtsp_transport_new (&tr);
+ tr->lower_transport = GST_RTSP_LOWER_TRANS_UDP;
+ fail_if (gst_rtsp_stream_allocate_udp_sockets (stream, G_SOCKET_FAMILY_IPV4,
+ tr, FALSE));
+
+ gst_rtsp_transport_free (tr);
+ g_object_unref (pool);
+ fail_unless (gst_rtsp_stream_leave_bin (stream, bin, rtpbin));
+ gst_object_unref (bin);
+ gst_object_unref (stream);
+}
+
+GST_END_TEST;
+
GST_START_TEST (test_get_multicast_address)
{
GstPad *srcpad;
@@ -164,6 +228,7 @@ rtspstream_suite (void)
suite_add_tcase (s, tc);
tcase_add_test (tc, test_get_sockets);
+ tcase_add_test (tc, test_allocate_udp_ports_fail);
tcase_add_test (tc, test_get_multicast_address);
return s;