diff options
author | Ole André Vadla Ravnås <oleavr@gmail.com> | 2021-05-11 10:52:55 +0200 |
---|---|---|
committer | Ole André Vadla Ravnås <oleavr@gmail.com> | 2021-05-11 10:53:46 +0200 |
commit | a874865807cdd3b27f63e32c9d2675fe31878158 (patch) | |
tree | cc530b978b5416a3b343ee55f5f601c4a10b8123 | |
parent | 92acba267f5f65d604fb847c7de31703bfcc8f9b (diff) | |
download | libnice-a874865807cdd3b27f63e32c9d2675fe31878158.tar.gz |
test-io-stream-pollable: Handle partial reads
-rw-r--r-- | tests/test-io-stream-pollable.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/tests/test-io-stream-pollable.c b/tests/test-io-stream-pollable.c index 3f0a401..4ee1697 100644 --- a/tests/test-io-stream-pollable.c +++ b/tests/test-io-stream-pollable.c @@ -50,6 +50,7 @@ typedef struct { gsize recv_count; gsize *other_recv_count; + gsize recv_offset; gsize send_count; gsize *other_send_count; @@ -67,8 +68,8 @@ read_stream_cb (GObject *pollable_stream, gpointer _user_data) /* Try to receive some data. */ len = g_pollable_input_stream_read_nonblocking ( - G_POLLABLE_INPUT_STREAM (pollable_stream), buf, sizeof (buf), NULL, - &error); + G_POLLABLE_INPUT_STREAM (pollable_stream), buf, + sizeof (buf) - user_data->recv_offset, NULL, &error); if (len == -1) { g_assert_error (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK); @@ -76,12 +77,14 @@ read_stream_cb (GObject *pollable_stream, gpointer _user_data) return TRUE; } - g_assert_cmpint (len, ==, MESSAGE_SIZE); + memset (expected_data, user_data->recv_count + '1', len); + g_assert_cmpmem (buf, len, expected_data, len); - memset (expected_data, user_data->recv_count + '1', sizeof (expected_data)); - g_assert_cmpmem (buf, sizeof (expected_data), expected_data, sizeof (expected_data)); - - user_data->recv_count++; + user_data->recv_offset += len; + if (user_data->recv_offset == MESSAGE_SIZE) { + user_data->recv_offset = 0; + user_data->recv_count++; + } if (user_data->recv_count == 10) { g_main_loop_quit (user_data->read_loop); @@ -167,11 +170,13 @@ int main (void) l_data->send_count = 0; l_data->other_recv_count = &r_data->recv_count; l_data->other_send_count = &r_data->send_count; + l_data->recv_offset = 0; r_data->recv_count = 0; r_data->send_count = 0; r_data->other_recv_count = &l_data->recv_count; r_data->other_send_count = &l_data->send_count; + r_data->recv_offset = 0; run_io_stream_test (30, TRUE, &callbacks, l_data, NULL, r_data, NULL); |