tests/qtest: capture RESUME events during migration

When running migration tests we monitor for a STOP event so we can skip
redundant waits. This will be needed for the RESUME event too shortly.

Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20230601161347.1803440-8-berrange@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2023-06-01 17:13:44 +01:00 committed by Juan Quintela
parent aca0406958
commit 266ea334b2
3 changed files with 20 additions and 0 deletions

View File

@ -36,6 +36,19 @@ bool migrate_watch_for_stop(QTestState *who, const char *name,
return false;
}
bool migrate_watch_for_resume(QTestState *who, const char *name,
QDict *event, void *opaque)
{
bool *seen = opaque;
if (g_str_equal(name, "RESUME")) {
*seen = true;
return true;
}
return false;
}
/*
* Send QMP command "migrate".
* Arguments are built from @fmt... (formatted like

View File

@ -17,6 +17,8 @@
bool migrate_watch_for_stop(QTestState *who, const char *name,
QDict *event, void *opaque);
bool migrate_watch_for_resume(QTestState *who, const char *name,
QDict *event, void *opaque);
G_GNUC_PRINTF(3, 4)
void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...);

View File

@ -44,6 +44,7 @@ unsigned start_address;
unsigned end_address;
static bool uffd_feature_thread_id;
static bool got_stop;
static bool got_resume;
/*
* Dirtylimit stop working if dirty page rate error
@ -607,6 +608,7 @@ static int test_migrate_start(QTestState **from, QTestState **to,
}
got_stop = false;
got_resume = false;
bootpath = g_strdup_printf("%s/bootsect", tmpfs);
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
/* the assembled x86 boot sector should be exactly one sector large */
@ -712,6 +714,9 @@ static int test_migrate_start(QTestState **from, QTestState **to,
args->opts_target ? args->opts_target : "",
ignore_stderr);
*to = qtest_init(cmd_target);
qtest_qmp_set_event_callback(*to,
migrate_watch_for_resume,
&got_resume);
/*
* Remove shmem file immediately to avoid memory leak in test failed case.