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:
parent
aca0406958
commit
266ea334b2
|
@ -36,6 +36,19 @@ bool migrate_watch_for_stop(QTestState *who, const char *name,
|
||||||
return false;
|
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".
|
* Send QMP command "migrate".
|
||||||
* Arguments are built from @fmt... (formatted like
|
* Arguments are built from @fmt... (formatted like
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
|
|
||||||
bool migrate_watch_for_stop(QTestState *who, const char *name,
|
bool migrate_watch_for_stop(QTestState *who, const char *name,
|
||||||
QDict *event, void *opaque);
|
QDict *event, void *opaque);
|
||||||
|
bool migrate_watch_for_resume(QTestState *who, const char *name,
|
||||||
|
QDict *event, void *opaque);
|
||||||
|
|
||||||
G_GNUC_PRINTF(3, 4)
|
G_GNUC_PRINTF(3, 4)
|
||||||
void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...);
|
void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...);
|
||||||
|
|
|
@ -44,6 +44,7 @@ unsigned start_address;
|
||||||
unsigned end_address;
|
unsigned end_address;
|
||||||
static bool uffd_feature_thread_id;
|
static bool uffd_feature_thread_id;
|
||||||
static bool got_stop;
|
static bool got_stop;
|
||||||
|
static bool got_resume;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dirtylimit stop working if dirty page rate error
|
* 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_stop = false;
|
||||||
|
got_resume = false;
|
||||||
bootpath = g_strdup_printf("%s/bootsect", tmpfs);
|
bootpath = g_strdup_printf("%s/bootsect", tmpfs);
|
||||||
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
||||||
/* the assembled x86 boot sector should be exactly one sector large */
|
/* 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 : "",
|
args->opts_target ? args->opts_target : "",
|
||||||
ignore_stderr);
|
ignore_stderr);
|
||||||
*to = qtest_init(cmd_target);
|
*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.
|
* Remove shmem file immediately to avoid memory leak in test failed case.
|
||||||
|
|
Loading…
Reference in New Issue