summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@collabora.com>2017-11-27 19:14:23 +0000
committerSimon McVittie <smcv@collabora.com>2017-12-04 11:52:55 +0000
commit5c91d85f3ed462dac1e011aab216c9021e826773 (patch)
tree83c8955852e16a1622b3354b99b2d538199c5405
parentf59b4f9226c0134f91fc1eefebef6e7a816f85cd (diff)
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=100317 Reviewed-by: Philip Withnall <withnall@endlessm.com> Signed-off-by: Simon McVittie <smcv@collabora.com>
-rw-r--r--test/dbus-daemon.c2
-rw-r--r--test/internals/refs.c2
-rw-r--r--test/relay.c2
-rw-r--r--test/test-utils-glib.c15
-rw-r--r--test/test-utils-glib.h2
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;