"data read '%s' differs from '%s'", data, ref); \
} G_STMT_END;
+#define fail_unless_num_handles(sink,num) \
+G_STMT_START { \
+ gint handles; \
+ g_object_get (sink, "num-fds", &handles, NULL); \
+ fail_unless (handles == num, \
+ "sink has %d handles instead of expected %d", handles, num); \
+} G_STMT_END;
+
/* from the given two data buffers, create two streamheader buffers and
* some caps that match it, and store them in the given pointers
* returns one ref to each of the buffers and the caps */
ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC);
/* add the first client */
+ fail_unless_num_handles (sink, 0);
g_signal_emit_by_name (sink, "add", pfd1[1]);
+ fail_unless_num_handles (sink, 1);
/* create caps with streamheader, set the caps, and push the IN_CAPS
* buffers */
/* now add the second client */
g_signal_emit_by_name (sink, "add", pfd2[1]);
+ fail_unless_num_handles (sink, 2);
//FIXME:
//fail_if_can_read ("second client", pfd2[0]);
GST_DEBUG ("cleaning up multifdsink");
+ fail_unless_num_handles (sink, 2);
g_signal_emit_by_name (sink, "remove", pfd1[1]);
+ fail_unless_num_handles (sink, 1);
g_signal_emit_by_name (sink, "remove", pfd2[1]);
+ fail_unless_num_handles (sink, 0);
ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS);
cleanup_multifdsink (sink);
fail_if (buffers_queued != 7);
/* now add the clients */
+ fail_unless_num_handles (sink, 0);
g_signal_emit_by_name (sink, "add", pfd1[1]);
+ fail_unless_num_handles (sink, 1);
g_signal_emit_by_name (sink, "add_full", pfd2[1], GST_SYNC_METHOD_BURST,
GST_FORMAT_BYTES, (guint64) 50, GST_FORMAT_BYTES, (guint64) 200);
g_signal_emit_by_name (sink, "add_full", pfd3[1], GST_SYNC_METHOD_BURST,
GST_FORMAT_BYTES, (guint64) 50, GST_FORMAT_BYTES, (guint64) 50);
+ fail_unless_num_handles (sink, 3);
/* push last buffer to make client fds ready for reading */
for (i = 9; i < 10; i++) {
"data read '%s' differs from '%s'", data, ref); \
} G_STMT_END;
+#define fail_unless_num_handles(sink,num) \
+G_STMT_START { \
+ gint handles; \
+ g_object_get (sink, "num-sockets", &handles, NULL); \
+ fail_unless (handles == num, \
+ "sink has %d handles instead of expected %d", handles, num); \
+} G_STMT_END;
+
GST_START_TEST (test_add_client)
{
GstElement *sink;
ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC);
/* add the first client */
+ fail_unless_num_handles (sink, 0);
g_signal_emit_by_name (sink, "add", socket[0]);
+ fail_unless_num_handles (sink, 1);
/* create caps with streamheader, set the caps, and push the IN_CAPS
* buffers */
/* now add the second client */
g_signal_emit_by_name (sink, "add", socket[2]);
+ fail_unless_num_handles (sink, 2);
//FIXME:
//fail_if_can_read ("second client", socket[3]);
GST_DEBUG ("cleaning up multisocketsink");
+ fail_unless_num_handles (sink, 2);
g_signal_emit_by_name (sink, "remove", socket[0]);
+ fail_unless_num_handles (sink, 1);
g_signal_emit_by_name (sink, "remove", socket[2]);
+ fail_unless_num_handles (sink, 0);
ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS);
cleanup_multisocketsink (sink);
fail_if (buffers_queued != 7);
/* now add the clients */
+ fail_unless_num_handles (sink, 0);
g_signal_emit_by_name (sink, "add", socket[0]);
+ fail_unless_num_handles (sink, 1);
g_signal_emit_by_name (sink, "add_full", socket[2], GST_SYNC_METHOD_BURST,
GST_FORMAT_BYTES, (guint64) 50, GST_FORMAT_BYTES, (guint64) 200);
g_signal_emit_by_name (sink, "add_full", socket[4], GST_SYNC_METHOD_BURST,
GST_FORMAT_BYTES, (guint64) 50, GST_FORMAT_BYTES, (guint64) 50);
+ fail_unless_num_handles (sink, 3);
/* push last buffer to make client fds ready for reading */
for (i = 9; i < 10; i++) {