tests: ensure migration status isn't reported as failed
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>
This commit is contained in:
parent
ff32f1dd32
commit
fd3540adb9
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user