tests: Add the ability to multiply up test timeouts
authorSimon McVittie <smcv@collabora.com>
Mon, 27 Nov 2017 19:14:23 +0000 (19:14 +0000)
committerSimon McVittie <smcv@collabora.com>
Tue, 6 Feb 2018 19:14:27 +0000 (19:14 +0000)
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)

test/dbus-daemon.c
test/internals/refs.c
test/relay.c
test/test-utils-glib.c
test/test-utils-glib.h

index f9d8f92..a783b59 100644 (file)
@@ -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;
index 3c6b438..b6ad5fe 100644 (file)
@@ -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;
index d7c453a..00e7966 100644 (file)
@@ -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);
index 2fc1573..adbe21c 100644 (file)
@@ -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);
 }
index f2f167c..3952309 100644 (file)
@@ -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