Commit d4d6cdab authored by Simon McVittie's avatar Simon McVittie

tests: Add the ability to multiply up test timeouts

Tests that brute-force OOM code paths can be rather slow.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=100317Reviewed-by: Philip Withnall's avatarPhilip Withnall <withnall@endlessm.com>
Signed-off-by: Simon McVittie's avatarSimon McVittie <smcv@collabora.com>
(cherry picked from commit 5c91d85f)
parent bd31f268
......@@ -159,7 +159,7 @@ setup (Fixture *f,
const Config *config = context;
/* Some tests are fairly slow, so make the test timeout per-test */
test_timeout_reset ();
test_timeout_reset (1);
f->ctx = test_main_context_get ();
f->ge = NULL;
......
......@@ -202,7 +202,7 @@ setup (Fixture *f,
g_error ("OOM");
/* This can be fairly slow, so make the test timeout per-test */
test_timeout_reset ();
test_timeout_reset (1);
f->n_threads = N_THREADS;
f->n_refs = N_REFS;
......
......@@ -122,7 +122,7 @@ static void
setup (Fixture *f,
gconstpointer data G_GNUC_UNUSED)
{
test_timeout_reset ();
test_timeout_reset (1);
f->ctx = test_main_context_get ();
dbus_error_init (&f->e);
......
......@@ -488,7 +488,7 @@ wrap_abort (int signal)
#endif
static void
set_timeout (void)
set_timeout (guint factor)
{
static guint timeout = 0;
......@@ -500,11 +500,11 @@ set_timeout (void)
if (timeout != 0)
g_source_remove (timeout);
timeout = g_timeout_add_seconds (TIMEOUT, time_out, NULL);
timeout = g_timeout_add_seconds (TIMEOUT * factor, time_out, NULL);
#ifdef G_OS_UNIX
/* The GLib main loop might not be running (we don't use it in every
* test). Die with SIGALRM shortly after if necessary. */
alarm (TIMEOUT + 10);
alarm ((TIMEOUT * factor) + 10);
/* Get a log message and a core dump from the SIGALRM. */
{
......@@ -522,7 +522,7 @@ test_init (int *argcp, char ***argvp)
{
g_test_init (argcp, argvp, NULL);
g_test_bug_base ("https://bugs.freedesktop.org/show_bug.cgi?id=");
set_timeout ();
set_timeout (1);
}
static void
......@@ -536,12 +536,13 @@ report_and_destroy (gpointer p)
}
void
test_timeout_reset (void)
test_timeout_reset (guint factor)
{
GTimer *timer = g_timer_new ();
g_test_message ("Resetting test timeout (reference: %p)", timer);
set_timeout ();
g_test_message ("Resetting test timeout (reference: %p; factor: %u)",
timer, factor);
set_timeout (factor);
g_test_queue_destroy (report_and_destroy, timer);
}
......
......@@ -89,6 +89,6 @@ void test_rmdir_must_exist (const gchar *path);
void test_rmdir_if_exists (const gchar *path);
void test_mkdir (const gchar *path, gint mode);
void test_timeout_reset (void);
void test_timeout_reset (guint factor);
#endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment