rtpsession: fix up GHashTable-behavior dependent tests
authorHavard Graff <havard.graff@gmail.com>
Wed, 17 Oct 2018 11:52:20 +0000 (13:52 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 20 Oct 2018 11:32:44 +0000 (12:32 +0100)
GHashTable iteration order changed in recent GLib,
and tests were relying on that.

https://mail.gnome.org/archives/desktop-devel-list/2018-October/msg00016.html

tests/check/elements/rtpsession.c

index 3b44f8e3adefd7845908a7c0bc7bcaf65dbcc51c..8ea9e58c206ee1fd5ca46c6c15e0a199b50cd95a 100644 (file)
@@ -239,6 +239,7 @@ GST_START_TEST (test_multiple_ssrc_rr)
   GstRTCPBuffer rtcp = GST_RTCP_BUFFER_INIT;
   GstRTCPPacket rtcp_packet;
   gint i, j;
+  guint ssrc_match;
 
   guint ssrcs[] = {
     0x01BADBAD,
@@ -269,12 +270,17 @@ GST_START_TEST (test_multiple_ssrc_rr)
   fail_unless_equals_int (G_N_ELEMENTS (ssrcs),
       gst_rtcp_packet_get_rb_count (&rtcp_packet));
 
-  for (j = 0; j < G_N_ELEMENTS (ssrcs); j++) {
+  ssrc_match = 0;
+  for (i = 0; i < G_N_ELEMENTS (ssrcs); i++) {
     guint32 ssrc;
-    gst_rtcp_packet_get_rb (&rtcp_packet, j, &ssrc,
+    gst_rtcp_packet_get_rb (&rtcp_packet, i, &ssrc,
         NULL, NULL, NULL, NULL, NULL, NULL);
-    fail_unless_equals_int (ssrcs[j], ssrc);
+    for (j = 0; j < G_N_ELEMENTS (ssrcs); j++) {
+      if (ssrcs[j] == ssrc)
+        ssrc_match++;
+    }
   }
+  fail_unless_equals_int (G_N_ELEMENTS (ssrcs), ssrc_match);
 
   gst_rtcp_buffer_unmap (&rtcp);
   gst_buffer_unref (out_buf);
@@ -546,7 +552,7 @@ GST_START_TEST (test_internal_sources_timeout)
 
   /* verify SR and RR */
   j = 0;
-  for (i = 0; i < 2; i++) {
+  for (i = 0; i < 5; i++) {
     session_harness_produce_rtcp (h, 1);
     buf = session_harness_pull_rtcp (h);
     g_assert (buf != NULL);
@@ -563,9 +569,8 @@ GST_START_TEST (test_internal_sources_timeout)
       j |= 0x1;
     } else if (rtcp_type == GST_RTCP_TYPE_RR) {
       ssrc = gst_rtcp_packet_rr_get_ssrc (&rtcp_packet);
-      fail_unless (internal_ssrc != ssrc);
-      fail_unless_equals_int (0xDEADBEEF, ssrc);
-      j |= 0x2;
+      if (internal_ssrc != ssrc)
+        j |= 0x2;
     }
     gst_rtcp_buffer_unmap (&rtcp);
     gst_buffer_unref (buf);