[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 18/18] tests: ensure migration status isn't reported as failed
From: |
Daniel P . Berrangé |
Subject: |
[PATCH v2 18/18] tests: ensure migration status isn't reported as failed |
Date: |
Thu, 10 Mar 2022 17:18:21 +0000 |
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>
---
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 d63bba9630..b710ece67e 100644
--- a/tests/qtest/migration-helpers.h
+++ b/tests/qtest/migration-helpers.h
@@ -26,6 +26,7 @@ GCC_FMT_ATTR(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 5ea0b9360a..d9f444ea14 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.34.1
- [PATCH v2 07/18] tests: switch MigrateStart struct to be stack allocated, (continued)
- [PATCH v2 07/18] tests: switch MigrateStart struct to be stack allocated, Daniel P . Berrangé, 2022/03/10
- [PATCH v2 14/18] tests: convert XBZRLE migration test to use common helper, Daniel P . Berrangé, 2022/03/10
- [PATCH v2 16/18] tests: add multifd migration tests of TLS with PSK credentials, Daniel P . Berrangé, 2022/03/10
- [PATCH v2 12/18] tests: add migration tests of TLS with PSK credentials, Daniel P . Berrangé, 2022/03/10
- [PATCH v2 06/18 for-7.0] migration: fix use of TLS PSK credentials with a UNIX socket, Daniel P . Berrangé, 2022/03/10
- [PATCH v2 15/18] tests: convert multifd migration tests to use common helper, Daniel P . Berrangé, 2022/03/10
- [PATCH v2 18/18] tests: ensure migration status isn't reported as failed,
Daniel P . Berrangé <=
- [PATCH v2 17/18] tests: add multifd migration tests of TLS with x509 credentials, Daniel P . Berrangé, 2022/03/10
- [PATCH v2 13/18] tests: add migration tests of TLS with x509 credentials, Daniel P . Berrangé, 2022/03/10
- [PATCH v2 04/18] tests: print newline after QMP response in qtest logs, Daniel P . Berrangé, 2022/03/10
- Re: [PATCH v2 00/18] tests: introduce testing coverage for TLS with migration, Peter Xu, 2022/03/10