All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org, Richard Henderson <richard.henderson@linaro.org>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
	"Laurent Vivier" <laurent@vivier.eu>
Subject: [PULL 07/14] tests: wait max 120 seconds for migration test status changes
Date: Tue,  5 Jul 2022 12:38:09 +0200	[thread overview]
Message-ID: <20220705103816.608166-8-thuth@redhat.com> (raw)
In-Reply-To: <20220705103816.608166-1-thuth@redhat.com>

From: Daniel P. Berrangé <berrange@redhat.com>

Currently the wait_for_migration_fail and wait_for_migration_complete
functions will spin in an infinite loop checking query-migrate status
to detect a specific change/goal. This is fine when everything goes
to plan, but when the unusual happens, these will hang the test suite
forever.

Any normally executing migration test case normally takes < 1 second
for a state change, with exception of the autoconverge test which
takes about 5 seconds. Taking into account possibility of people
running tests inside TCG, allowing a factor of x20 slowdown gives
a reasonable worst case of 120 seconds. Anything taking longer than
this is a strong sign that the test has hung, or the test should be
rewritten to be faster.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20220628105434.295905-2-berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/qtest/migration-helpers.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c
index a6aa59e4e6..e81e831c85 100644
--- a/tests/qtest/migration-helpers.c
+++ b/tests/qtest/migration-helpers.c
@@ -15,6 +15,14 @@
 
 #include "migration-helpers.h"
 
+/*
+ * Number of seconds we wait when looking for migration
+ * status changes, to avoid test suite hanging forever
+ * when things go wrong. Needs to be higher enough to
+ * avoid false positives on loaded hosts.
+ */
+#define MIGRATION_STATUS_WAIT_TIMEOUT 120
+
 bool got_stop;
 
 static void check_stop_event(QTestState *who)
@@ -166,8 +174,11 @@ static bool check_migration_status(QTestState *who, const char *goal,
 void wait_for_migration_status(QTestState *who,
                                const char *goal, const char **ungoals)
 {
+    g_test_timer_start();
     while (!check_migration_status(who, goal, ungoals)) {
         usleep(1000);
+
+        g_assert(g_test_timer_elapsed() < MIGRATION_STATUS_WAIT_TIMEOUT);
     }
 }
 
@@ -178,6 +189,7 @@ void wait_for_migration_complete(QTestState *who)
 
 void wait_for_migration_fail(QTestState *from, bool allow_active)
 {
+    g_test_timer_start();
     QDict *rsp_return;
     char *status;
     bool failed;
@@ -193,6 +205,8 @@ void wait_for_migration_fail(QTestState *from, bool allow_active)
         g_assert(result);
         failed = !strcmp(status, "failed");
         g_free(status);
+
+        g_assert(g_test_timer_elapsed() < MIGRATION_STATUS_WAIT_TIMEOUT);
     } while (!failed);
 
     /* Is the machine currently running? */
-- 
2.31.1



  parent reply	other threads:[~2022-07-05 10:45 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-05 10:38 [PULL 00/14] Testing and misc patches Thomas Huth
2022-07-05 10:38 ` [PULL 01/14] tests: fix test-cutils leaks Thomas Huth
2022-07-05 10:38 ` [PULL 02/14] tests/fp: Do not build softfloat3 tests if TCG is disabled Thomas Huth
2022-07-05 10:38 ` [PULL 03/14] gitlab: normalize indentation in edk2/opensbi rules Thomas Huth
2022-07-05 10:38 ` [PULL 04/14] gitlab: tweak comments in edk2/opensbi jobs Thomas Huth
2022-07-05 10:38 ` [PULL 05/14] gitlab: honour QEMU_CI variable " Thomas Huth
2022-07-05 10:38 ` [PULL 06/14] gitlab-ci: Extend timeout for ubuntu-20.04-s390x-all to 75m Thomas Huth
2022-07-05 10:38 ` Thomas Huth [this message]
2022-07-05 10:38 ` [PULL 08/14] tests: wait for migration completion before looking for STOP event Thomas Huth
2022-07-05 10:38 ` [PULL 09/14] tests: increase migration test converge downtime to 30 seconds Thomas Huth
2022-07-05 10:38 ` [PULL 10/14] tests: use consistent bandwidth/downtime limits in migration tests Thomas Huth
2022-07-05 10:38 ` [PULL 11/14] disas: Remove libvixl disassembler Thomas Huth
2022-07-05 10:38 ` [PULL 12/14] po: add ukrainian translation Thomas Huth
2022-07-05 10:38 ` [PULL 13/14] meson.build: Require a recent version of libpng Thomas Huth
2022-07-05 10:38 ` [PULL 14/14] include/qemu/host-utils: Remove unused code in the *_overflow wrappers Thomas Huth
2022-07-05 16:43 ` [PULL 00/14] Testing and misc patches Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220705103816.608166-8-thuth@redhat.com \
    --to=thuth@redhat.com \
    --cc=berrange@redhat.com \
    --cc=laurent@vivier.eu \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.