diff options
-rw-r--r-- | gio/tests/gdbus-connection-slow.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/gio/tests/gdbus-connection-slow.c b/gio/tests/gdbus-connection-slow.c index 889a75eff..e4b79df12 100644 --- a/gio/tests/gdbus-connection-slow.c +++ b/gio/tests/gdbus-connection-slow.c @@ -120,6 +120,18 @@ test_connection_flush (void) * is fragmented when shoved across any transport */ #define LARGE_MESSAGE_STRING_LENGTH (20*1024*1024) +/* the test will fail if the service name has not appeared after this amount of seconds */ +#define LARGE_MESSAGE_TIMEOUT_SECONDS 10 + +static gboolean +large_message_timeout_cb (gpointer data) +{ + (void)data; + + g_error ("Error: timeout waiting for dbus name to appear\n"); + + return FALSE; +} static void large_message_on_name_appeared (GDBusConnection *connection, @@ -133,6 +145,8 @@ large_message_on_name_appeared (GDBusConnection *connection, GVariant *result; guint n; + g_assert (g_source_remove (GPOINTER_TO_UINT (user_data))); + request = g_new (gchar, LARGE_MESSAGE_STRING_LENGTH + 1); for (n = 0; n < LARGE_MESSAGE_STRING_LENGTH; n++) request[n] = '0' + (n%10); @@ -175,6 +189,7 @@ test_connection_large_message (void) { guint watcher_id; gchar *path; + guint timeout_id; session_bus_up (); @@ -183,12 +198,16 @@ test_connection_large_message (void) g_assert (g_spawn_command_line_async (path, NULL)); g_free (path); + timeout_id = g_timeout_add_seconds (LARGE_MESSAGE_TIMEOUT_SECONDS, + large_message_timeout_cb, + NULL); + watcher_id = g_bus_watch_name (G_BUS_TYPE_SESSION, "com.example.TestService", G_BUS_NAME_WATCHER_FLAGS_NONE, large_message_on_name_appeared, large_message_on_name_vanished, - NULL, /* user_data */ + GUINT_TO_POINTER (timeout_id), /* user_data */ NULL); /* GDestroyNotify */ g_main_loop_run (loop); g_bus_unwatch_name (watcher_id); |