tests/qtest/migration: Allow user to specify a machine type

Accept the QTEST_QEMU_MACHINE_TYPE environment variable to take a
machine type to use in the tests.

The full machine type is recognized (e.g. pc-q35-8.2). Aliases
(e.g. pc) are also allowed and resolve to the latest machine version
for that alias, or, if using two QEMU binaries, to the latest common
machine version between the two.

Signed-off-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Message-ID: <20231018192741.25885-12-farosas@suse.de>
This commit is contained in:
Fabiano Rosas 2023-10-18 16:27:40 -03:00 committed by Juan Quintela
parent 5050ad2a38
commit 6c6d2330a0
3 changed files with 31 additions and 2 deletions

View File

@ -11,6 +11,7 @@
*/
#include "qemu/osdep.h"
#include "qemu/ctype.h"
#include "qapi/qmp/qjson.h"
#include "migration-helpers.h"
@ -266,3 +267,28 @@ char *find_common_machine_version(const char *mtype, const char *var1,
"binaries %s and %s", mtype, getenv(var1), getenv(var2));
g_assert_not_reached();
}
char *resolve_machine_version(const char *alias, const char *var1,
const char *var2)
{
const char *mname = g_getenv("QTEST_QEMU_MACHINE_TYPE");
g_autofree char *machine_name = NULL;
if (mname) {
const char *dash = strrchr(mname, '-');
const char *dot = strrchr(mname, '.');
machine_name = g_strdup(mname);
if (dash && dot) {
assert(qtest_has_machine(machine_name));
return g_steal_pointer(&machine_name);
}
/* else: probably an alias, let it be resolved below */
} else {
/* use the hardcoded alias */
machine_name = g_strdup(alias);
}
return find_common_machine_version(machine_name, var1, var2);
}

View File

@ -45,4 +45,6 @@ void wait_for_migration_fail(QTestState *from, bool allow_active);
char *find_common_machine_version(const char *mtype, const char *var1,
const char *var2);
char *resolve_machine_version(const char *alias, const char *var1,
const char *var2);
#endif /* MIGRATION_HELPERS_H */

View File

@ -825,8 +825,9 @@ static int test_migrate_start(QTestState **from, QTestState **to,
kvm_opts = ",dirty-ring-size=4096";
}
machine = find_common_machine_version(machine_alias, QEMU_ENV_SRC,
QEMU_ENV_DST);
machine = resolve_machine_version(machine_alias, QEMU_ENV_SRC,
QEMU_ENV_DST);
g_test_message("Using machine type: %s", machine);
cmd_source = g_strdup_printf("-accel kvm%s -accel tcg "