[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 09/17] tests: ensure migration status isn't reported as failed
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[PULL 09/17] tests: ensure migration status isn't reported as failed |
Date: |
Mon, 16 May 2022 16:38:04 +0100 |
From: Daniel P. Berrangé <berrange@redhat.com>
Various methods in the migration test call 'query_migrate' to fetch the
current status and then access a particular field. Almost all of these
cases expect the migration to be in a non-failed state. In the case of
'wait_for_migration_pass' in particular, if the status is 'failed' then
it will get into an infinite loop. By validating that the status is
not 'failed' the test suite will assert rather than hang when getting
into an unexpected state.
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20220426160048.812266-10-berrange@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
tests/qtest/migration-helpers.c | 13 +++++++++++++
tests/qtest/migration-helpers.h | 1 +
tests/qtest/migration-test.c | 6 +++---
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c
index 4ee26014b7..a6aa59e4e6 100644
--- a/tests/qtest/migration-helpers.c
+++ b/tests/qtest/migration-helpers.c
@@ -107,6 +107,19 @@ QDict *migrate_query(QTestState *who)
return wait_command(who, "{ 'execute': 'query-migrate' }");
}
+QDict *migrate_query_not_failed(QTestState *who)
+{
+ const char *status;
+ QDict *rsp = migrate_query(who);
+ status = qdict_get_str(rsp, "status");
+ if (g_str_equal(status, "failed")) {
+ g_printerr("query-migrate shows failed migration: %s\n",
+ qdict_get_str(rsp, "error-desc"));
+ }
+ g_assert(!g_str_equal(status, "failed"));
+ return rsp;
+}
+
/*
* Note: caller is responsible to free the returned object via
* g_free() after use
diff --git a/tests/qtest/migration-helpers.h b/tests/qtest/migration-helpers.h
index 2731399aaa..78587c2b82 100644
--- a/tests/qtest/migration-helpers.h
+++ b/tests/qtest/migration-helpers.h
@@ -27,6 +27,7 @@ G_GNUC_PRINTF(3, 4)
void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...);
QDict *migrate_query(QTestState *who);
+QDict *migrate_query_not_failed(QTestState *who);
void wait_for_migration_status(QTestState *who,
const char *goal, const char **ungoals);
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index efc6ec1614..d33e8060f9 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -181,7 +181,7 @@ static int64_t read_ram_property_int(QTestState *who, const
char *property)
QDict *rsp_return, *rsp_ram;
int64_t result;
- rsp_return = migrate_query(who);
+ rsp_return = migrate_query_not_failed(who);
if (!qdict_haskey(rsp_return, "ram")) {
/* Still in setup */
result = 0;
@@ -198,7 +198,7 @@ static int64_t read_migrate_property_int(QTestState *who,
const char *property)
QDict *rsp_return;
int64_t result;
- rsp_return = migrate_query(who);
+ rsp_return = migrate_query_not_failed(who);
result = qdict_get_try_int(rsp_return, property, 0);
qobject_unref(rsp_return);
return result;
@@ -213,7 +213,7 @@ static void read_blocktime(QTestState *who)
{
QDict *rsp_return;
- rsp_return = migrate_query(who);
+ rsp_return = migrate_query_not_failed(who);
g_assert(qdict_haskey(rsp_return, "postcopy-blocktime"));
qobject_unref(rsp_return);
}
--
2.36.1
- [PULL 00/17] migration queue, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 01/17] tests: fix encoding of IP addresses in x509 certs, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 03/17] tests: add migration tests of TLS with PSK credentials, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 02/17] tests: add more helper macros for creating TLS x509 certs, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 05/17] tests: convert XBZRLE migration test to use common helper, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 04/17] tests: add migration tests of TLS with x509 credentials, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 06/17] tests: convert multifd migration tests to use common helper, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 07/17] tests: add multifd migration tests of TLS with PSK credentials, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 08/17] tests: add multifd migration tests of TLS with x509 credentials, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 10/17] meson.build: Fix docker-test-build@alpine when including linux/errqueue.h, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 09/17] tests: ensure migration status isn't reported as failed,
Dr. David Alan Gilbert (git) <=
- [PULL 11/17] QIOChannel: Add flags on io_writev and introduce io_flush callback, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 13/17] migration: Add zero-copy-send parameter for QMP/HMP for Linux, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 12/17] QIOChannelSocket: Implement io_writev zero copy flag & io_flush for CONFIG_LINUX, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 16/17] multifd: Send header packet without flags if zero-copy-send is enabled, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 14/17] migration: Add migrate_use_tls() helper, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 15/17] multifd: multifd_send_sync_main now returns negative on error, Dr. David Alan Gilbert (git), 2022/05/16
- [PULL 17/17] multifd: Implement zero copy write in multifd migration (multifd-zero-copy), Dr. David Alan Gilbert (git), 2022/05/16
- Re: [PULL 00/17] migration queue, Richard Henderson, 2022/05/16