mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 03:16:17 +01:00
Timeout the test if dbus sevice has not appeared in due time.
The test /gdbus/connection/large_message waits for a dbus name to appear. The dbus name is created by a another process executed in the background. If for some reason this fails, the test will likely wait forever. This will avoid this situation by making the test fail if the dbus service has not appeared after 10 seconds. https://bugzilla.gnome.org/show_bug.cgi?id=698981
This commit is contained in:
parent
4edc2f1a93
commit
c9cc0beb3a
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user