[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 11/12] tests/qtest/migration: Allow user to specify a machine
|
From: |
Fabiano Rosas |
|
Subject: |
[PATCH v4 11/12] tests/qtest/migration: Allow user to specify a machine type |
|
Date: |
Wed, 18 Oct 2023 16:27:40 -0300 |
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>
---
tests/qtest/migration-helpers.c | 26 ++++++++++++++++++++++++++
tests/qtest/migration-helpers.h | 2 ++
tests/qtest/migration-test.c | 5 +++--
3 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c
index 13449c1fe1..24fb7b3525 100644
--- a/tests/qtest/migration-helpers.c
+++ b/tests/qtest/migration-helpers.c
@@ -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);
+}
diff --git a/tests/qtest/migration-helpers.h b/tests/qtest/migration-helpers.h
index d1c2351d33..e31dc85cc7 100644
--- a/tests/qtest/migration-helpers.h
+++ b/tests/qtest/migration-helpers.h
@@ -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 */
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 51f5603aac..e15ac3b353 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -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 "
--
2.35.3
- [PATCH v4 08/12] tests/qtest/migration: Specify the geometry of the bootsector, (continued)
- [PATCH v4 08/12] tests/qtest/migration: Specify the geometry of the bootsector, Fabiano Rosas, 2023/10/18
- [PATCH v4 09/12] tests/qtest/migration: Set q35 as the default machine for x86_86, Fabiano Rosas, 2023/10/18
- [PATCH v4 10/12] tests/qtest/migration: Support more than one QEMU binary, Fabiano Rosas, 2023/10/18
- [PATCH v4 11/12] tests/qtest/migration: Allow user to specify a machine type,
Fabiano Rosas <=
- [PATCH v4 12/12] tests/qtest: Don't print messages from query instances, Fabiano Rosas, 2023/10/18
- Re: [PATCH v4 00/12] tests/migration-test: Allow testing older machine types, Juan Quintela, 2023/10/19