summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@collabora.com>2017-11-27 19:14:23 +0000
committerSimon McVittie <smcv@collabora.com>2018-02-06 19:14:27 +0000
commitd4d6cdab994f99d4e9613a1ee0c8ec6bebec3f1c (patch)
tree072397e5ea878c37209749beb02ce6f8be6a7707
parentbd31f268e2531029ca3f3586b0a1a68b8e82171b (diff)
downloaddbus-d4d6cdab994f99d4e9613a1ee0c8ec6bebec3f1c.tar.gz
dbus-d4d6cdab994f99d4e9613a1ee0c8ec6bebec3f1c.tar.bz2
dbus-d4d6cdab994f99d4e9613a1ee0c8ec6bebec3f1c.zip
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> (cherry picked from commit 5c91d85f3ed462dac1e011aab216c9021e826773)
-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 f9d8f923..a783b593 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 3c6b438d..b6ad5fe0 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 2fc1573d..adbe21c0 100644
--- a/test/test-utils-glib.c
+++ b/test/test-utils-glib.c
@@ -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);
}
diff --git a/test/test-utils-glib.h b/test/test-utils-glib.h
index f2f167ca..3952309c 100644
--- a/test/test-utils-glib.h
+++ b/test/test-utils-glib.h
@@ -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