From 5af733210438aef493008b92ef5857a27e952596 Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Wed, 16 Sep 2015 18:40:59 +0200 Subject: [PATCH] tests/proxy-continuous: Server chunks can be different from client ones https://bugzilla.gnome.org/show_bug.cgi?id=755124 --- tests/proxy-continuous.c | 52 ++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/tests/proxy-continuous.c b/tests/proxy-continuous.c index 9395cd28cc8f..5be64fa696b5 100644 --- a/tests/proxy-continuous.c +++ b/tests/proxy-continuous.c @@ -32,26 +32,31 @@ static int errors = 0; static GMainLoop *loop = NULL; #define NUM_CHUNKS 20 -static int server_count = 0; -static gint client_count = 0; +#define SIZE_CHUNK 4 +static guint8 server_count = 0; +static guint8 client_count = 0; static SoupServer *server; static gboolean send_chunks (gpointer user_data) { SoupMessage *msg = SOUP_MESSAGE (user_data); - char *s; SoupBuffer *buf; + guint i; + guint8 data[SIZE_CHUNK]; - s = g_strdup_printf ("%d %d %d %d\n", - server_count, server_count, - server_count, server_count); - buf = soup_buffer_new (SOUP_MEMORY_TAKE, s, strlen (s)); + for (i = 0; i < SIZE_CHUNK; i++) + { + data[i] = server_count; + server_count++; + } + + buf = soup_buffer_new (SOUP_MEMORY_COPY, data, SIZE_CHUNK); soup_message_body_append_buffer (msg->response_body, buf); soup_server_unpause_message (server, msg); - if (++server_count == NUM_CHUNKS) + if (server_count == NUM_CHUNKS * SIZE_CHUNK) { soup_message_body_complete (msg->response_body); return FALSE; @@ -71,7 +76,6 @@ server_callback (SoupServer *server, SoupMessage *msg, SOUP_ENCODING_CHUNKED); soup_server_pause_message (server, msg); - server_count = 1; g_idle_add (send_chunks, msg); } } @@ -84,7 +88,7 @@ _call_continuous_cb (RestProxyCall *call, GObject *weak_object, gpointer userdata) { - gint a = 0, b = 0, c = 0, d = 0; + guint i; if (error) { @@ -102,7 +106,7 @@ _call_continuous_cb (RestProxyCall *call, if (buf == NULL && len == 0) { - if (client_count != NUM_CHUNKS) + if (client_count < NUM_CHUNKS * SIZE_CHUNK) { g_printerr ("stream ended prematurely\n"); errors++; @@ -110,25 +114,19 @@ _call_continuous_cb (RestProxyCall *call, goto out; } - if (sscanf (buf, "%d %d %d %d\n", &a, &b, &c, &d) != 4) + for (i = 0; i < len; i++) { - g_printerr ("stream data not formatted as expected\n"); - errors++; - goto out; - } + if (buf[i] != client_count) + { + g_printerr ("stream data not as expected (got %d, expected %d)\n", + (gint) buf[i], client_count); + errors++; + goto out; + } - if (a != client_count || - b != client_count || - c != client_count || - d != client_count) - { - g_printerr ("stream data not as expected (got %d %d %d %d, expected %d)\n", - a, b, c, d, client_count); - errors++; - goto out; + client_count++; } - client_count++; return; out: g_main_loop_quit (loop); @@ -141,8 +139,6 @@ stream_test (RestProxy *proxy) RestProxyCall *call; GError *error; - client_count = 1; - call = rest_proxy_new_call (proxy); rest_proxy_call_set_function (call, "stream"); -- 2.1.0