{
guint stream_id;
gpointer tmp;
- guint8 buf[65536];
- gsize buf_len;
- gssize len;
- GError *error = NULL;
-
- g_assert_cmpuint (*recv_count, ==, expected_recv_count);
/* Wait for transmission to complete. */
while (*send_count < expected_recv_count);
tmp = g_object_get_data (G_OBJECT (data->agent), "stream-id");
stream_id = GPOINTER_TO_UINT (tmp);
- buf_len = strlen ("Done");
- memcpy (buf, "Done", buf_len);
- len = nice_agent_send (data->agent, stream_id, 1, buf_len, (gchar *) buf);
- g_assert_cmpint (len, ==, buf_len);
+ /* Can't be certain enough to test for termination on non-reliable streams.
+ * There may be packet losses, etc
+ */
+ if (data->reliable) {
+ guint8 buf[65536];
+ gsize buf_len;
+ gssize len;
+ GError *error = NULL;
+
+ g_assert_cmpuint (*recv_count, >=, expected_recv_count);
- /* Wait for a done packet. */
- buf_len = data->reliable ? strlen ("Done") : sizeof (buf);
- len = nice_agent_recv (data->agent, stream_id, 1, buf, buf_len, NULL,
- &error);
- g_assert_no_error (error);
+ buf_len = strlen ("Done");
+ memcpy (buf, "Done", buf_len);
+ len = nice_agent_send (data->agent, stream_id, 1, buf_len, (gchar *) buf);
+ g_assert_cmpint (len, ==, buf_len);
- g_assert_cmpint (len, ==, strlen ("Done"));
- g_assert_cmpint (memcmp (buf, "Done", strlen ("Done")), ==, 0);
+ /* Wait for a done packet. */
+ len = nice_agent_recv (data->agent, stream_id, 1, buf, buf_len, NULL,
+ &error);
+ g_assert_no_error (error);
- *recv_count = *recv_count + 1;
+ g_assert_cmpint (len, ==, strlen ("Done"));
+ g_assert_cmpint (memcmp (buf, "Done", strlen ("Done")), ==, 0);
+
+ *recv_count = *recv_count + 1;
+ }
/* Remove the stream and run away. */
nice_agent_remove_stream (data->agent, stream_id);
* instead of a single buffer. This consumes @messages. */
static void
validate_received_messages (TestIOStreamThreadData *data, gsize buffer_offset,
- NiceInputMessage **messages, guint n_messages, gint n_valid_messages)
+ NiceInputMessage *messages, guint n_messages, gint n_valid_messages)
{
TestData *test_data = data->user_data;
guint i;
/* Validate the message contents. */
for (i = 0; i < (guint) n_valid_messages; i++) {
- NiceInputMessage *message = &((*messages)[i]);
+ NiceInputMessage *message = &messages[i];
guint j;
gsize total_buf_len = 0;
gsize message_len_remaining = message->length;
for (j = 0; j < (guint) message->n_buffers; j++) {
GInputVector *buffer = &message->buffers[j];
- guint8 *expected_buf;
gsize valid_len;
/* See note above about valid_len. */
total_buf_len += buffer->size;
valid_len = MIN (message_len_remaining, buffer->size);
- expected_buf = g_malloc (buffer->size);
- memset (expected_buf, 0xaa, buffer->size);
- generate_buffer_data (test_data->buffer_data_strategy, buffer_offset,
- expected_buf, valid_len);
- g_assert (memcmp (buffer->buffer, expected_buf, valid_len) == 0);
- g_free (expected_buf);
-
+ /* Only validate buffer content for reliable mode, anything could
+ * be received in UDP mode
+ */
+ if (test_data->reliable) {
+ guint8 *expected_buf;
+
+ expected_buf = g_malloc (buffer->size);
+ memset (expected_buf, 0xaa, buffer->size);
+ generate_buffer_data (test_data->buffer_data_strategy, buffer_offset,
+ expected_buf, valid_len);
+ g_assert_cmpint (memcmp (buffer->buffer, expected_buf, valid_len), ==,
+ 0);
+ g_free (expected_buf);
+ buffer_offset += valid_len;
+ message_len_remaining -= valid_len;
+ }
test_data->received_bytes += valid_len;
- buffer_offset += valid_len;
- message_len_remaining -= valid_len;
g_free (buffer->buffer);
}
g_free (message->buffers);
}
- g_free (*messages);
+ g_free (messages);
}
/* Determine a size for the next transmit buffer, allocate it, and fill it with
g_assert_no_error (error);
/* Check the messages and update the test’s state machine. */
- validate_received_messages (data, test_data->received_bytes, &messages,
+ validate_received_messages (data, test_data->received_bytes, messages,
n_messages, n_valid_messages);
}
g_assert_no_error (error);
/* Check the messages and update the test’s state machine. */
- validate_received_messages (data, test_data->received_bytes, &messages,
+ validate_received_messages (data, test_data->received_bytes, messages,
n_messages, n_valid_messages);
}