This adds support for running migration-test with two different QEMU versions to test migration compatibility. The tests automatically choose the latest machine type supported by both QEMU versions.
changes: - introduce *_with_env variants of the relevant functions [Daniel, Juan] - keep the requirement for having the QTEST_QEMU_BINARY always present. qtest_get_arch() is used extensively in the qtest_add* functions. It would be too much churn to pass a different binary into it. - with this^ we also need to keep the requirement for using only one of SRC|DST. Otherwise it would be confusing to have three binaries listed. - query the alias to find out the machine types [Daniel] I haven't looked into the docker part for now. I think Daniel's suggestion of QTEST_QEMU_BINARY_SRC='podman run ... qemu-system-foo' looks interesting. Do we have the latest release already built in the registry at any given point? Thanks v1: https://lore.kernel.org/r/20231003141932.2367-1-faro...@suse.de Hi, I had this WIP patch laying around that seems to fit Juan's vision about testing older machine types. It is a very rough draft for now, but it may be useful for kickstarting the discussion. With this we can give the tests two different QEMU versions. The test picks the older machine type between the two and runs the whole migration-test suite. We'd just need a way to provide the older build. Currently I'm doing this by hand. sample output: # Using two different QEMU binaries. Common machine type: pc-i440fx-8.1 ... # Using ./qemu-system-x86_64 (v8.1.0-952-g8a940312a2-dirty) as migration source ... # Using ../build-8.1.0/qemu-system-x86_64 (v8.1.0-dirty) as migration destination Let me know what you think. Fabiano Rosas (9): tests/qtest: Allow qtest_qemu_binary to use a custom environment variable tests/qtest: Introduce qtest_init_with_env tests/qtest: Allow qtest_get_machines to use an alternate QEMU binary tests/qtest: Introduce qtest_has_machine_with_env tests/qtest: Introduce qtest_resolve_machine_alias tests/qtest/migration: Introduce find_common_machine_version tests/qtest/migration: Define a machine for all architectures tests/qtest/migration: Support more than one QEMU binary tests/qtest: Don't print messages from query instances tests/qtest/libqtest.c | 86 +++++++++++++++++++++++++++------ tests/qtest/libqtest.h | 32 ++++++++++++ tests/qtest/migration-helpers.c | 24 +++++++++ tests/qtest/migration-helpers.h | 2 + tests/qtest/migration-test.c | 36 ++++++++++++-- 5 files changed, 162 insertions(+), 18 deletions(-) -- 2.35.3