* 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,
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);
{
guint watcher_id;
gchar *path;
+ guint timeout_id;
session_bus_up ();
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);