Peter Maydell <peter.mayd...@linaro.org> writes: > On Tue, 28 Feb 2023 at 19:28, Fabiano Rosas <faro...@suse.de> wrote: >> >> The migration tests are currently broken for an aarch64 host because >> the tests pass no 'machine' and 'cpu' options on the QEMU command >> line. >> >> Add a separate class to each architecture so that we can specify >> 'machine' and 'cpu' options instead of relying on defaults. >> >> Add a skip decorator to keep the current behavior of only running >> migration tests when the qemu target matches the host architecture. > > I still don't understand this patch. Don't we run the > migration-test on all hosts already? David ? >
We run on all hosts but for each host we only take the QEMU binary that matches the host architecture. So if you want to test aarch64 migration, you need an aarch64 host. If you run on an x86_64 host (without this patch): $ ../configure #all targets $ make check-avocado AVOCADO_TESTS=../tests/avocado/migration.py You'll see: (1/3) ... migration.py:Migration.test_migration_with_tcp_localhost: PASS (0.21 s) (2/3) ... migration.py:Migration.test_migration_with_unix: PASS (0.18 s) (3/3) ... migration.py:Migration.test_migration_with_exec: PASS (0.21 s) All three tests ran using qemu-system-x86_64. The issue I'm trying to solve is that when run on a aarch64 host, the test will fail because (being generic) it doesn't pass the '-machine virt' option and there is no architecture-specific information in it at all. If we need to pass '-machine virt' to the arm machine, then something needs to change to add architecture-specific knowledge into the test. My first version hardcoded the usual "if arch == foo". That was frowned upon, so this version creates a class for each architecture like other tests do (e.g. boot_linux.py). The downside of this is that we need to explicitly enumerate the host architectures on which we want the test to run. I chose a few of the obvious, but we might need to add more. The upside is that we could now enable the test to run with all the targets present in the build. If we remove the @skip decorators from this patch, we'd get (note the arch strings): (01/12) ... migration.py:Aarch64.test_migration_with_tcp_localhost: PASS (0.19 s) (02/12) ... migration.py:Aarch64.test_migration_with_unix: PASS (0.16 s) (03/12) ... migration.py:Aarch64.test_migration_with_exec: PASS (0.20 s) ^ (04/12) ... migration.py:X86_64.test_migration_with_tcp_localhost: PASS (0.21 s) (05/12) ... migration.py:X86_64.test_migration_with_unix: PASS (0.18 s) (06/12) ... migration.py:X86_64.test_migration_with_exec: PASS (0.21 s) ^ (07/12) ... migration.py:PPC64.test_migration_with_tcp_localhost: PASS (0.20 s) (08/12) ... migration.py:PPC64.test_migration_with_unix: PASS (0.17 s) (09/12) ... migration.py:PPC64.test_migration_with_exec: PASS (0.20 s) ^