mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
gio/tests/cancellable: fix to still work when running slowly
The test was assuming that all cancelled ops would finish within a certain amount of time, but this often failed under valgrind. Instead, just run the loop until all of the ops have actually finished. https://bugzilla.gnome.org/show_bug.cgi?id=682560
This commit is contained in:
parent
568f737708
commit
17bb9d542c
@ -149,6 +149,8 @@ mock_operation_finish (GAsyncResult *result,
|
|||||||
return data->iterations_done;
|
return data->iterations_done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GMainLoop *loop;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_mock_operation_ready (GObject *source,
|
on_mock_operation_ready (GObject *source,
|
||||||
GAsyncResult *result,
|
GAsyncResult *result,
|
||||||
@ -166,6 +168,9 @@ on_mock_operation_ready (GObject *source,
|
|||||||
|
|
||||||
g_assert_cmpint (iterations_requested, >, iterations_done);
|
g_assert_cmpint (iterations_requested, >, iterations_done);
|
||||||
num_async_operations--;
|
num_async_operations--;
|
||||||
|
|
||||||
|
if (!num_async_operations)
|
||||||
|
g_main_loop_quit (loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -181,7 +186,6 @@ test_cancel_multiple_concurrent (void)
|
|||||||
{
|
{
|
||||||
GCancellable *cancellable;
|
GCancellable *cancellable;
|
||||||
guint i, iterations;
|
guint i, iterations;
|
||||||
GMainLoop *loop;
|
|
||||||
|
|
||||||
cancellable = g_cancellable_new ();
|
cancellable = g_cancellable_new ();
|
||||||
loop = g_main_loop_new (NULL, FALSE);
|
loop = g_main_loop_new (NULL, FALSE);
|
||||||
@ -203,8 +207,7 @@ test_cancel_multiple_concurrent (void)
|
|||||||
g_cancellable_cancel (cancellable);
|
g_cancellable_cancel (cancellable);
|
||||||
g_assert (g_cancellable_is_cancelled (cancellable));
|
g_assert (g_cancellable_is_cancelled (cancellable));
|
||||||
|
|
||||||
/* Wait for two more iterations, and all threads should be cancelled */
|
/* Wait for all operations to be cancelled */
|
||||||
g_timeout_add (WAIT_ITERATION * 2, on_main_loop_timeout_quit, loop);
|
|
||||||
g_main_loop_run (loop);
|
g_main_loop_run (loop);
|
||||||
g_assert_cmpint (num_async_operations, ==, 0);
|
g_assert_cmpint (num_async_operations, ==, 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user