From 356d4a25ca3a5653e04bf3885e9873e927925f9d Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 27 Nov 2017 19:14:23 +0000 Subject: [PATCH 7/9] tests: Add the ability to multiply up test timeouts Tests that brute-force OOM code paths can be rather slow. Signed-off-by: Simon McVittie --- test/dbus-daemon.c | 2 +- test/internals/refs.c | 2 +- test/relay.c | 2 +- test/test-utils-glib.c | 15 ++++++++------- test/test-utils-glib.h | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/test/dbus-daemon.c b/test/dbus-daemon.c index b3039c41..8cada03e 100644 --- a/test/dbus-daemon.c +++ b/test/dbus-daemon.c @@ -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; diff --git a/test/internals/refs.c b/test/internals/refs.c index 15178772..b749acc9 100644 --- a/test/internals/refs.c +++ b/test/internals/refs.c @@ -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; diff --git a/test/relay.c b/test/relay.c index d7c453ab..00e7966a 100644 --- a/test/relay.c +++ b/test/relay.c @@ -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); diff --git a/test/test-utils-glib.c b/test/test-utils-glib.c index 4920e250..48e3e807 100644 --- a/test/test-utils-glib.c +++ b/test/test-utils-glib.c @@ -569,7 +569,7 @@ wrap_abort (int signal) #endif static void -set_timeout (void) +set_timeout (guint factor) { static guint timeout = 0; @@ -581,11 +581,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. */ { @@ -603,7 +603,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 @@ -617,12 +617,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); } diff --git a/test/test-utils-glib.h b/test/test-utils-glib.h index 2c0f9d69..755e8c7c 100644 --- a/test/test-utils-glib.h +++ b/test/test-utils-glib.h @@ -97,7 +97,7 @@ 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); void test_oom (void) _DBUS_GNUC_NORETURN; -- 2.15.0