* [RFC PATCH] tests/functional: Move tests into architecture specific folders
@ 2025-07-10 9:42 Thomas Huth
2025-07-10 9:59 ` Manos Pitsidianakis
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Thomas Huth @ 2025-07-10 9:42 UTC (permalink / raw)
To: qemu-devel
Cc: Daniel P. Berrangé, qemu-arm, qemu-ppc, qemu-s390x,
qemu-riscv, Philippe Mathieu-Daudé, Pierrick Bouvier,
Alex Bennée
This patch tackles two issues. First, the tests/functional folder has
become quite crowded already, some restructuring would be helpful here.
Second, we currently encode the target architecture twice in the test
names since a lot of the test file names contain the target, too.
This contributes to the very long output lines when running "make
check-functional".
So let's move the individual test files to target specific folders now.
Then we can drop the target from the file name (and thus from the test
name).
Before the change, the output looked like this:
...
195/236 qemu:func-thorough+func-microblazeel-thorough+thorough / func-microblazeel-microblazeel_s3adsp1800 OK 2.00s 2 subtests passed
196/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-microblaze_replay OK 2.78s 1 subtests passed
197/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-microblaze_s3adsp1800 OK 2.02s 2 subtests passed
198/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_fuloong2e OK 1.95s 1 subtests passed
199/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_loongson3v SKIP 0.07s 0 subtests passed
200/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_tuxrun OK 8.52s 1 subtests passed
...
After this change, it gets a little bit shorter:
...
195/236 qemu:func-thorough+func-microblazeel-thorough+thorough / func-microblazeel-s3adsp1800 OK 2.12s 2 subtests passed
196/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-replay OK 2.90s 1 subtests passed
197/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-s3adsp1800 OK 2.07s 2 subtests passed
198/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-fuloong2e OK 2.05s 1 subtests passed
199/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-loongson3v SKIP 0.07s 0 subtests passed
200/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-tuxrun OK 8.84s 1 subtests passed
...
Tests that can be used for multiple but not all targets (like the "migration"
test) are now handled via symlinks in the target folders.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
Note: Marked as RFC since I'm not that happy about the symlinks yet ...
if someone has a better idea, please let me know!
Also the update to the MAINTAINERS file is still missing - I'll add
that once we agreed on whether this patch is a good idea or not.
tests/functional/aarch64/meson.build | 47 +++
.../test_aspeed_ast2700.py} | 0
.../test_aspeed_ast2700fc.py} | 0
.../test_device_passthrough.py} | 0
.../test_hotplug_pci.py} | 0
.../test_imx8mp_evk.py} | 0
tests/functional/aarch64/test_migration.py | 1 +
tests/functional/aarch64/test_multiprocess.py | 1 +
.../test_raspi3.py} | 0
.../test_raspi4.py} | 0
.../test_replay.py} | 0
.../test_reverse_debug.py} | 0
.../test_rme_sbsaref.py} | 2 +-
.../test_rme_virt.py} | 0
.../test_sbsaref.py} | 0
.../test_sbsaref_alpine.py} | 2 +-
.../test_sbsaref_freebsd.py} | 2 +-
.../test_smmu.py} | 0
.../test_tcg_plugins.py} | 0
.../test_tuxrun.py} | 0
.../test_virt.py} | 0
.../test_virt_gpu.py} | 0
.../test_xen.py} | 0
.../test_xlnx_versal.py} | 0
tests/functional/alpha/meson.build | 9 +
.../test_clipper.py} | 0
tests/functional/alpha/test_migration.py | 1 +
.../test_replay.py} | 0
tests/functional/arm/meson.build | 61 +++
.../test_aspeed_ast1030.py} | 0
.../test_aspeed_ast2500.py} | 0
.../test_aspeed_ast2600.py} | 0
.../test_aspeed_bletchley.py} | 0
.../test_aspeed_catalina.py} | 0
.../test_aspeed_gb200nvl_bmc.py} | 0
.../test_aspeed_palmetto.py} | 0
.../test_aspeed_rainier.py} | 0
.../test_aspeed_romulus.py} | 0
.../test_aspeed_witherspoon.py} | 0
.../{test_arm_bflt.py => arm/test_bflt.py} | 0
.../test_bpim2u.py} | 0
.../test_canona1100.py} | 0
.../test_collie.py} | 0
.../test_cubieboard.py} | 0
.../test_emcraft_sf2.py} | 0
.../test_integratorcp.py} | 0
.../test_microbit.py} | 0
tests/functional/arm/test_migration.py | 1 +
.../test_orangepi.py} | 0
.../test_quanta_gsj.py} | 0
.../test_raspi2.py} | 0
.../test_realview.py} | 0
.../test_replay.py} | 0
.../test_smdkc210.py} | 0
.../test_stellaris.py} | 0
.../{test_arm_sx1.py => arm/test_sx1.py} | 0
.../test_tuxrun.py} | 0
.../test_vexpress.py} | 0
.../{test_arm_virt.py => arm/test_virt.py} | 0
tests/functional/avr/meson.build | 5 +
.../test_mega2560.py} | 0
.../{test_avr_uno.py => avr/test_uno.py} | 0
.../{ => generic}/test_empty_cpu_model.py | 0
.../{ => generic}/test_info_usernet.py | 0
.../{ => generic}/test_migration.py | 0
.../functional/{ => generic}/test_version.py | 0
tests/functional/hppa/meson.build | 4 +
.../test_seabios.py} | 0
tests/functional/i386/meson.build | 9 +
tests/functional/i386/test_migration.py | 1 +
.../test_replay.py} | 0
.../test_tuxrun.py} | 0
tests/functional/loongarch64/meson.build | 4 +
.../test_virt.py} | 0
tests/functional/m68k/meson.build | 8 +
.../test_mcf5208evb.py} | 0
.../test_nextcube.py} | 0
.../{test_m68k_q800.py => m68k/test_q800.py} | 0
.../test_replay.py} | 0
.../test_tuxrun.py} | 0
tests/functional/meson.build | 364 ++----------------
tests/functional/microblaze/meson.build | 5 +
.../test_replay.py} | 0
.../test_s3adsp1800.py} | 0
tests/functional/microblazeel/meson.build | 4 +
.../test_s3adsp1800.py} | 2 +-
tests/functional/mips/meson.build | 11 +
.../test_malta.py} | 0
.../test_replay.py} | 0
.../test_tuxrun.py} | 0
tests/functional/mips64/meson.build | 10 +
.../test_malta.py} | 2 +-
.../test_tuxrun.py} | 0
tests/functional/mips64el/meson.build | 14 +
.../test_fuloong2e.py} | 0
.../test_loongson3v.py} | 0
.../test_malta.py} | 4 +-
.../test_replay.py} | 0
.../test_tuxrun.py} | 0
tests/functional/mipsel/meson.build | 12 +
.../test_malta.py} | 2 +-
.../test_replay.py} | 0
.../test_tuxrun.py} | 0
tests/functional/or1k/meson.build | 5 +
.../test_replay.py} | 0
.../{test_or1k_sim.py => or1k/test_sim.py} | 0
tests/functional/ppc/meson.build | 22 ++
.../{test_ppc_40p.py => ppc/test_40p.py} | 0
.../{test_ppc_74xx.py => ppc/test_74xx.py} | 0
.../{test_ppc_amiga.py => ppc/test_amiga.py} | 0
.../test_bamboo.py} | 0
.../{test_ppc_mac.py => ppc/test_mac.py} | 0
tests/functional/ppc/test_migration.py | 1 +
.../test_mpc8544ds.py} | 0
.../test_replay.py} | 0
.../test_sam460ex.py} | 0
.../test_tuxrun.py} | 0
.../test_virtex_ml507.py} | 0
tests/functional/ppc64/meson.build | 25 ++
.../test_e500.py} | 0
.../{test_ppc64_hv.py => ppc64/test_hv.py} | 0
.../test_mac99.py} | 0
tests/functional/ppc64/test_migration.py | 1 +
.../test_powernv.py} | 0
.../test_pseries.py} | 0
.../test_replay.py} | 0
.../test_reverse_debug.py} | 0
.../test_tuxrun.py} | 0
tests/functional/riscv32/meson.build | 9 +
tests/functional/riscv32/test_migration.py | 1 +
tests/functional/riscv32/test_opensbi.py | 1 +
.../test_tuxrun.py} | 0
tests/functional/riscv64/meson.build | 13 +
.../test_opensbi.py} | 0
.../test_tuxrun.py} | 0
tests/functional/rx/meson.build | 4 +
.../{test_rx_gdbsim.py => rx/test_gdbsim.py} | 0
tests/functional/s390x/meson.build | 12 +
.../test_ccw_virtio.py} | 0
.../test_replay.py} | 0
.../test_topology.py} | 0
.../test_tuxrun.py} | 0
tests/functional/sh4/meson.build | 10 +
.../{test_sh4_r2d.py => sh4/test_r2d.py} | 0
.../test_tuxrun.py} | 0
tests/functional/sh4eb/meson.build | 4 +
.../{test_sh4eb_r2d.py => sh4eb/test_r2d.py} | 0
tests/functional/sparc/meson.build | 9 +
tests/functional/sparc/test_migration.py | 1 +
.../test_replay.py} | 0
.../test_sun4m.py} | 0
tests/functional/sparc64/meson.build | 9 +
tests/functional/sparc64/test_migration.py | 1 +
.../test_sun4u.py} | 0
.../test_tuxrun.py} | 0
tests/functional/x86_64/meson.build | 37 ++
.../functional/{ => x86_64}/test_acpi_bits.py | 0
.../{ => x86_64}/test_cpu_queries.py | 0
.../test_hotplug_blk.py} | 0
.../test_hotplug_cpu.py} | 0
.../{ => x86_64}/test_intel_iommu.py | 0
.../test_kvm_xen.py} | 0
.../{ => x86_64}/test_linux_initrd.py | 0
.../{ => x86_64}/test_mem_addr_space.py | 0
tests/functional/{ => x86_64}/test_memlock.py | 0
tests/functional/x86_64/test_migration.py | 1 +
.../{ => x86_64}/test_multiprocess.py | 0
.../{ => x86_64}/test_netdev_ethtool.py | 0
.../{ => x86_64}/test_pc_cpu_hotplug_props.py | 0
.../test_replay.py} | 0
.../test_reverse_debug.py} | 0
.../test_tuxrun.py} | 0
.../{ => x86_64}/test_virtio_balloon.py | 0
.../{ => x86_64}/test_virtio_gpu.py | 0
.../{ => x86_64}/test_virtio_version.py | 0
tests/functional/{ => x86_64}/test_vnc.py | 0
.../test_x86_cpu_model_versions.py | 0
tests/functional/xtensa/meson.build | 5 +
.../test_lx60.py} | 0
.../test_replay.py} | 0
180 files changed, 426 insertions(+), 333 deletions(-)
create mode 100644 tests/functional/aarch64/meson.build
rename tests/functional/{test_aarch64_aspeed_ast2700.py => aarch64/test_aspeed_ast2700.py} (100%)
rename tests/functional/{test_aarch64_aspeed_ast2700fc.py => aarch64/test_aspeed_ast2700fc.py} (100%)
rename tests/functional/{test_aarch64_device_passthrough.py => aarch64/test_device_passthrough.py} (100%)
rename tests/functional/{test_aarch64_hotplug_pci.py => aarch64/test_hotplug_pci.py} (100%)
rename tests/functional/{test_aarch64_imx8mp_evk.py => aarch64/test_imx8mp_evk.py} (100%)
create mode 120000 tests/functional/aarch64/test_migration.py
create mode 120000 tests/functional/aarch64/test_multiprocess.py
rename tests/functional/{test_aarch64_raspi3.py => aarch64/test_raspi3.py} (100%)
rename tests/functional/{test_aarch64_raspi4.py => aarch64/test_raspi4.py} (100%)
rename tests/functional/{test_aarch64_replay.py => aarch64/test_replay.py} (100%)
rename tests/functional/{test_aarch64_reverse_debug.py => aarch64/test_reverse_debug.py} (100%)
rename tests/functional/{test_aarch64_rme_sbsaref.py => aarch64/test_rme_sbsaref.py} (98%)
rename tests/functional/{test_aarch64_rme_virt.py => aarch64/test_rme_virt.py} (100%)
rename tests/functional/{test_aarch64_sbsaref.py => aarch64/test_sbsaref.py} (100%)
rename tests/functional/{test_aarch64_sbsaref_alpine.py => aarch64/test_sbsaref_alpine.py} (97%)
rename tests/functional/{test_aarch64_sbsaref_freebsd.py => aarch64/test_sbsaref_freebsd.py} (97%)
rename tests/functional/{test_aarch64_smmu.py => aarch64/test_smmu.py} (100%)
rename tests/functional/{test_aarch64_tcg_plugins.py => aarch64/test_tcg_plugins.py} (100%)
rename tests/functional/{test_aarch64_tuxrun.py => aarch64/test_tuxrun.py} (100%)
rename tests/functional/{test_aarch64_virt.py => aarch64/test_virt.py} (100%)
rename tests/functional/{test_aarch64_virt_gpu.py => aarch64/test_virt_gpu.py} (100%)
rename tests/functional/{test_aarch64_xen.py => aarch64/test_xen.py} (100%)
rename tests/functional/{test_aarch64_xlnx_versal.py => aarch64/test_xlnx_versal.py} (100%)
create mode 100644 tests/functional/alpha/meson.build
rename tests/functional/{test_alpha_clipper.py => alpha/test_clipper.py} (100%)
create mode 120000 tests/functional/alpha/test_migration.py
rename tests/functional/{test_alpha_replay.py => alpha/test_replay.py} (100%)
create mode 100644 tests/functional/arm/meson.build
rename tests/functional/{test_arm_aspeed_ast1030.py => arm/test_aspeed_ast1030.py} (100%)
rename tests/functional/{test_arm_aspeed_ast2500.py => arm/test_aspeed_ast2500.py} (100%)
rename tests/functional/{test_arm_aspeed_ast2600.py => arm/test_aspeed_ast2600.py} (100%)
rename tests/functional/{test_arm_aspeed_bletchley.py => arm/test_aspeed_bletchley.py} (100%)
rename tests/functional/{test_arm_aspeed_catalina.py => arm/test_aspeed_catalina.py} (100%)
rename tests/functional/{test_arm_aspeed_gb200nvl_bmc.py => arm/test_aspeed_gb200nvl_bmc.py} (100%)
mode change 100644 => 100755
rename tests/functional/{test_arm_aspeed_palmetto.py => arm/test_aspeed_palmetto.py} (100%)
rename tests/functional/{test_arm_aspeed_rainier.py => arm/test_aspeed_rainier.py} (100%)
rename tests/functional/{test_arm_aspeed_romulus.py => arm/test_aspeed_romulus.py} (100%)
rename tests/functional/{test_arm_aspeed_witherspoon.py => arm/test_aspeed_witherspoon.py} (100%)
rename tests/functional/{test_arm_bflt.py => arm/test_bflt.py} (100%)
rename tests/functional/{test_arm_bpim2u.py => arm/test_bpim2u.py} (100%)
rename tests/functional/{test_arm_canona1100.py => arm/test_canona1100.py} (100%)
rename tests/functional/{test_arm_collie.py => arm/test_collie.py} (100%)
rename tests/functional/{test_arm_cubieboard.py => arm/test_cubieboard.py} (100%)
rename tests/functional/{test_arm_emcraft_sf2.py => arm/test_emcraft_sf2.py} (100%)
rename tests/functional/{test_arm_integratorcp.py => arm/test_integratorcp.py} (100%)
rename tests/functional/{test_arm_microbit.py => arm/test_microbit.py} (100%)
create mode 120000 tests/functional/arm/test_migration.py
rename tests/functional/{test_arm_orangepi.py => arm/test_orangepi.py} (100%)
rename tests/functional/{test_arm_quanta_gsj.py => arm/test_quanta_gsj.py} (100%)
rename tests/functional/{test_arm_raspi2.py => arm/test_raspi2.py} (100%)
rename tests/functional/{test_arm_realview.py => arm/test_realview.py} (100%)
rename tests/functional/{test_arm_replay.py => arm/test_replay.py} (100%)
rename tests/functional/{test_arm_smdkc210.py => arm/test_smdkc210.py} (100%)
rename tests/functional/{test_arm_stellaris.py => arm/test_stellaris.py} (100%)
rename tests/functional/{test_arm_sx1.py => arm/test_sx1.py} (100%)
rename tests/functional/{test_arm_tuxrun.py => arm/test_tuxrun.py} (100%)
rename tests/functional/{test_arm_vexpress.py => arm/test_vexpress.py} (100%)
rename tests/functional/{test_arm_virt.py => arm/test_virt.py} (100%)
create mode 100644 tests/functional/avr/meson.build
rename tests/functional/{test_avr_mega2560.py => avr/test_mega2560.py} (100%)
rename tests/functional/{test_avr_uno.py => avr/test_uno.py} (100%)
rename tests/functional/{ => generic}/test_empty_cpu_model.py (100%)
rename tests/functional/{ => generic}/test_info_usernet.py (100%)
rename tests/functional/{ => generic}/test_migration.py (100%)
rename tests/functional/{ => generic}/test_version.py (100%)
create mode 100644 tests/functional/hppa/meson.build
rename tests/functional/{test_hppa_seabios.py => hppa/test_seabios.py} (100%)
create mode 100644 tests/functional/i386/meson.build
create mode 120000 tests/functional/i386/test_migration.py
rename tests/functional/{test_i386_replay.py => i386/test_replay.py} (100%)
rename tests/functional/{test_i386_tuxrun.py => i386/test_tuxrun.py} (100%)
create mode 100644 tests/functional/loongarch64/meson.build
rename tests/functional/{test_loongarch64_virt.py => loongarch64/test_virt.py} (100%)
create mode 100644 tests/functional/m68k/meson.build
rename tests/functional/{test_m68k_mcf5208evb.py => m68k/test_mcf5208evb.py} (100%)
rename tests/functional/{test_m68k_nextcube.py => m68k/test_nextcube.py} (100%)
rename tests/functional/{test_m68k_q800.py => m68k/test_q800.py} (100%)
rename tests/functional/{test_m68k_replay.py => m68k/test_replay.py} (100%)
rename tests/functional/{test_m68k_tuxrun.py => m68k/test_tuxrun.py} (100%)
create mode 100644 tests/functional/microblaze/meson.build
rename tests/functional/{test_microblaze_replay.py => microblaze/test_replay.py} (100%)
rename tests/functional/{test_microblaze_s3adsp1800.py => microblaze/test_s3adsp1800.py} (100%)
create mode 100644 tests/functional/microblazeel/meson.build
rename tests/functional/{test_microblazeel_s3adsp1800.py => microblazeel/test_s3adsp1800.py} (92%)
create mode 100644 tests/functional/mips/meson.build
rename tests/functional/{test_mips_malta.py => mips/test_malta.py} (100%)
rename tests/functional/{test_mips_replay.py => mips/test_replay.py} (100%)
rename tests/functional/{test_mips_tuxrun.py => mips/test_tuxrun.py} (100%)
create mode 100644 tests/functional/mips64/meson.build
rename tests/functional/{test_mips64_malta.py => mips64/test_malta.py} (96%)
rename tests/functional/{test_mips64_tuxrun.py => mips64/test_tuxrun.py} (100%)
create mode 100644 tests/functional/mips64el/meson.build
rename tests/functional/{test_mips64el_fuloong2e.py => mips64el/test_fuloong2e.py} (100%)
rename tests/functional/{test_mips64el_loongson3v.py => mips64el/test_loongson3v.py} (100%)
rename tests/functional/{test_mips64el_malta.py => mips64el/test_malta.py} (98%)
rename tests/functional/{test_mips64el_replay.py => mips64el/test_replay.py} (100%)
rename tests/functional/{test_mips64el_tuxrun.py => mips64el/test_tuxrun.py} (100%)
create mode 100644 tests/functional/mipsel/meson.build
rename tests/functional/{test_mipsel_malta.py => mipsel/test_malta.py} (98%)
rename tests/functional/{test_mipsel_replay.py => mipsel/test_replay.py} (100%)
rename tests/functional/{test_mipsel_tuxrun.py => mipsel/test_tuxrun.py} (100%)
create mode 100644 tests/functional/or1k/meson.build
rename tests/functional/{test_or1k_replay.py => or1k/test_replay.py} (100%)
rename tests/functional/{test_or1k_sim.py => or1k/test_sim.py} (100%)
create mode 100644 tests/functional/ppc/meson.build
rename tests/functional/{test_ppc_40p.py => ppc/test_40p.py} (100%)
rename tests/functional/{test_ppc_74xx.py => ppc/test_74xx.py} (100%)
rename tests/functional/{test_ppc_amiga.py => ppc/test_amiga.py} (100%)
rename tests/functional/{test_ppc_bamboo.py => ppc/test_bamboo.py} (100%)
rename tests/functional/{test_ppc_mac.py => ppc/test_mac.py} (100%)
create mode 120000 tests/functional/ppc/test_migration.py
rename tests/functional/{test_ppc_mpc8544ds.py => ppc/test_mpc8544ds.py} (100%)
rename tests/functional/{test_ppc_replay.py => ppc/test_replay.py} (100%)
rename tests/functional/{test_ppc_sam460ex.py => ppc/test_sam460ex.py} (100%)
rename tests/functional/{test_ppc_tuxrun.py => ppc/test_tuxrun.py} (100%)
rename tests/functional/{test_ppc_virtex_ml507.py => ppc/test_virtex_ml507.py} (100%)
create mode 100644 tests/functional/ppc64/meson.build
rename tests/functional/{test_ppc64_e500.py => ppc64/test_e500.py} (100%)
rename tests/functional/{test_ppc64_hv.py => ppc64/test_hv.py} (100%)
rename tests/functional/{test_ppc64_mac99.py => ppc64/test_mac99.py} (100%)
create mode 120000 tests/functional/ppc64/test_migration.py
rename tests/functional/{test_ppc64_powernv.py => ppc64/test_powernv.py} (100%)
rename tests/functional/{test_ppc64_pseries.py => ppc64/test_pseries.py} (100%)
rename tests/functional/{test_ppc64_replay.py => ppc64/test_replay.py} (100%)
rename tests/functional/{test_ppc64_reverse_debug.py => ppc64/test_reverse_debug.py} (100%)
rename tests/functional/{test_ppc64_tuxrun.py => ppc64/test_tuxrun.py} (100%)
create mode 100644 tests/functional/riscv32/meson.build
create mode 120000 tests/functional/riscv32/test_migration.py
create mode 120000 tests/functional/riscv32/test_opensbi.py
rename tests/functional/{test_riscv32_tuxrun.py => riscv32/test_tuxrun.py} (100%)
create mode 100644 tests/functional/riscv64/meson.build
rename tests/functional/{test_riscv_opensbi.py => riscv64/test_opensbi.py} (100%)
rename tests/functional/{test_riscv64_tuxrun.py => riscv64/test_tuxrun.py} (100%)
create mode 100644 tests/functional/rx/meson.build
rename tests/functional/{test_rx_gdbsim.py => rx/test_gdbsim.py} (100%)
create mode 100644 tests/functional/s390x/meson.build
rename tests/functional/{test_s390x_ccw_virtio.py => s390x/test_ccw_virtio.py} (100%)
rename tests/functional/{test_s390x_replay.py => s390x/test_replay.py} (100%)
rename tests/functional/{test_s390x_topology.py => s390x/test_topology.py} (100%)
rename tests/functional/{test_s390x_tuxrun.py => s390x/test_tuxrun.py} (100%)
create mode 100644 tests/functional/sh4/meson.build
rename tests/functional/{test_sh4_r2d.py => sh4/test_r2d.py} (100%)
rename tests/functional/{test_sh4_tuxrun.py => sh4/test_tuxrun.py} (100%)
create mode 100644 tests/functional/sh4eb/meson.build
rename tests/functional/{test_sh4eb_r2d.py => sh4eb/test_r2d.py} (100%)
create mode 100644 tests/functional/sparc/meson.build
create mode 120000 tests/functional/sparc/test_migration.py
rename tests/functional/{test_sparc_replay.py => sparc/test_replay.py} (100%)
rename tests/functional/{test_sparc_sun4m.py => sparc/test_sun4m.py} (100%)
create mode 100644 tests/functional/sparc64/meson.build
create mode 120000 tests/functional/sparc64/test_migration.py
rename tests/functional/{test_sparc64_sun4u.py => sparc64/test_sun4u.py} (100%)
rename tests/functional/{test_sparc64_tuxrun.py => sparc64/test_tuxrun.py} (100%)
create mode 100644 tests/functional/x86_64/meson.build
rename tests/functional/{ => x86_64}/test_acpi_bits.py (100%)
rename tests/functional/{ => x86_64}/test_cpu_queries.py (100%)
rename tests/functional/{test_x86_64_hotplug_blk.py => x86_64/test_hotplug_blk.py} (100%)
rename tests/functional/{test_x86_64_hotplug_cpu.py => x86_64/test_hotplug_cpu.py} (100%)
rename tests/functional/{ => x86_64}/test_intel_iommu.py (100%)
rename tests/functional/{test_x86_64_kvm_xen.py => x86_64/test_kvm_xen.py} (100%)
rename tests/functional/{ => x86_64}/test_linux_initrd.py (100%)
rename tests/functional/{ => x86_64}/test_mem_addr_space.py (100%)
rename tests/functional/{ => x86_64}/test_memlock.py (100%)
create mode 120000 tests/functional/x86_64/test_migration.py
rename tests/functional/{ => x86_64}/test_multiprocess.py (100%)
rename tests/functional/{ => x86_64}/test_netdev_ethtool.py (100%)
rename tests/functional/{ => x86_64}/test_pc_cpu_hotplug_props.py (100%)
rename tests/functional/{test_x86_64_replay.py => x86_64/test_replay.py} (100%)
rename tests/functional/{test_x86_64_reverse_debug.py => x86_64/test_reverse_debug.py} (100%)
rename tests/functional/{test_x86_64_tuxrun.py => x86_64/test_tuxrun.py} (100%)
rename tests/functional/{ => x86_64}/test_virtio_balloon.py (100%)
rename tests/functional/{ => x86_64}/test_virtio_gpu.py (100%)
rename tests/functional/{ => x86_64}/test_virtio_version.py (100%)
rename tests/functional/{ => x86_64}/test_vnc.py (100%)
rename tests/functional/{ => x86_64}/test_x86_cpu_model_versions.py (100%)
create mode 100644 tests/functional/xtensa/meson.build
rename tests/functional/{test_xtensa_lx60.py => xtensa/test_lx60.py} (100%)
rename tests/functional/{test_xtensa_replay.py => xtensa/test_replay.py} (100%)
diff --git a/tests/functional/aarch64/meson.build b/tests/functional/aarch64/meson.build
new file mode 100644
index 00000000000..ebb16282692
--- /dev/null
+++ b/tests/functional/aarch64/meson.build
@@ -0,0 +1,47 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_aarch64_timeouts = {
+ 'aspeed_ast2700' : 600,
+ 'aspeed_ast2700fc' : 600,
+ 'device_passthrough' : 720,
+ 'imx8mp_evk' : 240,
+ 'raspi4' : 480,
+ 'reverse_debug' : 180,
+ 'rme_virt' : 1200,
+ 'rme_sbsaref' : 1200,
+ 'sbsaref_alpine' : 1200,
+ 'sbsaref_freebsd' : 720,
+ 'smmu' : 720,
+ 'tuxrun' : 240,
+ 'virt' : 360,
+ 'virt_gpu' : 480,
+}
+
+tests_aarch64_system_quick = [
+ 'migration',
+]
+
+tests_aarch64_system_thorough = [
+ 'aspeed_ast2700',
+ 'aspeed_ast2700fc',
+ 'device_passthrough',
+ 'hotplug_pci',
+ 'imx8mp_evk',
+ 'raspi3',
+ 'raspi4',
+ 'replay',
+ 'reverse_debug',
+ 'rme_virt',
+ 'rme_sbsaref',
+ 'sbsaref',
+ 'sbsaref_alpine',
+ 'sbsaref_freebsd',
+ 'smmu',
+ 'tcg_plugins',
+ 'tuxrun',
+ 'virt',
+ 'virt_gpu',
+ 'xen',
+ 'xlnx_versal',
+ 'multiprocess',
+]
diff --git a/tests/functional/test_aarch64_aspeed_ast2700.py b/tests/functional/aarch64/test_aspeed_ast2700.py
similarity index 100%
rename from tests/functional/test_aarch64_aspeed_ast2700.py
rename to tests/functional/aarch64/test_aspeed_ast2700.py
diff --git a/tests/functional/test_aarch64_aspeed_ast2700fc.py b/tests/functional/aarch64/test_aspeed_ast2700fc.py
similarity index 100%
rename from tests/functional/test_aarch64_aspeed_ast2700fc.py
rename to tests/functional/aarch64/test_aspeed_ast2700fc.py
diff --git a/tests/functional/test_aarch64_device_passthrough.py b/tests/functional/aarch64/test_device_passthrough.py
similarity index 100%
rename from tests/functional/test_aarch64_device_passthrough.py
rename to tests/functional/aarch64/test_device_passthrough.py
diff --git a/tests/functional/test_aarch64_hotplug_pci.py b/tests/functional/aarch64/test_hotplug_pci.py
similarity index 100%
rename from tests/functional/test_aarch64_hotplug_pci.py
rename to tests/functional/aarch64/test_hotplug_pci.py
diff --git a/tests/functional/test_aarch64_imx8mp_evk.py b/tests/functional/aarch64/test_imx8mp_evk.py
similarity index 100%
rename from tests/functional/test_aarch64_imx8mp_evk.py
rename to tests/functional/aarch64/test_imx8mp_evk.py
diff --git a/tests/functional/aarch64/test_migration.py b/tests/functional/aarch64/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/aarch64/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/aarch64/test_multiprocess.py b/tests/functional/aarch64/test_multiprocess.py
new file mode 120000
index 00000000000..ff4ff5314a7
--- /dev/null
+++ b/tests/functional/aarch64/test_multiprocess.py
@@ -0,0 +1 @@
+../x86_64/test_multiprocess.py
\ No newline at end of file
diff --git a/tests/functional/test_aarch64_raspi3.py b/tests/functional/aarch64/test_raspi3.py
similarity index 100%
rename from tests/functional/test_aarch64_raspi3.py
rename to tests/functional/aarch64/test_raspi3.py
diff --git a/tests/functional/test_aarch64_raspi4.py b/tests/functional/aarch64/test_raspi4.py
similarity index 100%
rename from tests/functional/test_aarch64_raspi4.py
rename to tests/functional/aarch64/test_raspi4.py
diff --git a/tests/functional/test_aarch64_replay.py b/tests/functional/aarch64/test_replay.py
similarity index 100%
rename from tests/functional/test_aarch64_replay.py
rename to tests/functional/aarch64/test_replay.py
diff --git a/tests/functional/test_aarch64_reverse_debug.py b/tests/functional/aarch64/test_reverse_debug.py
similarity index 100%
rename from tests/functional/test_aarch64_reverse_debug.py
rename to tests/functional/aarch64/test_reverse_debug.py
diff --git a/tests/functional/test_aarch64_rme_sbsaref.py b/tests/functional/aarch64/test_rme_sbsaref.py
similarity index 98%
rename from tests/functional/test_aarch64_rme_sbsaref.py
rename to tests/functional/aarch64/test_rme_sbsaref.py
index 746770e776d..100f1c7738b 100755
--- a/tests/functional/test_aarch64_rme_sbsaref.py
+++ b/tests/functional/aarch64/test_rme_sbsaref.py
@@ -13,7 +13,7 @@
from qemu_test import QemuSystemTest, Asset, wait_for_console_pattern
from qemu_test import exec_command_and_wait_for_pattern
-from test_aarch64_rme_virt import test_realms_guest
+from test_rme_virt import test_realms_guest
class Aarch64RMESbsaRefMachine(QemuSystemTest):
diff --git a/tests/functional/test_aarch64_rme_virt.py b/tests/functional/aarch64/test_rme_virt.py
similarity index 100%
rename from tests/functional/test_aarch64_rme_virt.py
rename to tests/functional/aarch64/test_rme_virt.py
diff --git a/tests/functional/test_aarch64_sbsaref.py b/tests/functional/aarch64/test_sbsaref.py
similarity index 100%
rename from tests/functional/test_aarch64_sbsaref.py
rename to tests/functional/aarch64/test_sbsaref.py
diff --git a/tests/functional/test_aarch64_sbsaref_alpine.py b/tests/functional/aarch64/test_sbsaref_alpine.py
similarity index 97%
rename from tests/functional/test_aarch64_sbsaref_alpine.py
rename to tests/functional/aarch64/test_sbsaref_alpine.py
index 87769993831..abb8f5114bd 100755
--- a/tests/functional/test_aarch64_sbsaref_alpine.py
+++ b/tests/functional/aarch64/test_sbsaref_alpine.py
@@ -12,7 +12,7 @@
from qemu_test import QemuSystemTest, Asset, skipSlowTest
from qemu_test import wait_for_console_pattern
-from test_aarch64_sbsaref import fetch_firmware
+from test_sbsaref import fetch_firmware
class Aarch64SbsarefAlpine(QemuSystemTest):
diff --git a/tests/functional/test_aarch64_sbsaref_freebsd.py b/tests/functional/aarch64/test_sbsaref_freebsd.py
similarity index 97%
rename from tests/functional/test_aarch64_sbsaref_freebsd.py
rename to tests/functional/aarch64/test_sbsaref_freebsd.py
index 7ef016fba62..3b942f7795c 100755
--- a/tests/functional/test_aarch64_sbsaref_freebsd.py
+++ b/tests/functional/aarch64/test_sbsaref_freebsd.py
@@ -12,7 +12,7 @@
from qemu_test import QemuSystemTest, Asset, skipSlowTest
from qemu_test import wait_for_console_pattern
-from test_aarch64_sbsaref import fetch_firmware
+from test_sbsaref import fetch_firmware
class Aarch64SbsarefFreeBSD(QemuSystemTest):
diff --git a/tests/functional/test_aarch64_smmu.py b/tests/functional/aarch64/test_smmu.py
similarity index 100%
rename from tests/functional/test_aarch64_smmu.py
rename to tests/functional/aarch64/test_smmu.py
diff --git a/tests/functional/test_aarch64_tcg_plugins.py b/tests/functional/aarch64/test_tcg_plugins.py
similarity index 100%
rename from tests/functional/test_aarch64_tcg_plugins.py
rename to tests/functional/aarch64/test_tcg_plugins.py
diff --git a/tests/functional/test_aarch64_tuxrun.py b/tests/functional/aarch64/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_aarch64_tuxrun.py
rename to tests/functional/aarch64/test_tuxrun.py
diff --git a/tests/functional/test_aarch64_virt.py b/tests/functional/aarch64/test_virt.py
similarity index 100%
rename from tests/functional/test_aarch64_virt.py
rename to tests/functional/aarch64/test_virt.py
diff --git a/tests/functional/test_aarch64_virt_gpu.py b/tests/functional/aarch64/test_virt_gpu.py
similarity index 100%
rename from tests/functional/test_aarch64_virt_gpu.py
rename to tests/functional/aarch64/test_virt_gpu.py
diff --git a/tests/functional/test_aarch64_xen.py b/tests/functional/aarch64/test_xen.py
similarity index 100%
rename from tests/functional/test_aarch64_xen.py
rename to tests/functional/aarch64/test_xen.py
diff --git a/tests/functional/test_aarch64_xlnx_versal.py b/tests/functional/aarch64/test_xlnx_versal.py
similarity index 100%
rename from tests/functional/test_aarch64_xlnx_versal.py
rename to tests/functional/aarch64/test_xlnx_versal.py
diff --git a/tests/functional/alpha/meson.build b/tests/functional/alpha/meson.build
new file mode 100644
index 00000000000..a69ac82dd2c
--- /dev/null
+++ b/tests/functional/alpha/meson.build
@@ -0,0 +1,9 @@
+
+tests_alpha_system_quick = [
+ 'migration',
+]
+
+tests_alpha_system_thorough = [
+ 'clipper',
+ 'replay',
+]
diff --git a/tests/functional/test_alpha_clipper.py b/tests/functional/alpha/test_clipper.py
similarity index 100%
rename from tests/functional/test_alpha_clipper.py
rename to tests/functional/alpha/test_clipper.py
diff --git a/tests/functional/alpha/test_migration.py b/tests/functional/alpha/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/alpha/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/test_alpha_replay.py b/tests/functional/alpha/test_replay.py
similarity index 100%
rename from tests/functional/test_alpha_replay.py
rename to tests/functional/alpha/test_replay.py
diff --git a/tests/functional/arm/meson.build b/tests/functional/arm/meson.build
new file mode 100644
index 00000000000..59acfb10f1e
--- /dev/null
+++ b/tests/functional/arm/meson.build
@@ -0,0 +1,61 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_arm_timeouts = {
+ 'aspeed_palmetto' : 120,
+ 'aspeed_romulus' : 120,
+ 'aspeed_witherspoon' : 120,
+ 'aspeed_ast2500' : 720,
+ 'aspeed_ast2600' : 1200,
+ 'aspeed_bletchley' : 480,
+ 'aspeed_catalina' : 480,
+ 'aspeed_gb200nvl_bmc' : 480,
+ 'aspeed_rainier' : 480,
+ 'bpim2u' : 500,
+ 'collie' : 180,
+ 'cubieboard' : 360,
+ 'orangepi' : 540,
+ 'quanta_gsj' : 240,
+ 'raspi2' : 120,
+ 'replay' : 240,
+ 'tuxrun' : 240,
+ 'sx1' : 360,
+}
+
+tests_arm_system_quick = [
+ 'migration',
+]
+
+tests_arm_system_thorough = [
+ 'aspeed_ast1030',
+ 'aspeed_palmetto',
+ 'aspeed_romulus',
+ 'aspeed_witherspoon',
+ 'aspeed_ast2500',
+ 'aspeed_ast2600',
+ 'aspeed_bletchley',
+ 'aspeed_catalina',
+ 'aspeed_gb200nvl_bmc',
+ 'aspeed_rainier',
+ 'bpim2u',
+ 'canona1100',
+ 'collie',
+ 'cubieboard',
+ 'emcraft_sf2',
+ 'integratorcp',
+ 'microbit',
+ 'orangepi',
+ 'quanta_gsj',
+ 'raspi2',
+ 'realview',
+ 'replay',
+ 'smdkc210',
+ 'stellaris',
+ 'sx1',
+ 'vexpress',
+ 'virt',
+ 'tuxrun',
+]
+
+tests_arm_linuxuser_thorough = [
+ 'bflt',
+]
diff --git a/tests/functional/test_arm_aspeed_ast1030.py b/tests/functional/arm/test_aspeed_ast1030.py
similarity index 100%
rename from tests/functional/test_arm_aspeed_ast1030.py
rename to tests/functional/arm/test_aspeed_ast1030.py
diff --git a/tests/functional/test_arm_aspeed_ast2500.py b/tests/functional/arm/test_aspeed_ast2500.py
similarity index 100%
rename from tests/functional/test_arm_aspeed_ast2500.py
rename to tests/functional/arm/test_aspeed_ast2500.py
diff --git a/tests/functional/test_arm_aspeed_ast2600.py b/tests/functional/arm/test_aspeed_ast2600.py
similarity index 100%
rename from tests/functional/test_arm_aspeed_ast2600.py
rename to tests/functional/arm/test_aspeed_ast2600.py
diff --git a/tests/functional/test_arm_aspeed_bletchley.py b/tests/functional/arm/test_aspeed_bletchley.py
similarity index 100%
rename from tests/functional/test_arm_aspeed_bletchley.py
rename to tests/functional/arm/test_aspeed_bletchley.py
diff --git a/tests/functional/test_arm_aspeed_catalina.py b/tests/functional/arm/test_aspeed_catalina.py
similarity index 100%
rename from tests/functional/test_arm_aspeed_catalina.py
rename to tests/functional/arm/test_aspeed_catalina.py
diff --git a/tests/functional/test_arm_aspeed_gb200nvl_bmc.py b/tests/functional/arm/test_aspeed_gb200nvl_bmc.py
old mode 100644
new mode 100755
similarity index 100%
rename from tests/functional/test_arm_aspeed_gb200nvl_bmc.py
rename to tests/functional/arm/test_aspeed_gb200nvl_bmc.py
diff --git a/tests/functional/test_arm_aspeed_palmetto.py b/tests/functional/arm/test_aspeed_palmetto.py
similarity index 100%
rename from tests/functional/test_arm_aspeed_palmetto.py
rename to tests/functional/arm/test_aspeed_palmetto.py
diff --git a/tests/functional/test_arm_aspeed_rainier.py b/tests/functional/arm/test_aspeed_rainier.py
similarity index 100%
rename from tests/functional/test_arm_aspeed_rainier.py
rename to tests/functional/arm/test_aspeed_rainier.py
diff --git a/tests/functional/test_arm_aspeed_romulus.py b/tests/functional/arm/test_aspeed_romulus.py
similarity index 100%
rename from tests/functional/test_arm_aspeed_romulus.py
rename to tests/functional/arm/test_aspeed_romulus.py
diff --git a/tests/functional/test_arm_aspeed_witherspoon.py b/tests/functional/arm/test_aspeed_witherspoon.py
similarity index 100%
rename from tests/functional/test_arm_aspeed_witherspoon.py
rename to tests/functional/arm/test_aspeed_witherspoon.py
diff --git a/tests/functional/test_arm_bflt.py b/tests/functional/arm/test_bflt.py
similarity index 100%
rename from tests/functional/test_arm_bflt.py
rename to tests/functional/arm/test_bflt.py
diff --git a/tests/functional/test_arm_bpim2u.py b/tests/functional/arm/test_bpim2u.py
similarity index 100%
rename from tests/functional/test_arm_bpim2u.py
rename to tests/functional/arm/test_bpim2u.py
diff --git a/tests/functional/test_arm_canona1100.py b/tests/functional/arm/test_canona1100.py
similarity index 100%
rename from tests/functional/test_arm_canona1100.py
rename to tests/functional/arm/test_canona1100.py
diff --git a/tests/functional/test_arm_collie.py b/tests/functional/arm/test_collie.py
similarity index 100%
rename from tests/functional/test_arm_collie.py
rename to tests/functional/arm/test_collie.py
diff --git a/tests/functional/test_arm_cubieboard.py b/tests/functional/arm/test_cubieboard.py
similarity index 100%
rename from tests/functional/test_arm_cubieboard.py
rename to tests/functional/arm/test_cubieboard.py
diff --git a/tests/functional/test_arm_emcraft_sf2.py b/tests/functional/arm/test_emcraft_sf2.py
similarity index 100%
rename from tests/functional/test_arm_emcraft_sf2.py
rename to tests/functional/arm/test_emcraft_sf2.py
diff --git a/tests/functional/test_arm_integratorcp.py b/tests/functional/arm/test_integratorcp.py
similarity index 100%
rename from tests/functional/test_arm_integratorcp.py
rename to tests/functional/arm/test_integratorcp.py
diff --git a/tests/functional/test_arm_microbit.py b/tests/functional/arm/test_microbit.py
similarity index 100%
rename from tests/functional/test_arm_microbit.py
rename to tests/functional/arm/test_microbit.py
diff --git a/tests/functional/arm/test_migration.py b/tests/functional/arm/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/arm/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/test_arm_orangepi.py b/tests/functional/arm/test_orangepi.py
similarity index 100%
rename from tests/functional/test_arm_orangepi.py
rename to tests/functional/arm/test_orangepi.py
diff --git a/tests/functional/test_arm_quanta_gsj.py b/tests/functional/arm/test_quanta_gsj.py
similarity index 100%
rename from tests/functional/test_arm_quanta_gsj.py
rename to tests/functional/arm/test_quanta_gsj.py
diff --git a/tests/functional/test_arm_raspi2.py b/tests/functional/arm/test_raspi2.py
similarity index 100%
rename from tests/functional/test_arm_raspi2.py
rename to tests/functional/arm/test_raspi2.py
diff --git a/tests/functional/test_arm_realview.py b/tests/functional/arm/test_realview.py
similarity index 100%
rename from tests/functional/test_arm_realview.py
rename to tests/functional/arm/test_realview.py
diff --git a/tests/functional/test_arm_replay.py b/tests/functional/arm/test_replay.py
similarity index 100%
rename from tests/functional/test_arm_replay.py
rename to tests/functional/arm/test_replay.py
diff --git a/tests/functional/test_arm_smdkc210.py b/tests/functional/arm/test_smdkc210.py
similarity index 100%
rename from tests/functional/test_arm_smdkc210.py
rename to tests/functional/arm/test_smdkc210.py
diff --git a/tests/functional/test_arm_stellaris.py b/tests/functional/arm/test_stellaris.py
similarity index 100%
rename from tests/functional/test_arm_stellaris.py
rename to tests/functional/arm/test_stellaris.py
diff --git a/tests/functional/test_arm_sx1.py b/tests/functional/arm/test_sx1.py
similarity index 100%
rename from tests/functional/test_arm_sx1.py
rename to tests/functional/arm/test_sx1.py
diff --git a/tests/functional/test_arm_tuxrun.py b/tests/functional/arm/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_arm_tuxrun.py
rename to tests/functional/arm/test_tuxrun.py
diff --git a/tests/functional/test_arm_vexpress.py b/tests/functional/arm/test_vexpress.py
similarity index 100%
rename from tests/functional/test_arm_vexpress.py
rename to tests/functional/arm/test_vexpress.py
diff --git a/tests/functional/test_arm_virt.py b/tests/functional/arm/test_virt.py
similarity index 100%
rename from tests/functional/test_arm_virt.py
rename to tests/functional/arm/test_virt.py
diff --git a/tests/functional/avr/meson.build b/tests/functional/avr/meson.build
new file mode 100644
index 00000000000..b311ee89dc8
--- /dev/null
+++ b/tests/functional/avr/meson.build
@@ -0,0 +1,5 @@
+
+tests_avr_system_thorough = [
+ 'mega2560',
+ 'uno',
+]
diff --git a/tests/functional/test_avr_mega2560.py b/tests/functional/avr/test_mega2560.py
similarity index 100%
rename from tests/functional/test_avr_mega2560.py
rename to tests/functional/avr/test_mega2560.py
diff --git a/tests/functional/test_avr_uno.py b/tests/functional/avr/test_uno.py
similarity index 100%
rename from tests/functional/test_avr_uno.py
rename to tests/functional/avr/test_uno.py
diff --git a/tests/functional/test_empty_cpu_model.py b/tests/functional/generic/test_empty_cpu_model.py
similarity index 100%
rename from tests/functional/test_empty_cpu_model.py
rename to tests/functional/generic/test_empty_cpu_model.py
diff --git a/tests/functional/test_info_usernet.py b/tests/functional/generic/test_info_usernet.py
similarity index 100%
rename from tests/functional/test_info_usernet.py
rename to tests/functional/generic/test_info_usernet.py
diff --git a/tests/functional/test_migration.py b/tests/functional/generic/test_migration.py
similarity index 100%
rename from tests/functional/test_migration.py
rename to tests/functional/generic/test_migration.py
diff --git a/tests/functional/test_version.py b/tests/functional/generic/test_version.py
similarity index 100%
rename from tests/functional/test_version.py
rename to tests/functional/generic/test_version.py
diff --git a/tests/functional/hppa/meson.build b/tests/functional/hppa/meson.build
new file mode 100644
index 00000000000..046241562cb
--- /dev/null
+++ b/tests/functional/hppa/meson.build
@@ -0,0 +1,4 @@
+
+tests_hppa_system_quick = [
+ 'seabios',
+]
diff --git a/tests/functional/test_hppa_seabios.py b/tests/functional/hppa/test_seabios.py
similarity index 100%
rename from tests/functional/test_hppa_seabios.py
rename to tests/functional/hppa/test_seabios.py
diff --git a/tests/functional/i386/meson.build b/tests/functional/i386/meson.build
new file mode 100644
index 00000000000..90bed3cbc35
--- /dev/null
+++ b/tests/functional/i386/meson.build
@@ -0,0 +1,9 @@
+
+tests_i386_system_quick = [
+ 'migration',
+]
+
+tests_i386_system_thorough = [
+ 'replay',
+ 'tuxrun',
+]
diff --git a/tests/functional/i386/test_migration.py b/tests/functional/i386/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/i386/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/test_i386_replay.py b/tests/functional/i386/test_replay.py
similarity index 100%
rename from tests/functional/test_i386_replay.py
rename to tests/functional/i386/test_replay.py
diff --git a/tests/functional/test_i386_tuxrun.py b/tests/functional/i386/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_i386_tuxrun.py
rename to tests/functional/i386/test_tuxrun.py
diff --git a/tests/functional/loongarch64/meson.build b/tests/functional/loongarch64/meson.build
new file mode 100644
index 00000000000..90f2e4056f4
--- /dev/null
+++ b/tests/functional/loongarch64/meson.build
@@ -0,0 +1,4 @@
+
+tests_loongarch64_system_thorough = [
+ 'virt',
+]
diff --git a/tests/functional/test_loongarch64_virt.py b/tests/functional/loongarch64/test_virt.py
similarity index 100%
rename from tests/functional/test_loongarch64_virt.py
rename to tests/functional/loongarch64/test_virt.py
diff --git a/tests/functional/m68k/meson.build b/tests/functional/m68k/meson.build
new file mode 100644
index 00000000000..c499fecb3cf
--- /dev/null
+++ b/tests/functional/m68k/meson.build
@@ -0,0 +1,8 @@
+
+tests_m68k_system_thorough = [
+ 'mcf5208evb',
+ 'nextcube',
+ 'replay',
+ 'q800',
+ 'tuxrun',
+]
diff --git a/tests/functional/test_m68k_mcf5208evb.py b/tests/functional/m68k/test_mcf5208evb.py
similarity index 100%
rename from tests/functional/test_m68k_mcf5208evb.py
rename to tests/functional/m68k/test_mcf5208evb.py
diff --git a/tests/functional/test_m68k_nextcube.py b/tests/functional/m68k/test_nextcube.py
similarity index 100%
rename from tests/functional/test_m68k_nextcube.py
rename to tests/functional/m68k/test_nextcube.py
diff --git a/tests/functional/test_m68k_q800.py b/tests/functional/m68k/test_q800.py
similarity index 100%
rename from tests/functional/test_m68k_q800.py
rename to tests/functional/m68k/test_q800.py
diff --git a/tests/functional/test_m68k_replay.py b/tests/functional/m68k/test_replay.py
similarity index 100%
rename from tests/functional/test_m68k_replay.py
rename to tests/functional/m68k/test_replay.py
diff --git a/tests/functional/test_m68k_tuxrun.py b/tests/functional/m68k/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_m68k_tuxrun.py
rename to tests/functional/m68k/test_tuxrun.py
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index 050c9000b95..c7ee4b1f172 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -9,63 +9,33 @@ if get_option('tcg_interpreter')
subdir_done()
endif
-# Timeouts for individual tests that can be slow e.g. with debugging enabled
-test_timeouts = {
- 'aarch64_aspeed_ast2700' : 600,
- 'aarch64_aspeed_ast2700fc' : 600,
- 'aarch64_device_passthrough' : 720,
- 'aarch64_imx8mp_evk' : 240,
- 'aarch64_raspi4' : 480,
- 'aarch64_reverse_debug' : 180,
- 'aarch64_rme_virt' : 1200,
- 'aarch64_rme_sbsaref' : 1200,
- 'aarch64_sbsaref_alpine' : 1200,
- 'aarch64_sbsaref_freebsd' : 720,
- 'aarch64_smmu' : 720,
- 'aarch64_tuxrun' : 240,
- 'aarch64_virt' : 360,
- 'aarch64_virt_gpu' : 480,
- 'acpi_bits' : 420,
- 'arm_aspeed_palmetto' : 120,
- 'arm_aspeed_romulus' : 120,
- 'arm_aspeed_witherspoon' : 120,
- 'arm_aspeed_ast2500' : 720,
- 'arm_aspeed_ast2600' : 1200,
- 'arm_aspeed_bletchley' : 480,
- 'arm_aspeed_catalina' : 480,
- 'arm_aspeed_gb200nvl_bmc' : 480,
- 'arm_aspeed_rainier' : 480,
- 'arm_bpim2u' : 500,
- 'arm_collie' : 180,
- 'arm_cubieboard' : 360,
- 'arm_orangepi' : 540,
- 'arm_quanta_gsj' : 240,
- 'arm_raspi2' : 120,
- 'arm_replay' : 240,
- 'arm_tuxrun' : 240,
- 'arm_sx1' : 360,
- 'intel_iommu': 300,
- 'mips_malta' : 480,
- 'mipsel_malta' : 420,
- 'mipsel_replay' : 480,
- 'mips64_malta' : 240,
- 'mips64el_malta' : 420,
- 'mips64el_replay' : 180,
- 'netdev_ethtool' : 180,
- 'ppc_40p' : 240,
- 'ppc64_hv' : 1000,
- 'ppc64_powernv' : 480,
- 'ppc64_pseries' : 480,
- 'ppc64_replay' : 210,
- 'ppc64_tuxrun' : 420,
- 'ppc64_mac99' : 120,
- 'riscv64_tuxrun' : 120,
- 's390x_ccw_virtio' : 420,
- 'sh4_tuxrun' : 240,
- 'virtio_balloon': 120,
- 'x86_64_kvm_xen' : 180,
- 'x86_64_replay' : 480,
-}
+subdir('aarch64')
+subdir('alpha')
+subdir('arm')
+subdir('avr')
+subdir('hppa')
+subdir('i386')
+subdir('loongarch64')
+subdir('m68k')
+subdir('microblaze')
+subdir('microblazeel')
+subdir('mips')
+subdir('mips64')
+subdir('mips64el')
+subdir('mipsel')
+subdir('or1k')
+subdir('ppc')
+subdir('ppc64')
+subdir('riscv32')
+subdir('riscv64')
+subdir('rx')
+subdir('s390x')
+subdir('sh4')
+subdir('sh4eb')
+subdir('sparc')
+subdir('sparc64')
+subdir('x86_64')
+subdir('xtensa')
tests_generic_system = [
'empty_cpu_model',
@@ -79,271 +49,6 @@ tests_generic_linuxuser = [
tests_generic_bsduser = [
]
-tests_aarch64_system_quick = [
- 'migration',
-]
-
-tests_aarch64_system_thorough = [
- 'aarch64_aspeed_ast2700',
- 'aarch64_aspeed_ast2700fc',
- 'aarch64_device_passthrough',
- 'aarch64_hotplug_pci',
- 'aarch64_imx8mp_evk',
- 'aarch64_raspi3',
- 'aarch64_raspi4',
- 'aarch64_replay',
- 'aarch64_reverse_debug',
- 'aarch64_rme_virt',
- 'aarch64_rme_sbsaref',
- 'aarch64_sbsaref',
- 'aarch64_sbsaref_alpine',
- 'aarch64_sbsaref_freebsd',
- 'aarch64_smmu',
- 'aarch64_tcg_plugins',
- 'aarch64_tuxrun',
- 'aarch64_virt',
- 'aarch64_virt_gpu',
- 'aarch64_xen',
- 'aarch64_xlnx_versal',
- 'multiprocess',
-]
-
-tests_alpha_system_quick = [
- 'migration',
-]
-
-tests_alpha_system_thorough = [
- 'alpha_clipper',
- 'alpha_replay',
-]
-
-tests_arm_system_quick = [
- 'migration',
-]
-
-tests_arm_system_thorough = [
- 'arm_aspeed_ast1030',
- 'arm_aspeed_palmetto',
- 'arm_aspeed_romulus',
- 'arm_aspeed_witherspoon',
- 'arm_aspeed_ast2500',
- 'arm_aspeed_ast2600',
- 'arm_aspeed_bletchley',
- 'arm_aspeed_catalina',
- 'arm_aspeed_gb200nvl_bmc',
- 'arm_aspeed_rainier',
- 'arm_bpim2u',
- 'arm_canona1100',
- 'arm_collie',
- 'arm_cubieboard',
- 'arm_emcraft_sf2',
- 'arm_integratorcp',
- 'arm_microbit',
- 'arm_orangepi',
- 'arm_quanta_gsj',
- 'arm_raspi2',
- 'arm_realview',
- 'arm_replay',
- 'arm_smdkc210',
- 'arm_stellaris',
- 'arm_sx1',
- 'arm_vexpress',
- 'arm_virt',
- 'arm_tuxrun',
-]
-
-tests_arm_linuxuser_thorough = [
- 'arm_bflt',
-]
-
-tests_avr_system_thorough = [
- 'avr_mega2560',
- 'avr_uno',
-]
-
-tests_hppa_system_quick = [
- 'hppa_seabios',
-]
-
-tests_i386_system_quick = [
- 'migration',
-]
-
-tests_i386_system_thorough = [
- 'i386_replay',
- 'i386_tuxrun',
-]
-
-tests_loongarch64_system_thorough = [
- 'loongarch64_virt',
-]
-
-tests_m68k_system_thorough = [
- 'm68k_mcf5208evb',
- 'm68k_nextcube',
- 'm68k_replay',
- 'm68k_q800',
- 'm68k_tuxrun',
-]
-
-tests_microblaze_system_thorough = [
- 'microblaze_replay',
- 'microblaze_s3adsp1800'
-]
-
-tests_microblazeel_system_thorough = [
- 'microblazeel_s3adsp1800'
-]
-
-tests_mips_system_thorough = [
- 'mips_malta',
- 'mips_replay',
- 'mips_tuxrun',
-]
-
-tests_mipsel_system_thorough = [
- 'mipsel_malta',
- 'mipsel_replay',
- 'mipsel_tuxrun',
-]
-
-tests_mips64_system_thorough = [
- 'mips64_malta',
- 'mips64_tuxrun',
-]
-
-tests_mips64el_system_thorough = [
- 'mips64el_fuloong2e',
- 'mips64el_loongson3v',
- 'mips64el_malta',
- 'mips64el_replay',
- 'mips64el_tuxrun',
-]
-
-tests_or1k_system_thorough = [
- 'or1k_replay',
- 'or1k_sim',
-]
-
-tests_ppc_system_quick = [
- 'migration',
- 'ppc_74xx',
-]
-
-tests_ppc_system_thorough = [
- 'ppc_40p',
- 'ppc_amiga',
- 'ppc_bamboo',
- 'ppc_mac',
- 'ppc_mpc8544ds',
- 'ppc_replay',
- 'ppc_sam460ex',
- 'ppc_tuxrun',
- 'ppc_virtex_ml507',
-]
-
-tests_ppc64_system_quick = [
- 'migration',
-]
-
-tests_ppc64_system_thorough = [
- 'ppc64_e500',
- 'ppc64_hv',
- 'ppc64_powernv',
- 'ppc64_pseries',
- 'ppc64_replay',
- 'ppc64_reverse_debug',
- 'ppc64_tuxrun',
- 'ppc64_mac99',
-]
-
-tests_riscv32_system_quick = [
- 'migration',
- 'riscv_opensbi',
-]
-
-tests_riscv32_system_thorough = [
- 'riscv32_tuxrun',
-]
-
-tests_riscv64_system_quick = [
- 'migration',
- 'riscv_opensbi',
-]
-
-tests_riscv64_system_thorough = [
- 'riscv64_tuxrun',
-]
-
-tests_rx_system_thorough = [
- 'rx_gdbsim',
-]
-
-tests_s390x_system_thorough = [
- 's390x_ccw_virtio',
- 's390x_replay',
- 's390x_topology',
- 's390x_tuxrun',
-]
-
-tests_sh4_system_thorough = [
- 'sh4_r2d',
- 'sh4_tuxrun',
-]
-
-tests_sh4eb_system_thorough = [
- 'sh4eb_r2d',
-]
-
-tests_sparc_system_quick = [
- 'migration',
-]
-
-tests_sparc_system_thorough = [
- 'sparc_replay',
- 'sparc_sun4m',
-]
-
-tests_sparc64_system_quick = [
- 'migration',
-]
-
-tests_sparc64_system_thorough = [
- 'sparc64_sun4u',
- 'sparc64_tuxrun',
-]
-
-tests_x86_64_system_quick = [
- 'cpu_queries',
- 'mem_addr_space',
- 'migration',
- 'pc_cpu_hotplug_props',
- 'virtio_version',
- 'x86_cpu_model_versions',
- 'vnc',
- 'memlock',
-]
-
-tests_x86_64_system_thorough = [
- 'acpi_bits',
- 'intel_iommu',
- 'linux_initrd',
- 'multiprocess',
- 'netdev_ethtool',
- 'virtio_balloon',
- 'virtio_gpu',
- 'x86_64_hotplug_blk',
- 'x86_64_hotplug_cpu',
- 'x86_64_kvm_xen',
- 'x86_64_replay',
- 'x86_64_reverse_debug',
- 'x86_64_tuxrun',
-]
-
-tests_xtensa_system_thorough = [
- 'xtensa_lx60',
- 'xtensa_replay',
-]
precache_all = []
foreach speed : ['quick', 'thorough']
@@ -386,7 +91,11 @@ foreach speed : ['quick', 'thorough']
foreach test : target_tests
testname = '@0@-@1@'.format(target_base, test)
- testfile = 'test_' + test + '.py'
+ if fs.exists('generic' / 'test_' + test + '.py')
+ testfile = 'generic' / 'test_' + test + '.py'
+ else
+ testfile = target_base / 'test_' + test + '.py'
+ endif
testpath = meson.current_source_dir() / testfile
teststamp = testname + '.tstamp'
test_precache_env = environment()
@@ -400,6 +109,11 @@ foreach speed : ['quick', 'thorough']
build_by_default: false,
env: test_precache_env)
precache_all += precache
+ if is_variable('test_' + target_base + '_timeouts')
+ time_out = get_variable('test_' + target_base + '_timeouts').get(test, 90)
+ else
+ time_out = 90
+ endif
# Ideally we would add 'precache' to 'depends' here, such that
# 'build_by_default: false' lets the pre-caching automatically
@@ -415,8 +129,8 @@ foreach speed : ['quick', 'thorough']
env: test_env,
args: [testpath],
protocol: 'tap',
- timeout: test_timeouts.get(test, 90),
- priority: test_timeouts.get(test, 90),
+ timeout: time_out,
+ priority: time_out,
suite: suites)
endforeach
endforeach
diff --git a/tests/functional/microblaze/meson.build b/tests/functional/microblaze/meson.build
new file mode 100644
index 00000000000..a067393acdc
--- /dev/null
+++ b/tests/functional/microblaze/meson.build
@@ -0,0 +1,5 @@
+
+tests_microblaze_system_thorough = [
+ 'replay',
+ 's3adsp1800'
+]
diff --git a/tests/functional/test_microblaze_replay.py b/tests/functional/microblaze/test_replay.py
similarity index 100%
rename from tests/functional/test_microblaze_replay.py
rename to tests/functional/microblaze/test_replay.py
diff --git a/tests/functional/test_microblaze_s3adsp1800.py b/tests/functional/microblaze/test_s3adsp1800.py
similarity index 100%
rename from tests/functional/test_microblaze_s3adsp1800.py
rename to tests/functional/microblaze/test_s3adsp1800.py
diff --git a/tests/functional/microblazeel/meson.build b/tests/functional/microblazeel/meson.build
new file mode 100644
index 00000000000..69e3f58dd81
--- /dev/null
+++ b/tests/functional/microblazeel/meson.build
@@ -0,0 +1,4 @@
+
+tests_microblazeel_system_thorough = [
+ 's3adsp1800'
+]
diff --git a/tests/functional/test_microblazeel_s3adsp1800.py b/tests/functional/microblazeel/test_s3adsp1800.py
similarity index 92%
rename from tests/functional/test_microblazeel_s3adsp1800.py
rename to tests/functional/microblazeel/test_s3adsp1800.py
index 915902d48bd..75ce8856ed1 100755
--- a/tests/functional/test_microblazeel_s3adsp1800.py
+++ b/tests/functional/microblazeel/test_s3adsp1800.py
@@ -7,7 +7,7 @@
# This work is licensed under the terms of the GNU GPL, version 2 or
# later. See the COPYING file in the top-level directory.
-from test_microblaze_s3adsp1800 import MicroblazeMachine
+from microblaze.test_s3adsp1800 import MicroblazeMachine
class MicroblazeLittleEndianMachine(MicroblazeMachine):
diff --git a/tests/functional/mips/meson.build b/tests/functional/mips/meson.build
new file mode 100644
index 00000000000..3c09f461770
--- /dev/null
+++ b/tests/functional/mips/meson.build
@@ -0,0 +1,11 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_mips_timeouts = {
+ 'malta' : 480,
+}
+
+tests_mips_system_thorough = [
+ 'malta',
+ 'replay',
+ 'tuxrun',
+]
diff --git a/tests/functional/test_mips_malta.py b/tests/functional/mips/test_malta.py
similarity index 100%
rename from tests/functional/test_mips_malta.py
rename to tests/functional/mips/test_malta.py
diff --git a/tests/functional/test_mips_replay.py b/tests/functional/mips/test_replay.py
similarity index 100%
rename from tests/functional/test_mips_replay.py
rename to tests/functional/mips/test_replay.py
diff --git a/tests/functional/test_mips_tuxrun.py b/tests/functional/mips/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_mips_tuxrun.py
rename to tests/functional/mips/test_tuxrun.py
diff --git a/tests/functional/mips64/meson.build b/tests/functional/mips64/meson.build
new file mode 100644
index 00000000000..65166fc1a45
--- /dev/null
+++ b/tests/functional/mips64/meson.build
@@ -0,0 +1,10 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_mips64_timeouts = {
+ 'malta' : 240,
+}
+
+tests_mips64_system_thorough = [
+ 'malta',
+ 'tuxrun',
+]
diff --git a/tests/functional/test_mips64_malta.py b/tests/functional/mips64/test_malta.py
similarity index 96%
rename from tests/functional/test_mips64_malta.py
rename to tests/functional/mips64/test_malta.py
index 53c3e0c1221..a553d3c5bc7 100755
--- a/tests/functional/test_mips64_malta.py
+++ b/tests/functional/mips64/test_malta.py
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later
from qemu_test import LinuxKernelTest, Asset
-from test_mips_malta import mips_check_wheezy
+from mips.test_malta import mips_check_wheezy
class MaltaMachineConsole(LinuxKernelTest):
diff --git a/tests/functional/test_mips64_tuxrun.py b/tests/functional/mips64/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_mips64_tuxrun.py
rename to tests/functional/mips64/test_tuxrun.py
diff --git a/tests/functional/mips64el/meson.build b/tests/functional/mips64el/meson.build
new file mode 100644
index 00000000000..096b12dc607
--- /dev/null
+++ b/tests/functional/mips64el/meson.build
@@ -0,0 +1,14 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_mips64el_timeouts = {
+ 'malta' : 420,
+ 'replay' : 180,
+}
+
+tests_mips64el_system_thorough = [
+ 'fuloong2e',
+ 'loongson3v',
+ 'malta',
+ 'replay',
+ 'tuxrun',
+]
diff --git a/tests/functional/test_mips64el_fuloong2e.py b/tests/functional/mips64el/test_fuloong2e.py
similarity index 100%
rename from tests/functional/test_mips64el_fuloong2e.py
rename to tests/functional/mips64el/test_fuloong2e.py
diff --git a/tests/functional/test_mips64el_loongson3v.py b/tests/functional/mips64el/test_loongson3v.py
similarity index 100%
rename from tests/functional/test_mips64el_loongson3v.py
rename to tests/functional/mips64el/test_loongson3v.py
diff --git a/tests/functional/test_mips64el_malta.py b/tests/functional/mips64el/test_malta.py
similarity index 98%
rename from tests/functional/test_mips64el_malta.py
rename to tests/functional/mips64el/test_malta.py
index 3cc79b74c18..8fdc49b3005 100755
--- a/tests/functional/test_mips64el_malta.py
+++ b/tests/functional/mips64el/test_malta.py
@@ -16,7 +16,7 @@
from qemu_test import exec_command_and_wait_for_pattern
from qemu_test import skipIfMissingImports, skipFlakyTest, skipUntrustedTest
-from test_mips_malta import mips_check_wheezy
+from mips.test_malta import mips_check_wheezy
class MaltaMachineConsole(LinuxKernelTest):
@@ -191,7 +191,7 @@ def test_mips_malta_i6400_framebuffer_logo_8cores(self):
self.do_test_i6400_framebuffer_logo(8)
-from test_mipsel_malta import MaltaMachineYAMON
+from mipsel.test_malta import MaltaMachineYAMON
if __name__ == '__main__':
LinuxKernelTest.main()
diff --git a/tests/functional/test_mips64el_replay.py b/tests/functional/mips64el/test_replay.py
similarity index 100%
rename from tests/functional/test_mips64el_replay.py
rename to tests/functional/mips64el/test_replay.py
diff --git a/tests/functional/test_mips64el_tuxrun.py b/tests/functional/mips64el/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_mips64el_tuxrun.py
rename to tests/functional/mips64el/test_tuxrun.py
diff --git a/tests/functional/mipsel/meson.build b/tests/functional/mipsel/meson.build
new file mode 100644
index 00000000000..f719f03e1a3
--- /dev/null
+++ b/tests/functional/mipsel/meson.build
@@ -0,0 +1,12 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_mipsel_timeouts = {
+ 'malta' : 420,
+ 'replay' : 480,
+}
+
+tests_mipsel_system_thorough = [
+ 'malta',
+ 'replay',
+ 'tuxrun',
+]
diff --git a/tests/functional/test_mipsel_malta.py b/tests/functional/mipsel/test_malta.py
similarity index 98%
rename from tests/functional/test_mipsel_malta.py
rename to tests/functional/mipsel/test_malta.py
index 9ee2884da8e..427e163d19d 100755
--- a/tests/functional/test_mipsel_malta.py
+++ b/tests/functional/mipsel/test_malta.py
@@ -13,7 +13,7 @@
from qemu_test import interrupt_interactive_console_until_pattern
from qemu_test import wait_for_console_pattern
-from test_mips_malta import mips_check_wheezy
+from mips.test_malta import mips_check_wheezy
class MaltaMachineConsole(LinuxKernelTest):
diff --git a/tests/functional/test_mipsel_replay.py b/tests/functional/mipsel/test_replay.py
similarity index 100%
rename from tests/functional/test_mipsel_replay.py
rename to tests/functional/mipsel/test_replay.py
diff --git a/tests/functional/test_mipsel_tuxrun.py b/tests/functional/mipsel/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_mipsel_tuxrun.py
rename to tests/functional/mipsel/test_tuxrun.py
diff --git a/tests/functional/or1k/meson.build b/tests/functional/or1k/meson.build
new file mode 100644
index 00000000000..e439087d938
--- /dev/null
+++ b/tests/functional/or1k/meson.build
@@ -0,0 +1,5 @@
+
+tests_or1k_system_thorough = [
+ 'replay',
+ 'sim',
+]
diff --git a/tests/functional/test_or1k_replay.py b/tests/functional/or1k/test_replay.py
similarity index 100%
rename from tests/functional/test_or1k_replay.py
rename to tests/functional/or1k/test_replay.py
diff --git a/tests/functional/test_or1k_sim.py b/tests/functional/or1k/test_sim.py
similarity index 100%
rename from tests/functional/test_or1k_sim.py
rename to tests/functional/or1k/test_sim.py
diff --git a/tests/functional/ppc/meson.build b/tests/functional/ppc/meson.build
new file mode 100644
index 00000000000..81f73a44417
--- /dev/null
+++ b/tests/functional/ppc/meson.build
@@ -0,0 +1,22 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_ppc_timeouts = {
+ '40p' : 240,
+}
+
+tests_ppc_system_quick = [
+ 'migration',
+ '74xx',
+]
+
+tests_ppc_system_thorough = [
+ '40p',
+ 'amiga',
+ 'bamboo',
+ 'mac',
+ 'mpc8544ds',
+ 'replay',
+ 'sam460ex',
+ 'tuxrun',
+ 'virtex_ml507',
+]
diff --git a/tests/functional/test_ppc_40p.py b/tests/functional/ppc/test_40p.py
similarity index 100%
rename from tests/functional/test_ppc_40p.py
rename to tests/functional/ppc/test_40p.py
diff --git a/tests/functional/test_ppc_74xx.py b/tests/functional/ppc/test_74xx.py
similarity index 100%
rename from tests/functional/test_ppc_74xx.py
rename to tests/functional/ppc/test_74xx.py
diff --git a/tests/functional/test_ppc_amiga.py b/tests/functional/ppc/test_amiga.py
similarity index 100%
rename from tests/functional/test_ppc_amiga.py
rename to tests/functional/ppc/test_amiga.py
diff --git a/tests/functional/test_ppc_bamboo.py b/tests/functional/ppc/test_bamboo.py
similarity index 100%
rename from tests/functional/test_ppc_bamboo.py
rename to tests/functional/ppc/test_bamboo.py
diff --git a/tests/functional/test_ppc_mac.py b/tests/functional/ppc/test_mac.py
similarity index 100%
rename from tests/functional/test_ppc_mac.py
rename to tests/functional/ppc/test_mac.py
diff --git a/tests/functional/ppc/test_migration.py b/tests/functional/ppc/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/ppc/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/test_ppc_mpc8544ds.py b/tests/functional/ppc/test_mpc8544ds.py
similarity index 100%
rename from tests/functional/test_ppc_mpc8544ds.py
rename to tests/functional/ppc/test_mpc8544ds.py
diff --git a/tests/functional/test_ppc_replay.py b/tests/functional/ppc/test_replay.py
similarity index 100%
rename from tests/functional/test_ppc_replay.py
rename to tests/functional/ppc/test_replay.py
diff --git a/tests/functional/test_ppc_sam460ex.py b/tests/functional/ppc/test_sam460ex.py
similarity index 100%
rename from tests/functional/test_ppc_sam460ex.py
rename to tests/functional/ppc/test_sam460ex.py
diff --git a/tests/functional/test_ppc_tuxrun.py b/tests/functional/ppc/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_ppc_tuxrun.py
rename to tests/functional/ppc/test_tuxrun.py
diff --git a/tests/functional/test_ppc_virtex_ml507.py b/tests/functional/ppc/test_virtex_ml507.py
similarity index 100%
rename from tests/functional/test_ppc_virtex_ml507.py
rename to tests/functional/ppc/test_virtex_ml507.py
diff --git a/tests/functional/ppc64/meson.build b/tests/functional/ppc64/meson.build
new file mode 100644
index 00000000000..58867c3b5b6
--- /dev/null
+++ b/tests/functional/ppc64/meson.build
@@ -0,0 +1,25 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_ppc64_timeouts = {
+ 'hv' : 1000,
+ 'powernv' : 480,
+ 'pseries' : 480,
+ 'replay' : 210,
+ 'tuxrun' : 420,
+ 'mac99' : 120,
+}
+
+tests_ppc64_system_quick = [
+ 'migration',
+]
+
+tests_ppc64_system_thorough = [
+ 'e500',
+ 'hv',
+ 'powernv',
+ 'pseries',
+ 'replay',
+ 'reverse_debug',
+ 'tuxrun',
+ 'mac99',
+]
diff --git a/tests/functional/test_ppc64_e500.py b/tests/functional/ppc64/test_e500.py
similarity index 100%
rename from tests/functional/test_ppc64_e500.py
rename to tests/functional/ppc64/test_e500.py
diff --git a/tests/functional/test_ppc64_hv.py b/tests/functional/ppc64/test_hv.py
similarity index 100%
rename from tests/functional/test_ppc64_hv.py
rename to tests/functional/ppc64/test_hv.py
diff --git a/tests/functional/test_ppc64_mac99.py b/tests/functional/ppc64/test_mac99.py
similarity index 100%
rename from tests/functional/test_ppc64_mac99.py
rename to tests/functional/ppc64/test_mac99.py
diff --git a/tests/functional/ppc64/test_migration.py b/tests/functional/ppc64/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/ppc64/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/test_ppc64_powernv.py b/tests/functional/ppc64/test_powernv.py
similarity index 100%
rename from tests/functional/test_ppc64_powernv.py
rename to tests/functional/ppc64/test_powernv.py
diff --git a/tests/functional/test_ppc64_pseries.py b/tests/functional/ppc64/test_pseries.py
similarity index 100%
rename from tests/functional/test_ppc64_pseries.py
rename to tests/functional/ppc64/test_pseries.py
diff --git a/tests/functional/test_ppc64_replay.py b/tests/functional/ppc64/test_replay.py
similarity index 100%
rename from tests/functional/test_ppc64_replay.py
rename to tests/functional/ppc64/test_replay.py
diff --git a/tests/functional/test_ppc64_reverse_debug.py b/tests/functional/ppc64/test_reverse_debug.py
similarity index 100%
rename from tests/functional/test_ppc64_reverse_debug.py
rename to tests/functional/ppc64/test_reverse_debug.py
diff --git a/tests/functional/test_ppc64_tuxrun.py b/tests/functional/ppc64/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_ppc64_tuxrun.py
rename to tests/functional/ppc64/test_tuxrun.py
diff --git a/tests/functional/riscv32/meson.build b/tests/functional/riscv32/meson.build
new file mode 100644
index 00000000000..19298b564fe
--- /dev/null
+++ b/tests/functional/riscv32/meson.build
@@ -0,0 +1,9 @@
+
+tests_riscv32_system_quick = [
+ 'migration',
+ 'opensbi',
+]
+
+tests_riscv32_system_thorough = [
+ 'tuxrun',
+]
diff --git a/tests/functional/riscv32/test_migration.py b/tests/functional/riscv32/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/riscv32/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/riscv32/test_opensbi.py b/tests/functional/riscv32/test_opensbi.py
new file mode 120000
index 00000000000..67763bc7829
--- /dev/null
+++ b/tests/functional/riscv32/test_opensbi.py
@@ -0,0 +1 @@
+../riscv64/test_opensbi.py
\ No newline at end of file
diff --git a/tests/functional/test_riscv32_tuxrun.py b/tests/functional/riscv32/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_riscv32_tuxrun.py
rename to tests/functional/riscv32/test_tuxrun.py
diff --git a/tests/functional/riscv64/meson.build b/tests/functional/riscv64/meson.build
new file mode 100644
index 00000000000..c03772882cb
--- /dev/null
+++ b/tests/functional/riscv64/meson.build
@@ -0,0 +1,13 @@
+
+test_riscv64_timeouts = {
+ 'tuxrun' : 120,
+}
+
+tests_riscv64_system_quick = [
+ 'migration',
+ 'opensbi',
+]
+
+tests_riscv64_system_thorough = [
+ 'tuxrun',
+]
diff --git a/tests/functional/test_riscv_opensbi.py b/tests/functional/riscv64/test_opensbi.py
similarity index 100%
rename from tests/functional/test_riscv_opensbi.py
rename to tests/functional/riscv64/test_opensbi.py
diff --git a/tests/functional/test_riscv64_tuxrun.py b/tests/functional/riscv64/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_riscv64_tuxrun.py
rename to tests/functional/riscv64/test_tuxrun.py
diff --git a/tests/functional/rx/meson.build b/tests/functional/rx/meson.build
new file mode 100644
index 00000000000..da311c169e8
--- /dev/null
+++ b/tests/functional/rx/meson.build
@@ -0,0 +1,4 @@
+
+tests_rx_system_thorough = [
+ 'gdbsim',
+]
diff --git a/tests/functional/test_rx_gdbsim.py b/tests/functional/rx/test_gdbsim.py
similarity index 100%
rename from tests/functional/test_rx_gdbsim.py
rename to tests/functional/rx/test_gdbsim.py
diff --git a/tests/functional/s390x/meson.build b/tests/functional/s390x/meson.build
new file mode 100644
index 00000000000..892e7d6dd52
--- /dev/null
+++ b/tests/functional/s390x/meson.build
@@ -0,0 +1,12 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_s390x_timeouts = {
+ 'ccw_virtio' : 420,
+}
+
+tests_s390x_system_thorough = [
+ 'ccw_virtio',
+ 'replay',
+ 'topology',
+ 'tuxrun',
+]
diff --git a/tests/functional/test_s390x_ccw_virtio.py b/tests/functional/s390x/test_ccw_virtio.py
similarity index 100%
rename from tests/functional/test_s390x_ccw_virtio.py
rename to tests/functional/s390x/test_ccw_virtio.py
diff --git a/tests/functional/test_s390x_replay.py b/tests/functional/s390x/test_replay.py
similarity index 100%
rename from tests/functional/test_s390x_replay.py
rename to tests/functional/s390x/test_replay.py
diff --git a/tests/functional/test_s390x_topology.py b/tests/functional/s390x/test_topology.py
similarity index 100%
rename from tests/functional/test_s390x_topology.py
rename to tests/functional/s390x/test_topology.py
diff --git a/tests/functional/test_s390x_tuxrun.py b/tests/functional/s390x/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_s390x_tuxrun.py
rename to tests/functional/s390x/test_tuxrun.py
diff --git a/tests/functional/sh4/meson.build b/tests/functional/sh4/meson.build
new file mode 100644
index 00000000000..d731581048a
--- /dev/null
+++ b/tests/functional/sh4/meson.build
@@ -0,0 +1,10 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_sh4_timeouts = {
+ 'tuxrun' : 240,
+}
+
+tests_sh4_system_thorough = [
+ 'r2d',
+ 'tuxrun',
+]
diff --git a/tests/functional/test_sh4_r2d.py b/tests/functional/sh4/test_r2d.py
similarity index 100%
rename from tests/functional/test_sh4_r2d.py
rename to tests/functional/sh4/test_r2d.py
diff --git a/tests/functional/test_sh4_tuxrun.py b/tests/functional/sh4/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_sh4_tuxrun.py
rename to tests/functional/sh4/test_tuxrun.py
diff --git a/tests/functional/sh4eb/meson.build b/tests/functional/sh4eb/meson.build
new file mode 100644
index 00000000000..5575e235776
--- /dev/null
+++ b/tests/functional/sh4eb/meson.build
@@ -0,0 +1,4 @@
+
+tests_sh4eb_system_thorough = [
+ 'r2d',
+]
diff --git a/tests/functional/test_sh4eb_r2d.py b/tests/functional/sh4eb/test_r2d.py
similarity index 100%
rename from tests/functional/test_sh4eb_r2d.py
rename to tests/functional/sh4eb/test_r2d.py
diff --git a/tests/functional/sparc/meson.build b/tests/functional/sparc/meson.build
new file mode 100644
index 00000000000..18d9c75c23a
--- /dev/null
+++ b/tests/functional/sparc/meson.build
@@ -0,0 +1,9 @@
+
+tests_sparc_system_quick = [
+ 'migration',
+]
+
+tests_sparc_system_thorough = [
+ 'replay',
+ 'sun4m',
+]
diff --git a/tests/functional/sparc/test_migration.py b/tests/functional/sparc/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/sparc/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/test_sparc_replay.py b/tests/functional/sparc/test_replay.py
similarity index 100%
rename from tests/functional/test_sparc_replay.py
rename to tests/functional/sparc/test_replay.py
diff --git a/tests/functional/test_sparc_sun4m.py b/tests/functional/sparc/test_sun4m.py
similarity index 100%
rename from tests/functional/test_sparc_sun4m.py
rename to tests/functional/sparc/test_sun4m.py
diff --git a/tests/functional/sparc64/meson.build b/tests/functional/sparc64/meson.build
new file mode 100644
index 00000000000..4a5a65defd3
--- /dev/null
+++ b/tests/functional/sparc64/meson.build
@@ -0,0 +1,9 @@
+
+tests_sparc64_system_quick = [
+ 'migration',
+]
+
+tests_sparc64_system_thorough = [
+ 'sun4u',
+ 'tuxrun',
+]
diff --git a/tests/functional/sparc64/test_migration.py b/tests/functional/sparc64/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/sparc64/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/test_sparc64_sun4u.py b/tests/functional/sparc64/test_sun4u.py
similarity index 100%
rename from tests/functional/test_sparc64_sun4u.py
rename to tests/functional/sparc64/test_sun4u.py
diff --git a/tests/functional/test_sparc64_tuxrun.py b/tests/functional/sparc64/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_sparc64_tuxrun.py
rename to tests/functional/sparc64/test_tuxrun.py
diff --git a/tests/functional/x86_64/meson.build b/tests/functional/x86_64/meson.build
new file mode 100644
index 00000000000..49b05a8a170
--- /dev/null
+++ b/tests/functional/x86_64/meson.build
@@ -0,0 +1,37 @@
+
+# Timeouts for individual tests that can be slow e.g. with debugging enabled
+test_x86_64_timeouts = {
+ 'acpi_bits' : 420,
+ 'intel_iommu': 300,
+ 'netdev_ethtool' : 180,
+ 'kvm_xen' : 180,
+ 'replay' : 480,
+ 'virtio_balloon': 120,
+}
+
+tests_x86_64_system_quick = [
+ 'cpu_queries',
+ 'mem_addr_space',
+ 'migration',
+ 'pc_cpu_hotplug_props',
+ 'virtio_version',
+ 'x86_cpu_model_versions',
+ 'vnc',
+ 'memlock',
+]
+
+tests_x86_64_system_thorough = [
+ 'acpi_bits',
+ 'intel_iommu',
+ 'linux_initrd',
+ 'multiprocess',
+ 'netdev_ethtool',
+ 'virtio_balloon',
+ 'virtio_gpu',
+ 'hotplug_blk',
+ 'hotplug_cpu',
+ 'kvm_xen',
+ 'replay',
+ 'reverse_debug',
+ 'tuxrun',
+]
diff --git a/tests/functional/test_acpi_bits.py b/tests/functional/x86_64/test_acpi_bits.py
similarity index 100%
rename from tests/functional/test_acpi_bits.py
rename to tests/functional/x86_64/test_acpi_bits.py
diff --git a/tests/functional/test_cpu_queries.py b/tests/functional/x86_64/test_cpu_queries.py
similarity index 100%
rename from tests/functional/test_cpu_queries.py
rename to tests/functional/x86_64/test_cpu_queries.py
diff --git a/tests/functional/test_x86_64_hotplug_blk.py b/tests/functional/x86_64/test_hotplug_blk.py
similarity index 100%
rename from tests/functional/test_x86_64_hotplug_blk.py
rename to tests/functional/x86_64/test_hotplug_blk.py
diff --git a/tests/functional/test_x86_64_hotplug_cpu.py b/tests/functional/x86_64/test_hotplug_cpu.py
similarity index 100%
rename from tests/functional/test_x86_64_hotplug_cpu.py
rename to tests/functional/x86_64/test_hotplug_cpu.py
diff --git a/tests/functional/test_intel_iommu.py b/tests/functional/x86_64/test_intel_iommu.py
similarity index 100%
rename from tests/functional/test_intel_iommu.py
rename to tests/functional/x86_64/test_intel_iommu.py
diff --git a/tests/functional/test_x86_64_kvm_xen.py b/tests/functional/x86_64/test_kvm_xen.py
similarity index 100%
rename from tests/functional/test_x86_64_kvm_xen.py
rename to tests/functional/x86_64/test_kvm_xen.py
diff --git a/tests/functional/test_linux_initrd.py b/tests/functional/x86_64/test_linux_initrd.py
similarity index 100%
rename from tests/functional/test_linux_initrd.py
rename to tests/functional/x86_64/test_linux_initrd.py
diff --git a/tests/functional/test_mem_addr_space.py b/tests/functional/x86_64/test_mem_addr_space.py
similarity index 100%
rename from tests/functional/test_mem_addr_space.py
rename to tests/functional/x86_64/test_mem_addr_space.py
diff --git a/tests/functional/test_memlock.py b/tests/functional/x86_64/test_memlock.py
similarity index 100%
rename from tests/functional/test_memlock.py
rename to tests/functional/x86_64/test_memlock.py
diff --git a/tests/functional/x86_64/test_migration.py b/tests/functional/x86_64/test_migration.py
new file mode 120000
index 00000000000..3933b7f3345
--- /dev/null
+++ b/tests/functional/x86_64/test_migration.py
@@ -0,0 +1 @@
+../generic/test_migration.py
\ No newline at end of file
diff --git a/tests/functional/test_multiprocess.py b/tests/functional/x86_64/test_multiprocess.py
similarity index 100%
rename from tests/functional/test_multiprocess.py
rename to tests/functional/x86_64/test_multiprocess.py
diff --git a/tests/functional/test_netdev_ethtool.py b/tests/functional/x86_64/test_netdev_ethtool.py
similarity index 100%
rename from tests/functional/test_netdev_ethtool.py
rename to tests/functional/x86_64/test_netdev_ethtool.py
diff --git a/tests/functional/test_pc_cpu_hotplug_props.py b/tests/functional/x86_64/test_pc_cpu_hotplug_props.py
similarity index 100%
rename from tests/functional/test_pc_cpu_hotplug_props.py
rename to tests/functional/x86_64/test_pc_cpu_hotplug_props.py
diff --git a/tests/functional/test_x86_64_replay.py b/tests/functional/x86_64/test_replay.py
similarity index 100%
rename from tests/functional/test_x86_64_replay.py
rename to tests/functional/x86_64/test_replay.py
diff --git a/tests/functional/test_x86_64_reverse_debug.py b/tests/functional/x86_64/test_reverse_debug.py
similarity index 100%
rename from tests/functional/test_x86_64_reverse_debug.py
rename to tests/functional/x86_64/test_reverse_debug.py
diff --git a/tests/functional/test_x86_64_tuxrun.py b/tests/functional/x86_64/test_tuxrun.py
similarity index 100%
rename from tests/functional/test_x86_64_tuxrun.py
rename to tests/functional/x86_64/test_tuxrun.py
diff --git a/tests/functional/test_virtio_balloon.py b/tests/functional/x86_64/test_virtio_balloon.py
similarity index 100%
rename from tests/functional/test_virtio_balloon.py
rename to tests/functional/x86_64/test_virtio_balloon.py
diff --git a/tests/functional/test_virtio_gpu.py b/tests/functional/x86_64/test_virtio_gpu.py
similarity index 100%
rename from tests/functional/test_virtio_gpu.py
rename to tests/functional/x86_64/test_virtio_gpu.py
diff --git a/tests/functional/test_virtio_version.py b/tests/functional/x86_64/test_virtio_version.py
similarity index 100%
rename from tests/functional/test_virtio_version.py
rename to tests/functional/x86_64/test_virtio_version.py
diff --git a/tests/functional/test_vnc.py b/tests/functional/x86_64/test_vnc.py
similarity index 100%
rename from tests/functional/test_vnc.py
rename to tests/functional/x86_64/test_vnc.py
diff --git a/tests/functional/test_x86_cpu_model_versions.py b/tests/functional/x86_64/test_x86_cpu_model_versions.py
similarity index 100%
rename from tests/functional/test_x86_cpu_model_versions.py
rename to tests/functional/x86_64/test_x86_cpu_model_versions.py
diff --git a/tests/functional/xtensa/meson.build b/tests/functional/xtensa/meson.build
new file mode 100644
index 00000000000..ca1b6e943b4
--- /dev/null
+++ b/tests/functional/xtensa/meson.build
@@ -0,0 +1,5 @@
+
+tests_xtensa_system_thorough = [
+ 'lx60',
+ 'replay',
+]
diff --git a/tests/functional/test_xtensa_lx60.py b/tests/functional/xtensa/test_lx60.py
similarity index 100%
rename from tests/functional/test_xtensa_lx60.py
rename to tests/functional/xtensa/test_lx60.py
diff --git a/tests/functional/test_xtensa_replay.py b/tests/functional/xtensa/test_replay.py
similarity index 100%
rename from tests/functional/test_xtensa_replay.py
rename to tests/functional/xtensa/test_replay.py
--
2.50.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [RFC PATCH] tests/functional: Move tests into architecture specific folders
2025-07-10 9:42 [RFC PATCH] tests/functional: Move tests into architecture specific folders Thomas Huth
@ 2025-07-10 9:59 ` Manos Pitsidianakis
2025-07-10 12:18 ` Thomas Huth
2025-07-10 14:50 ` Daniel P. Berrangé
2025-07-10 15:51 ` Pierrick Bouvier
2 siblings, 1 reply; 8+ messages in thread
From: Manos Pitsidianakis @ 2025-07-10 9:59 UTC (permalink / raw)
To: Thomas Huth
Cc: qemu-devel, Daniel P. Berrangé, qemu-arm, qemu-ppc,
qemu-s390x, qemu-riscv, Philippe Mathieu-Daudé,
Pierrick Bouvier, Alex Bennée
On Thu, Jul 10, 2025 at 12:51 PM Thomas Huth <thuth@redhat.com> wrote:
>
> This patch tackles two issues. First, the tests/functional folder has
> become quite crowded already, some restructuring would be helpful here.
> Second, we currently encode the target architecture twice in the test
> names since a lot of the test file names contain the target, too.
> This contributes to the very long output lines when running "make
> check-functional".
>
> So let's move the individual test files to target specific folders now.
> Then we can drop the target from the file name (and thus from the test
> name).
>
> Before the change, the output looked like this:
>
> ...
> 195/236 qemu:func-thorough+func-microblazeel-thorough+thorough / func-microblazeel-microblazeel_s3adsp1800 OK 2.00s 2 subtests passed
> 196/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-microblaze_replay OK 2.78s 1 subtests passed
> 197/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-microblaze_s3adsp1800 OK 2.02s 2 subtests passed
> 198/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_fuloong2e OK 1.95s 1 subtests passed
> 199/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_loongson3v SKIP 0.07s 0 subtests passed
> 200/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_tuxrun OK 8.52s 1 subtests passed
> ...
>
> After this change, it gets a little bit shorter:
>
> ...
> 195/236 qemu:func-thorough+func-microblazeel-thorough+thorough / func-microblazeel-s3adsp1800 OK 2.12s 2 subtests passed
> 196/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-replay OK 2.90s 1 subtests passed
> 197/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-s3adsp1800 OK 2.07s 2 subtests passed
> 198/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-fuloong2e OK 2.05s 1 subtests passed
> 199/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-loongson3v SKIP 0.07s 0 subtests passed
> 200/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-tuxrun OK 8.84s 1 subtests passed
> ...
>
> Tests that can be used for multiple but not all targets (like the "migration"
> test) are now handled via symlinks in the target folders.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> Note: Marked as RFC since I'm not that happy about the symlinks yet ...
> if someone has a better idea, please let me know!
How about making those tests utility functions that each target arch
imports and calls? It feels cleaner than symlinks, I think.
> Also the update to the MAINTAINERS file is still missing - I'll add
> that once we agreed on whether this patch is a good idea or not.
>
> tests/functional/aarch64/meson.build | 47 +++
> .../test_aspeed_ast2700.py} | 0
> .../test_aspeed_ast2700fc.py} | 0
> .../test_device_passthrough.py} | 0
> .../test_hotplug_pci.py} | 0
> .../test_imx8mp_evk.py} | 0
> tests/functional/aarch64/test_migration.py | 1 +
> tests/functional/aarch64/test_multiprocess.py | 1 +
> .../test_raspi3.py} | 0
> .../test_raspi4.py} | 0
> .../test_replay.py} | 0
> .../test_reverse_debug.py} | 0
> .../test_rme_sbsaref.py} | 2 +-
> .../test_rme_virt.py} | 0
> .../test_sbsaref.py} | 0
> .../test_sbsaref_alpine.py} | 2 +-
> .../test_sbsaref_freebsd.py} | 2 +-
> .../test_smmu.py} | 0
> .../test_tcg_plugins.py} | 0
> .../test_tuxrun.py} | 0
> .../test_virt.py} | 0
> .../test_virt_gpu.py} | 0
> .../test_xen.py} | 0
> .../test_xlnx_versal.py} | 0
> tests/functional/alpha/meson.build | 9 +
> .../test_clipper.py} | 0
> tests/functional/alpha/test_migration.py | 1 +
> .../test_replay.py} | 0
> tests/functional/arm/meson.build | 61 +++
> .../test_aspeed_ast1030.py} | 0
> .../test_aspeed_ast2500.py} | 0
> .../test_aspeed_ast2600.py} | 0
> .../test_aspeed_bletchley.py} | 0
> .../test_aspeed_catalina.py} | 0
> .../test_aspeed_gb200nvl_bmc.py} | 0
> .../test_aspeed_palmetto.py} | 0
> .../test_aspeed_rainier.py} | 0
> .../test_aspeed_romulus.py} | 0
> .../test_aspeed_witherspoon.py} | 0
> .../{test_arm_bflt.py => arm/test_bflt.py} | 0
> .../test_bpim2u.py} | 0
> .../test_canona1100.py} | 0
> .../test_collie.py} | 0
> .../test_cubieboard.py} | 0
> .../test_emcraft_sf2.py} | 0
> .../test_integratorcp.py} | 0
> .../test_microbit.py} | 0
> tests/functional/arm/test_migration.py | 1 +
> .../test_orangepi.py} | 0
> .../test_quanta_gsj.py} | 0
> .../test_raspi2.py} | 0
> .../test_realview.py} | 0
> .../test_replay.py} | 0
> .../test_smdkc210.py} | 0
> .../test_stellaris.py} | 0
> .../{test_arm_sx1.py => arm/test_sx1.py} | 0
> .../test_tuxrun.py} | 0
> .../test_vexpress.py} | 0
> .../{test_arm_virt.py => arm/test_virt.py} | 0
> tests/functional/avr/meson.build | 5 +
> .../test_mega2560.py} | 0
> .../{test_avr_uno.py => avr/test_uno.py} | 0
> .../{ => generic}/test_empty_cpu_model.py | 0
> .../{ => generic}/test_info_usernet.py | 0
> .../{ => generic}/test_migration.py | 0
> .../functional/{ => generic}/test_version.py | 0
> tests/functional/hppa/meson.build | 4 +
> .../test_seabios.py} | 0
> tests/functional/i386/meson.build | 9 +
> tests/functional/i386/test_migration.py | 1 +
> .../test_replay.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/loongarch64/meson.build | 4 +
> .../test_virt.py} | 0
> tests/functional/m68k/meson.build | 8 +
> .../test_mcf5208evb.py} | 0
> .../test_nextcube.py} | 0
> .../{test_m68k_q800.py => m68k/test_q800.py} | 0
> .../test_replay.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/meson.build | 364 ++----------------
> tests/functional/microblaze/meson.build | 5 +
> .../test_replay.py} | 0
> .../test_s3adsp1800.py} | 0
> tests/functional/microblazeel/meson.build | 4 +
> .../test_s3adsp1800.py} | 2 +-
> tests/functional/mips/meson.build | 11 +
> .../test_malta.py} | 0
> .../test_replay.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/mips64/meson.build | 10 +
> .../test_malta.py} | 2 +-
> .../test_tuxrun.py} | 0
> tests/functional/mips64el/meson.build | 14 +
> .../test_fuloong2e.py} | 0
> .../test_loongson3v.py} | 0
> .../test_malta.py} | 4 +-
> .../test_replay.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/mipsel/meson.build | 12 +
> .../test_malta.py} | 2 +-
> .../test_replay.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/or1k/meson.build | 5 +
> .../test_replay.py} | 0
> .../{test_or1k_sim.py => or1k/test_sim.py} | 0
> tests/functional/ppc/meson.build | 22 ++
> .../{test_ppc_40p.py => ppc/test_40p.py} | 0
> .../{test_ppc_74xx.py => ppc/test_74xx.py} | 0
> .../{test_ppc_amiga.py => ppc/test_amiga.py} | 0
> .../test_bamboo.py} | 0
> .../{test_ppc_mac.py => ppc/test_mac.py} | 0
> tests/functional/ppc/test_migration.py | 1 +
> .../test_mpc8544ds.py} | 0
> .../test_replay.py} | 0
> .../test_sam460ex.py} | 0
> .../test_tuxrun.py} | 0
> .../test_virtex_ml507.py} | 0
> tests/functional/ppc64/meson.build | 25 ++
> .../test_e500.py} | 0
> .../{test_ppc64_hv.py => ppc64/test_hv.py} | 0
> .../test_mac99.py} | 0
> tests/functional/ppc64/test_migration.py | 1 +
> .../test_powernv.py} | 0
> .../test_pseries.py} | 0
> .../test_replay.py} | 0
> .../test_reverse_debug.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/riscv32/meson.build | 9 +
> tests/functional/riscv32/test_migration.py | 1 +
> tests/functional/riscv32/test_opensbi.py | 1 +
> .../test_tuxrun.py} | 0
> tests/functional/riscv64/meson.build | 13 +
> .../test_opensbi.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/rx/meson.build | 4 +
> .../{test_rx_gdbsim.py => rx/test_gdbsim.py} | 0
> tests/functional/s390x/meson.build | 12 +
> .../test_ccw_virtio.py} | 0
> .../test_replay.py} | 0
> .../test_topology.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/sh4/meson.build | 10 +
> .../{test_sh4_r2d.py => sh4/test_r2d.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/sh4eb/meson.build | 4 +
> .../{test_sh4eb_r2d.py => sh4eb/test_r2d.py} | 0
> tests/functional/sparc/meson.build | 9 +
> tests/functional/sparc/test_migration.py | 1 +
> .../test_replay.py} | 0
> .../test_sun4m.py} | 0
> tests/functional/sparc64/meson.build | 9 +
> tests/functional/sparc64/test_migration.py | 1 +
> .../test_sun4u.py} | 0
> .../test_tuxrun.py} | 0
> tests/functional/x86_64/meson.build | 37 ++
> .../functional/{ => x86_64}/test_acpi_bits.py | 0
> .../{ => x86_64}/test_cpu_queries.py | 0
> .../test_hotplug_blk.py} | 0
> .../test_hotplug_cpu.py} | 0
> .../{ => x86_64}/test_intel_iommu.py | 0
> .../test_kvm_xen.py} | 0
> .../{ => x86_64}/test_linux_initrd.py | 0
> .../{ => x86_64}/test_mem_addr_space.py | 0
> tests/functional/{ => x86_64}/test_memlock.py | 0
> tests/functional/x86_64/test_migration.py | 1 +
> .../{ => x86_64}/test_multiprocess.py | 0
> .../{ => x86_64}/test_netdev_ethtool.py | 0
> .../{ => x86_64}/test_pc_cpu_hotplug_props.py | 0
> .../test_replay.py} | 0
> .../test_reverse_debug.py} | 0
> .../test_tuxrun.py} | 0
> .../{ => x86_64}/test_virtio_balloon.py | 0
> .../{ => x86_64}/test_virtio_gpu.py | 0
> .../{ => x86_64}/test_virtio_version.py | 0
> tests/functional/{ => x86_64}/test_vnc.py | 0
> .../test_x86_cpu_model_versions.py | 0
> tests/functional/xtensa/meson.build | 5 +
> .../test_lx60.py} | 0
> .../test_replay.py} | 0
> 180 files changed, 426 insertions(+), 333 deletions(-)
> create mode 100644 tests/functional/aarch64/meson.build
> rename tests/functional/{test_aarch64_aspeed_ast2700.py => aarch64/test_aspeed_ast2700.py} (100%)
> rename tests/functional/{test_aarch64_aspeed_ast2700fc.py => aarch64/test_aspeed_ast2700fc.py} (100%)
> rename tests/functional/{test_aarch64_device_passthrough.py => aarch64/test_device_passthrough.py} (100%)
> rename tests/functional/{test_aarch64_hotplug_pci.py => aarch64/test_hotplug_pci.py} (100%)
> rename tests/functional/{test_aarch64_imx8mp_evk.py => aarch64/test_imx8mp_evk.py} (100%)
> create mode 120000 tests/functional/aarch64/test_migration.py
> create mode 120000 tests/functional/aarch64/test_multiprocess.py
> rename tests/functional/{test_aarch64_raspi3.py => aarch64/test_raspi3.py} (100%)
> rename tests/functional/{test_aarch64_raspi4.py => aarch64/test_raspi4.py} (100%)
> rename tests/functional/{test_aarch64_replay.py => aarch64/test_replay.py} (100%)
> rename tests/functional/{test_aarch64_reverse_debug.py => aarch64/test_reverse_debug.py} (100%)
> rename tests/functional/{test_aarch64_rme_sbsaref.py => aarch64/test_rme_sbsaref.py} (98%)
> rename tests/functional/{test_aarch64_rme_virt.py => aarch64/test_rme_virt.py} (100%)
> rename tests/functional/{test_aarch64_sbsaref.py => aarch64/test_sbsaref.py} (100%)
> rename tests/functional/{test_aarch64_sbsaref_alpine.py => aarch64/test_sbsaref_alpine.py} (97%)
> rename tests/functional/{test_aarch64_sbsaref_freebsd.py => aarch64/test_sbsaref_freebsd.py} (97%)
> rename tests/functional/{test_aarch64_smmu.py => aarch64/test_smmu.py} (100%)
> rename tests/functional/{test_aarch64_tcg_plugins.py => aarch64/test_tcg_plugins.py} (100%)
> rename tests/functional/{test_aarch64_tuxrun.py => aarch64/test_tuxrun.py} (100%)
> rename tests/functional/{test_aarch64_virt.py => aarch64/test_virt.py} (100%)
> rename tests/functional/{test_aarch64_virt_gpu.py => aarch64/test_virt_gpu.py} (100%)
> rename tests/functional/{test_aarch64_xen.py => aarch64/test_xen.py} (100%)
> rename tests/functional/{test_aarch64_xlnx_versal.py => aarch64/test_xlnx_versal.py} (100%)
> create mode 100644 tests/functional/alpha/meson.build
> rename tests/functional/{test_alpha_clipper.py => alpha/test_clipper.py} (100%)
> create mode 120000 tests/functional/alpha/test_migration.py
> rename tests/functional/{test_alpha_replay.py => alpha/test_replay.py} (100%)
> create mode 100644 tests/functional/arm/meson.build
> rename tests/functional/{test_arm_aspeed_ast1030.py => arm/test_aspeed_ast1030.py} (100%)
> rename tests/functional/{test_arm_aspeed_ast2500.py => arm/test_aspeed_ast2500.py} (100%)
> rename tests/functional/{test_arm_aspeed_ast2600.py => arm/test_aspeed_ast2600.py} (100%)
> rename tests/functional/{test_arm_aspeed_bletchley.py => arm/test_aspeed_bletchley.py} (100%)
> rename tests/functional/{test_arm_aspeed_catalina.py => arm/test_aspeed_catalina.py} (100%)
> rename tests/functional/{test_arm_aspeed_gb200nvl_bmc.py => arm/test_aspeed_gb200nvl_bmc.py} (100%)
> mode change 100644 => 100755
> rename tests/functional/{test_arm_aspeed_palmetto.py => arm/test_aspeed_palmetto.py} (100%)
> rename tests/functional/{test_arm_aspeed_rainier.py => arm/test_aspeed_rainier.py} (100%)
> rename tests/functional/{test_arm_aspeed_romulus.py => arm/test_aspeed_romulus.py} (100%)
> rename tests/functional/{test_arm_aspeed_witherspoon.py => arm/test_aspeed_witherspoon.py} (100%)
> rename tests/functional/{test_arm_bflt.py => arm/test_bflt.py} (100%)
> rename tests/functional/{test_arm_bpim2u.py => arm/test_bpim2u.py} (100%)
> rename tests/functional/{test_arm_canona1100.py => arm/test_canona1100.py} (100%)
> rename tests/functional/{test_arm_collie.py => arm/test_collie.py} (100%)
> rename tests/functional/{test_arm_cubieboard.py => arm/test_cubieboard.py} (100%)
> rename tests/functional/{test_arm_emcraft_sf2.py => arm/test_emcraft_sf2.py} (100%)
> rename tests/functional/{test_arm_integratorcp.py => arm/test_integratorcp.py} (100%)
> rename tests/functional/{test_arm_microbit.py => arm/test_microbit.py} (100%)
> create mode 120000 tests/functional/arm/test_migration.py
> rename tests/functional/{test_arm_orangepi.py => arm/test_orangepi.py} (100%)
> rename tests/functional/{test_arm_quanta_gsj.py => arm/test_quanta_gsj.py} (100%)
> rename tests/functional/{test_arm_raspi2.py => arm/test_raspi2.py} (100%)
> rename tests/functional/{test_arm_realview.py => arm/test_realview.py} (100%)
> rename tests/functional/{test_arm_replay.py => arm/test_replay.py} (100%)
> rename tests/functional/{test_arm_smdkc210.py => arm/test_smdkc210.py} (100%)
> rename tests/functional/{test_arm_stellaris.py => arm/test_stellaris.py} (100%)
> rename tests/functional/{test_arm_sx1.py => arm/test_sx1.py} (100%)
> rename tests/functional/{test_arm_tuxrun.py => arm/test_tuxrun.py} (100%)
> rename tests/functional/{test_arm_vexpress.py => arm/test_vexpress.py} (100%)
> rename tests/functional/{test_arm_virt.py => arm/test_virt.py} (100%)
> create mode 100644 tests/functional/avr/meson.build
> rename tests/functional/{test_avr_mega2560.py => avr/test_mega2560.py} (100%)
> rename tests/functional/{test_avr_uno.py => avr/test_uno.py} (100%)
> rename tests/functional/{ => generic}/test_empty_cpu_model.py (100%)
> rename tests/functional/{ => generic}/test_info_usernet.py (100%)
> rename tests/functional/{ => generic}/test_migration.py (100%)
> rename tests/functional/{ => generic}/test_version.py (100%)
> create mode 100644 tests/functional/hppa/meson.build
> rename tests/functional/{test_hppa_seabios.py => hppa/test_seabios.py} (100%)
> create mode 100644 tests/functional/i386/meson.build
> create mode 120000 tests/functional/i386/test_migration.py
> rename tests/functional/{test_i386_replay.py => i386/test_replay.py} (100%)
> rename tests/functional/{test_i386_tuxrun.py => i386/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/loongarch64/meson.build
> rename tests/functional/{test_loongarch64_virt.py => loongarch64/test_virt.py} (100%)
> create mode 100644 tests/functional/m68k/meson.build
> rename tests/functional/{test_m68k_mcf5208evb.py => m68k/test_mcf5208evb.py} (100%)
> rename tests/functional/{test_m68k_nextcube.py => m68k/test_nextcube.py} (100%)
> rename tests/functional/{test_m68k_q800.py => m68k/test_q800.py} (100%)
> rename tests/functional/{test_m68k_replay.py => m68k/test_replay.py} (100%)
> rename tests/functional/{test_m68k_tuxrun.py => m68k/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/microblaze/meson.build
> rename tests/functional/{test_microblaze_replay.py => microblaze/test_replay.py} (100%)
> rename tests/functional/{test_microblaze_s3adsp1800.py => microblaze/test_s3adsp1800.py} (100%)
> create mode 100644 tests/functional/microblazeel/meson.build
> rename tests/functional/{test_microblazeel_s3adsp1800.py => microblazeel/test_s3adsp1800.py} (92%)
> create mode 100644 tests/functional/mips/meson.build
> rename tests/functional/{test_mips_malta.py => mips/test_malta.py} (100%)
> rename tests/functional/{test_mips_replay.py => mips/test_replay.py} (100%)
> rename tests/functional/{test_mips_tuxrun.py => mips/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/mips64/meson.build
> rename tests/functional/{test_mips64_malta.py => mips64/test_malta.py} (96%)
> rename tests/functional/{test_mips64_tuxrun.py => mips64/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/mips64el/meson.build
> rename tests/functional/{test_mips64el_fuloong2e.py => mips64el/test_fuloong2e.py} (100%)
> rename tests/functional/{test_mips64el_loongson3v.py => mips64el/test_loongson3v.py} (100%)
> rename tests/functional/{test_mips64el_malta.py => mips64el/test_malta.py} (98%)
> rename tests/functional/{test_mips64el_replay.py => mips64el/test_replay.py} (100%)
> rename tests/functional/{test_mips64el_tuxrun.py => mips64el/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/mipsel/meson.build
> rename tests/functional/{test_mipsel_malta.py => mipsel/test_malta.py} (98%)
> rename tests/functional/{test_mipsel_replay.py => mipsel/test_replay.py} (100%)
> rename tests/functional/{test_mipsel_tuxrun.py => mipsel/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/or1k/meson.build
> rename tests/functional/{test_or1k_replay.py => or1k/test_replay.py} (100%)
> rename tests/functional/{test_or1k_sim.py => or1k/test_sim.py} (100%)
> create mode 100644 tests/functional/ppc/meson.build
> rename tests/functional/{test_ppc_40p.py => ppc/test_40p.py} (100%)
> rename tests/functional/{test_ppc_74xx.py => ppc/test_74xx.py} (100%)
> rename tests/functional/{test_ppc_amiga.py => ppc/test_amiga.py} (100%)
> rename tests/functional/{test_ppc_bamboo.py => ppc/test_bamboo.py} (100%)
> rename tests/functional/{test_ppc_mac.py => ppc/test_mac.py} (100%)
> create mode 120000 tests/functional/ppc/test_migration.py
> rename tests/functional/{test_ppc_mpc8544ds.py => ppc/test_mpc8544ds.py} (100%)
> rename tests/functional/{test_ppc_replay.py => ppc/test_replay.py} (100%)
> rename tests/functional/{test_ppc_sam460ex.py => ppc/test_sam460ex.py} (100%)
> rename tests/functional/{test_ppc_tuxrun.py => ppc/test_tuxrun.py} (100%)
> rename tests/functional/{test_ppc_virtex_ml507.py => ppc/test_virtex_ml507.py} (100%)
> create mode 100644 tests/functional/ppc64/meson.build
> rename tests/functional/{test_ppc64_e500.py => ppc64/test_e500.py} (100%)
> rename tests/functional/{test_ppc64_hv.py => ppc64/test_hv.py} (100%)
> rename tests/functional/{test_ppc64_mac99.py => ppc64/test_mac99.py} (100%)
> create mode 120000 tests/functional/ppc64/test_migration.py
> rename tests/functional/{test_ppc64_powernv.py => ppc64/test_powernv.py} (100%)
> rename tests/functional/{test_ppc64_pseries.py => ppc64/test_pseries.py} (100%)
> rename tests/functional/{test_ppc64_replay.py => ppc64/test_replay.py} (100%)
> rename tests/functional/{test_ppc64_reverse_debug.py => ppc64/test_reverse_debug.py} (100%)
> rename tests/functional/{test_ppc64_tuxrun.py => ppc64/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/riscv32/meson.build
> create mode 120000 tests/functional/riscv32/test_migration.py
> create mode 120000 tests/functional/riscv32/test_opensbi.py
> rename tests/functional/{test_riscv32_tuxrun.py => riscv32/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/riscv64/meson.build
> rename tests/functional/{test_riscv_opensbi.py => riscv64/test_opensbi.py} (100%)
> rename tests/functional/{test_riscv64_tuxrun.py => riscv64/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/rx/meson.build
> rename tests/functional/{test_rx_gdbsim.py => rx/test_gdbsim.py} (100%)
> create mode 100644 tests/functional/s390x/meson.build
> rename tests/functional/{test_s390x_ccw_virtio.py => s390x/test_ccw_virtio.py} (100%)
> rename tests/functional/{test_s390x_replay.py => s390x/test_replay.py} (100%)
> rename tests/functional/{test_s390x_topology.py => s390x/test_topology.py} (100%)
> rename tests/functional/{test_s390x_tuxrun.py => s390x/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/sh4/meson.build
> rename tests/functional/{test_sh4_r2d.py => sh4/test_r2d.py} (100%)
> rename tests/functional/{test_sh4_tuxrun.py => sh4/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/sh4eb/meson.build
> rename tests/functional/{test_sh4eb_r2d.py => sh4eb/test_r2d.py} (100%)
> create mode 100644 tests/functional/sparc/meson.build
> create mode 120000 tests/functional/sparc/test_migration.py
> rename tests/functional/{test_sparc_replay.py => sparc/test_replay.py} (100%)
> rename tests/functional/{test_sparc_sun4m.py => sparc/test_sun4m.py} (100%)
> create mode 100644 tests/functional/sparc64/meson.build
> create mode 120000 tests/functional/sparc64/test_migration.py
> rename tests/functional/{test_sparc64_sun4u.py => sparc64/test_sun4u.py} (100%)
> rename tests/functional/{test_sparc64_tuxrun.py => sparc64/test_tuxrun.py} (100%)
> create mode 100644 tests/functional/x86_64/meson.build
> rename tests/functional/{ => x86_64}/test_acpi_bits.py (100%)
> rename tests/functional/{ => x86_64}/test_cpu_queries.py (100%)
> rename tests/functional/{test_x86_64_hotplug_blk.py => x86_64/test_hotplug_blk.py} (100%)
> rename tests/functional/{test_x86_64_hotplug_cpu.py => x86_64/test_hotplug_cpu.py} (100%)
> rename tests/functional/{ => x86_64}/test_intel_iommu.py (100%)
> rename tests/functional/{test_x86_64_kvm_xen.py => x86_64/test_kvm_xen.py} (100%)
> rename tests/functional/{ => x86_64}/test_linux_initrd.py (100%)
> rename tests/functional/{ => x86_64}/test_mem_addr_space.py (100%)
> rename tests/functional/{ => x86_64}/test_memlock.py (100%)
> create mode 120000 tests/functional/x86_64/test_migration.py
> rename tests/functional/{ => x86_64}/test_multiprocess.py (100%)
> rename tests/functional/{ => x86_64}/test_netdev_ethtool.py (100%)
> rename tests/functional/{ => x86_64}/test_pc_cpu_hotplug_props.py (100%)
> rename tests/functional/{test_x86_64_replay.py => x86_64/test_replay.py} (100%)
> rename tests/functional/{test_x86_64_reverse_debug.py => x86_64/test_reverse_debug.py} (100%)
> rename tests/functional/{test_x86_64_tuxrun.py => x86_64/test_tuxrun.py} (100%)
> rename tests/functional/{ => x86_64}/test_virtio_balloon.py (100%)
> rename tests/functional/{ => x86_64}/test_virtio_gpu.py (100%)
> rename tests/functional/{ => x86_64}/test_virtio_version.py (100%)
> rename tests/functional/{ => x86_64}/test_vnc.py (100%)
> rename tests/functional/{ => x86_64}/test_x86_cpu_model_versions.py (100%)
> create mode 100644 tests/functional/xtensa/meson.build
> rename tests/functional/{test_xtensa_lx60.py => xtensa/test_lx60.py} (100%)
> rename tests/functional/{test_xtensa_replay.py => xtensa/test_replay.py} (100%)
>
> diff --git a/tests/functional/aarch64/meson.build b/tests/functional/aarch64/meson.build
> new file mode 100644
> index 00000000000..ebb16282692
> --- /dev/null
> +++ b/tests/functional/aarch64/meson.build
> @@ -0,0 +1,47 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_aarch64_timeouts = {
> + 'aspeed_ast2700' : 600,
> + 'aspeed_ast2700fc' : 600,
> + 'device_passthrough' : 720,
> + 'imx8mp_evk' : 240,
> + 'raspi4' : 480,
> + 'reverse_debug' : 180,
> + 'rme_virt' : 1200,
> + 'rme_sbsaref' : 1200,
> + 'sbsaref_alpine' : 1200,
> + 'sbsaref_freebsd' : 720,
> + 'smmu' : 720,
> + 'tuxrun' : 240,
> + 'virt' : 360,
> + 'virt_gpu' : 480,
> +}
> +
> +tests_aarch64_system_quick = [
> + 'migration',
> +]
> +
> +tests_aarch64_system_thorough = [
> + 'aspeed_ast2700',
> + 'aspeed_ast2700fc',
> + 'device_passthrough',
> + 'hotplug_pci',
> + 'imx8mp_evk',
> + 'raspi3',
> + 'raspi4',
> + 'replay',
> + 'reverse_debug',
> + 'rme_virt',
> + 'rme_sbsaref',
> + 'sbsaref',
> + 'sbsaref_alpine',
> + 'sbsaref_freebsd',
> + 'smmu',
> + 'tcg_plugins',
> + 'tuxrun',
> + 'virt',
> + 'virt_gpu',
> + 'xen',
> + 'xlnx_versal',
> + 'multiprocess',
> +]
> diff --git a/tests/functional/test_aarch64_aspeed_ast2700.py b/tests/functional/aarch64/test_aspeed_ast2700.py
> similarity index 100%
> rename from tests/functional/test_aarch64_aspeed_ast2700.py
> rename to tests/functional/aarch64/test_aspeed_ast2700.py
> diff --git a/tests/functional/test_aarch64_aspeed_ast2700fc.py b/tests/functional/aarch64/test_aspeed_ast2700fc.py
> similarity index 100%
> rename from tests/functional/test_aarch64_aspeed_ast2700fc.py
> rename to tests/functional/aarch64/test_aspeed_ast2700fc.py
> diff --git a/tests/functional/test_aarch64_device_passthrough.py b/tests/functional/aarch64/test_device_passthrough.py
> similarity index 100%
> rename from tests/functional/test_aarch64_device_passthrough.py
> rename to tests/functional/aarch64/test_device_passthrough.py
> diff --git a/tests/functional/test_aarch64_hotplug_pci.py b/tests/functional/aarch64/test_hotplug_pci.py
> similarity index 100%
> rename from tests/functional/test_aarch64_hotplug_pci.py
> rename to tests/functional/aarch64/test_hotplug_pci.py
> diff --git a/tests/functional/test_aarch64_imx8mp_evk.py b/tests/functional/aarch64/test_imx8mp_evk.py
> similarity index 100%
> rename from tests/functional/test_aarch64_imx8mp_evk.py
> rename to tests/functional/aarch64/test_imx8mp_evk.py
> diff --git a/tests/functional/aarch64/test_migration.py b/tests/functional/aarch64/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/aarch64/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/aarch64/test_multiprocess.py b/tests/functional/aarch64/test_multiprocess.py
> new file mode 120000
> index 00000000000..ff4ff5314a7
> --- /dev/null
> +++ b/tests/functional/aarch64/test_multiprocess.py
> @@ -0,0 +1 @@
> +../x86_64/test_multiprocess.py
> \ No newline at end of file
> diff --git a/tests/functional/test_aarch64_raspi3.py b/tests/functional/aarch64/test_raspi3.py
> similarity index 100%
> rename from tests/functional/test_aarch64_raspi3.py
> rename to tests/functional/aarch64/test_raspi3.py
> diff --git a/tests/functional/test_aarch64_raspi4.py b/tests/functional/aarch64/test_raspi4.py
> similarity index 100%
> rename from tests/functional/test_aarch64_raspi4.py
> rename to tests/functional/aarch64/test_raspi4.py
> diff --git a/tests/functional/test_aarch64_replay.py b/tests/functional/aarch64/test_replay.py
> similarity index 100%
> rename from tests/functional/test_aarch64_replay.py
> rename to tests/functional/aarch64/test_replay.py
> diff --git a/tests/functional/test_aarch64_reverse_debug.py b/tests/functional/aarch64/test_reverse_debug.py
> similarity index 100%
> rename from tests/functional/test_aarch64_reverse_debug.py
> rename to tests/functional/aarch64/test_reverse_debug.py
> diff --git a/tests/functional/test_aarch64_rme_sbsaref.py b/tests/functional/aarch64/test_rme_sbsaref.py
> similarity index 98%
> rename from tests/functional/test_aarch64_rme_sbsaref.py
> rename to tests/functional/aarch64/test_rme_sbsaref.py
> index 746770e776d..100f1c7738b 100755
> --- a/tests/functional/test_aarch64_rme_sbsaref.py
> +++ b/tests/functional/aarch64/test_rme_sbsaref.py
> @@ -13,7 +13,7 @@
>
> from qemu_test import QemuSystemTest, Asset, wait_for_console_pattern
> from qemu_test import exec_command_and_wait_for_pattern
> -from test_aarch64_rme_virt import test_realms_guest
> +from test_rme_virt import test_realms_guest
>
>
> class Aarch64RMESbsaRefMachine(QemuSystemTest):
> diff --git a/tests/functional/test_aarch64_rme_virt.py b/tests/functional/aarch64/test_rme_virt.py
> similarity index 100%
> rename from tests/functional/test_aarch64_rme_virt.py
> rename to tests/functional/aarch64/test_rme_virt.py
> diff --git a/tests/functional/test_aarch64_sbsaref.py b/tests/functional/aarch64/test_sbsaref.py
> similarity index 100%
> rename from tests/functional/test_aarch64_sbsaref.py
> rename to tests/functional/aarch64/test_sbsaref.py
> diff --git a/tests/functional/test_aarch64_sbsaref_alpine.py b/tests/functional/aarch64/test_sbsaref_alpine.py
> similarity index 97%
> rename from tests/functional/test_aarch64_sbsaref_alpine.py
> rename to tests/functional/aarch64/test_sbsaref_alpine.py
> index 87769993831..abb8f5114bd 100755
> --- a/tests/functional/test_aarch64_sbsaref_alpine.py
> +++ b/tests/functional/aarch64/test_sbsaref_alpine.py
> @@ -12,7 +12,7 @@
>
> from qemu_test import QemuSystemTest, Asset, skipSlowTest
> from qemu_test import wait_for_console_pattern
> -from test_aarch64_sbsaref import fetch_firmware
> +from test_sbsaref import fetch_firmware
>
>
> class Aarch64SbsarefAlpine(QemuSystemTest):
> diff --git a/tests/functional/test_aarch64_sbsaref_freebsd.py b/tests/functional/aarch64/test_sbsaref_freebsd.py
> similarity index 97%
> rename from tests/functional/test_aarch64_sbsaref_freebsd.py
> rename to tests/functional/aarch64/test_sbsaref_freebsd.py
> index 7ef016fba62..3b942f7795c 100755
> --- a/tests/functional/test_aarch64_sbsaref_freebsd.py
> +++ b/tests/functional/aarch64/test_sbsaref_freebsd.py
> @@ -12,7 +12,7 @@
>
> from qemu_test import QemuSystemTest, Asset, skipSlowTest
> from qemu_test import wait_for_console_pattern
> -from test_aarch64_sbsaref import fetch_firmware
> +from test_sbsaref import fetch_firmware
>
>
> class Aarch64SbsarefFreeBSD(QemuSystemTest):
> diff --git a/tests/functional/test_aarch64_smmu.py b/tests/functional/aarch64/test_smmu.py
> similarity index 100%
> rename from tests/functional/test_aarch64_smmu.py
> rename to tests/functional/aarch64/test_smmu.py
> diff --git a/tests/functional/test_aarch64_tcg_plugins.py b/tests/functional/aarch64/test_tcg_plugins.py
> similarity index 100%
> rename from tests/functional/test_aarch64_tcg_plugins.py
> rename to tests/functional/aarch64/test_tcg_plugins.py
> diff --git a/tests/functional/test_aarch64_tuxrun.py b/tests/functional/aarch64/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_aarch64_tuxrun.py
> rename to tests/functional/aarch64/test_tuxrun.py
> diff --git a/tests/functional/test_aarch64_virt.py b/tests/functional/aarch64/test_virt.py
> similarity index 100%
> rename from tests/functional/test_aarch64_virt.py
> rename to tests/functional/aarch64/test_virt.py
> diff --git a/tests/functional/test_aarch64_virt_gpu.py b/tests/functional/aarch64/test_virt_gpu.py
> similarity index 100%
> rename from tests/functional/test_aarch64_virt_gpu.py
> rename to tests/functional/aarch64/test_virt_gpu.py
> diff --git a/tests/functional/test_aarch64_xen.py b/tests/functional/aarch64/test_xen.py
> similarity index 100%
> rename from tests/functional/test_aarch64_xen.py
> rename to tests/functional/aarch64/test_xen.py
> diff --git a/tests/functional/test_aarch64_xlnx_versal.py b/tests/functional/aarch64/test_xlnx_versal.py
> similarity index 100%
> rename from tests/functional/test_aarch64_xlnx_versal.py
> rename to tests/functional/aarch64/test_xlnx_versal.py
> diff --git a/tests/functional/alpha/meson.build b/tests/functional/alpha/meson.build
> new file mode 100644
> index 00000000000..a69ac82dd2c
> --- /dev/null
> +++ b/tests/functional/alpha/meson.build
> @@ -0,0 +1,9 @@
> +
> +tests_alpha_system_quick = [
> + 'migration',
> +]
> +
> +tests_alpha_system_thorough = [
> + 'clipper',
> + 'replay',
> +]
> diff --git a/tests/functional/test_alpha_clipper.py b/tests/functional/alpha/test_clipper.py
> similarity index 100%
> rename from tests/functional/test_alpha_clipper.py
> rename to tests/functional/alpha/test_clipper.py
> diff --git a/tests/functional/alpha/test_migration.py b/tests/functional/alpha/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/alpha/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/test_alpha_replay.py b/tests/functional/alpha/test_replay.py
> similarity index 100%
> rename from tests/functional/test_alpha_replay.py
> rename to tests/functional/alpha/test_replay.py
> diff --git a/tests/functional/arm/meson.build b/tests/functional/arm/meson.build
> new file mode 100644
> index 00000000000..59acfb10f1e
> --- /dev/null
> +++ b/tests/functional/arm/meson.build
> @@ -0,0 +1,61 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_arm_timeouts = {
> + 'aspeed_palmetto' : 120,
> + 'aspeed_romulus' : 120,
> + 'aspeed_witherspoon' : 120,
> + 'aspeed_ast2500' : 720,
> + 'aspeed_ast2600' : 1200,
> + 'aspeed_bletchley' : 480,
> + 'aspeed_catalina' : 480,
> + 'aspeed_gb200nvl_bmc' : 480,
> + 'aspeed_rainier' : 480,
> + 'bpim2u' : 500,
> + 'collie' : 180,
> + 'cubieboard' : 360,
> + 'orangepi' : 540,
> + 'quanta_gsj' : 240,
> + 'raspi2' : 120,
> + 'replay' : 240,
> + 'tuxrun' : 240,
> + 'sx1' : 360,
> +}
> +
> +tests_arm_system_quick = [
> + 'migration',
> +]
> +
> +tests_arm_system_thorough = [
> + 'aspeed_ast1030',
> + 'aspeed_palmetto',
> + 'aspeed_romulus',
> + 'aspeed_witherspoon',
> + 'aspeed_ast2500',
> + 'aspeed_ast2600',
> + 'aspeed_bletchley',
> + 'aspeed_catalina',
> + 'aspeed_gb200nvl_bmc',
> + 'aspeed_rainier',
> + 'bpim2u',
> + 'canona1100',
> + 'collie',
> + 'cubieboard',
> + 'emcraft_sf2',
> + 'integratorcp',
> + 'microbit',
> + 'orangepi',
> + 'quanta_gsj',
> + 'raspi2',
> + 'realview',
> + 'replay',
> + 'smdkc210',
> + 'stellaris',
> + 'sx1',
> + 'vexpress',
> + 'virt',
> + 'tuxrun',
> +]
> +
> +tests_arm_linuxuser_thorough = [
> + 'bflt',
> +]
> diff --git a/tests/functional/test_arm_aspeed_ast1030.py b/tests/functional/arm/test_aspeed_ast1030.py
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_ast1030.py
> rename to tests/functional/arm/test_aspeed_ast1030.py
> diff --git a/tests/functional/test_arm_aspeed_ast2500.py b/tests/functional/arm/test_aspeed_ast2500.py
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_ast2500.py
> rename to tests/functional/arm/test_aspeed_ast2500.py
> diff --git a/tests/functional/test_arm_aspeed_ast2600.py b/tests/functional/arm/test_aspeed_ast2600.py
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_ast2600.py
> rename to tests/functional/arm/test_aspeed_ast2600.py
> diff --git a/tests/functional/test_arm_aspeed_bletchley.py b/tests/functional/arm/test_aspeed_bletchley.py
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_bletchley.py
> rename to tests/functional/arm/test_aspeed_bletchley.py
> diff --git a/tests/functional/test_arm_aspeed_catalina.py b/tests/functional/arm/test_aspeed_catalina.py
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_catalina.py
> rename to tests/functional/arm/test_aspeed_catalina.py
> diff --git a/tests/functional/test_arm_aspeed_gb200nvl_bmc.py b/tests/functional/arm/test_aspeed_gb200nvl_bmc.py
> old mode 100644
> new mode 100755
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_gb200nvl_bmc.py
> rename to tests/functional/arm/test_aspeed_gb200nvl_bmc.py
> diff --git a/tests/functional/test_arm_aspeed_palmetto.py b/tests/functional/arm/test_aspeed_palmetto.py
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_palmetto.py
> rename to tests/functional/arm/test_aspeed_palmetto.py
> diff --git a/tests/functional/test_arm_aspeed_rainier.py b/tests/functional/arm/test_aspeed_rainier.py
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_rainier.py
> rename to tests/functional/arm/test_aspeed_rainier.py
> diff --git a/tests/functional/test_arm_aspeed_romulus.py b/tests/functional/arm/test_aspeed_romulus.py
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_romulus.py
> rename to tests/functional/arm/test_aspeed_romulus.py
> diff --git a/tests/functional/test_arm_aspeed_witherspoon.py b/tests/functional/arm/test_aspeed_witherspoon.py
> similarity index 100%
> rename from tests/functional/test_arm_aspeed_witherspoon.py
> rename to tests/functional/arm/test_aspeed_witherspoon.py
> diff --git a/tests/functional/test_arm_bflt.py b/tests/functional/arm/test_bflt.py
> similarity index 100%
> rename from tests/functional/test_arm_bflt.py
> rename to tests/functional/arm/test_bflt.py
> diff --git a/tests/functional/test_arm_bpim2u.py b/tests/functional/arm/test_bpim2u.py
> similarity index 100%
> rename from tests/functional/test_arm_bpim2u.py
> rename to tests/functional/arm/test_bpim2u.py
> diff --git a/tests/functional/test_arm_canona1100.py b/tests/functional/arm/test_canona1100.py
> similarity index 100%
> rename from tests/functional/test_arm_canona1100.py
> rename to tests/functional/arm/test_canona1100.py
> diff --git a/tests/functional/test_arm_collie.py b/tests/functional/arm/test_collie.py
> similarity index 100%
> rename from tests/functional/test_arm_collie.py
> rename to tests/functional/arm/test_collie.py
> diff --git a/tests/functional/test_arm_cubieboard.py b/tests/functional/arm/test_cubieboard.py
> similarity index 100%
> rename from tests/functional/test_arm_cubieboard.py
> rename to tests/functional/arm/test_cubieboard.py
> diff --git a/tests/functional/test_arm_emcraft_sf2.py b/tests/functional/arm/test_emcraft_sf2.py
> similarity index 100%
> rename from tests/functional/test_arm_emcraft_sf2.py
> rename to tests/functional/arm/test_emcraft_sf2.py
> diff --git a/tests/functional/test_arm_integratorcp.py b/tests/functional/arm/test_integratorcp.py
> similarity index 100%
> rename from tests/functional/test_arm_integratorcp.py
> rename to tests/functional/arm/test_integratorcp.py
> diff --git a/tests/functional/test_arm_microbit.py b/tests/functional/arm/test_microbit.py
> similarity index 100%
> rename from tests/functional/test_arm_microbit.py
> rename to tests/functional/arm/test_microbit.py
> diff --git a/tests/functional/arm/test_migration.py b/tests/functional/arm/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/arm/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/test_arm_orangepi.py b/tests/functional/arm/test_orangepi.py
> similarity index 100%
> rename from tests/functional/test_arm_orangepi.py
> rename to tests/functional/arm/test_orangepi.py
> diff --git a/tests/functional/test_arm_quanta_gsj.py b/tests/functional/arm/test_quanta_gsj.py
> similarity index 100%
> rename from tests/functional/test_arm_quanta_gsj.py
> rename to tests/functional/arm/test_quanta_gsj.py
> diff --git a/tests/functional/test_arm_raspi2.py b/tests/functional/arm/test_raspi2.py
> similarity index 100%
> rename from tests/functional/test_arm_raspi2.py
> rename to tests/functional/arm/test_raspi2.py
> diff --git a/tests/functional/test_arm_realview.py b/tests/functional/arm/test_realview.py
> similarity index 100%
> rename from tests/functional/test_arm_realview.py
> rename to tests/functional/arm/test_realview.py
> diff --git a/tests/functional/test_arm_replay.py b/tests/functional/arm/test_replay.py
> similarity index 100%
> rename from tests/functional/test_arm_replay.py
> rename to tests/functional/arm/test_replay.py
> diff --git a/tests/functional/test_arm_smdkc210.py b/tests/functional/arm/test_smdkc210.py
> similarity index 100%
> rename from tests/functional/test_arm_smdkc210.py
> rename to tests/functional/arm/test_smdkc210.py
> diff --git a/tests/functional/test_arm_stellaris.py b/tests/functional/arm/test_stellaris.py
> similarity index 100%
> rename from tests/functional/test_arm_stellaris.py
> rename to tests/functional/arm/test_stellaris.py
> diff --git a/tests/functional/test_arm_sx1.py b/tests/functional/arm/test_sx1.py
> similarity index 100%
> rename from tests/functional/test_arm_sx1.py
> rename to tests/functional/arm/test_sx1.py
> diff --git a/tests/functional/test_arm_tuxrun.py b/tests/functional/arm/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_arm_tuxrun.py
> rename to tests/functional/arm/test_tuxrun.py
> diff --git a/tests/functional/test_arm_vexpress.py b/tests/functional/arm/test_vexpress.py
> similarity index 100%
> rename from tests/functional/test_arm_vexpress.py
> rename to tests/functional/arm/test_vexpress.py
> diff --git a/tests/functional/test_arm_virt.py b/tests/functional/arm/test_virt.py
> similarity index 100%
> rename from tests/functional/test_arm_virt.py
> rename to tests/functional/arm/test_virt.py
> diff --git a/tests/functional/avr/meson.build b/tests/functional/avr/meson.build
> new file mode 100644
> index 00000000000..b311ee89dc8
> --- /dev/null
> +++ b/tests/functional/avr/meson.build
> @@ -0,0 +1,5 @@
> +
> +tests_avr_system_thorough = [
> + 'mega2560',
> + 'uno',
> +]
> diff --git a/tests/functional/test_avr_mega2560.py b/tests/functional/avr/test_mega2560.py
> similarity index 100%
> rename from tests/functional/test_avr_mega2560.py
> rename to tests/functional/avr/test_mega2560.py
> diff --git a/tests/functional/test_avr_uno.py b/tests/functional/avr/test_uno.py
> similarity index 100%
> rename from tests/functional/test_avr_uno.py
> rename to tests/functional/avr/test_uno.py
> diff --git a/tests/functional/test_empty_cpu_model.py b/tests/functional/generic/test_empty_cpu_model.py
> similarity index 100%
> rename from tests/functional/test_empty_cpu_model.py
> rename to tests/functional/generic/test_empty_cpu_model.py
> diff --git a/tests/functional/test_info_usernet.py b/tests/functional/generic/test_info_usernet.py
> similarity index 100%
> rename from tests/functional/test_info_usernet.py
> rename to tests/functional/generic/test_info_usernet.py
> diff --git a/tests/functional/test_migration.py b/tests/functional/generic/test_migration.py
> similarity index 100%
> rename from tests/functional/test_migration.py
> rename to tests/functional/generic/test_migration.py
> diff --git a/tests/functional/test_version.py b/tests/functional/generic/test_version.py
> similarity index 100%
> rename from tests/functional/test_version.py
> rename to tests/functional/generic/test_version.py
> diff --git a/tests/functional/hppa/meson.build b/tests/functional/hppa/meson.build
> new file mode 100644
> index 00000000000..046241562cb
> --- /dev/null
> +++ b/tests/functional/hppa/meson.build
> @@ -0,0 +1,4 @@
> +
> +tests_hppa_system_quick = [
> + 'seabios',
> +]
> diff --git a/tests/functional/test_hppa_seabios.py b/tests/functional/hppa/test_seabios.py
> similarity index 100%
> rename from tests/functional/test_hppa_seabios.py
> rename to tests/functional/hppa/test_seabios.py
> diff --git a/tests/functional/i386/meson.build b/tests/functional/i386/meson.build
> new file mode 100644
> index 00000000000..90bed3cbc35
> --- /dev/null
> +++ b/tests/functional/i386/meson.build
> @@ -0,0 +1,9 @@
> +
> +tests_i386_system_quick = [
> + 'migration',
> +]
> +
> +tests_i386_system_thorough = [
> + 'replay',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/i386/test_migration.py b/tests/functional/i386/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/i386/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/test_i386_replay.py b/tests/functional/i386/test_replay.py
> similarity index 100%
> rename from tests/functional/test_i386_replay.py
> rename to tests/functional/i386/test_replay.py
> diff --git a/tests/functional/test_i386_tuxrun.py b/tests/functional/i386/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_i386_tuxrun.py
> rename to tests/functional/i386/test_tuxrun.py
> diff --git a/tests/functional/loongarch64/meson.build b/tests/functional/loongarch64/meson.build
> new file mode 100644
> index 00000000000..90f2e4056f4
> --- /dev/null
> +++ b/tests/functional/loongarch64/meson.build
> @@ -0,0 +1,4 @@
> +
> +tests_loongarch64_system_thorough = [
> + 'virt',
> +]
> diff --git a/tests/functional/test_loongarch64_virt.py b/tests/functional/loongarch64/test_virt.py
> similarity index 100%
> rename from tests/functional/test_loongarch64_virt.py
> rename to tests/functional/loongarch64/test_virt.py
> diff --git a/tests/functional/m68k/meson.build b/tests/functional/m68k/meson.build
> new file mode 100644
> index 00000000000..c499fecb3cf
> --- /dev/null
> +++ b/tests/functional/m68k/meson.build
> @@ -0,0 +1,8 @@
> +
> +tests_m68k_system_thorough = [
> + 'mcf5208evb',
> + 'nextcube',
> + 'replay',
> + 'q800',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/test_m68k_mcf5208evb.py b/tests/functional/m68k/test_mcf5208evb.py
> similarity index 100%
> rename from tests/functional/test_m68k_mcf5208evb.py
> rename to tests/functional/m68k/test_mcf5208evb.py
> diff --git a/tests/functional/test_m68k_nextcube.py b/tests/functional/m68k/test_nextcube.py
> similarity index 100%
> rename from tests/functional/test_m68k_nextcube.py
> rename to tests/functional/m68k/test_nextcube.py
> diff --git a/tests/functional/test_m68k_q800.py b/tests/functional/m68k/test_q800.py
> similarity index 100%
> rename from tests/functional/test_m68k_q800.py
> rename to tests/functional/m68k/test_q800.py
> diff --git a/tests/functional/test_m68k_replay.py b/tests/functional/m68k/test_replay.py
> similarity index 100%
> rename from tests/functional/test_m68k_replay.py
> rename to tests/functional/m68k/test_replay.py
> diff --git a/tests/functional/test_m68k_tuxrun.py b/tests/functional/m68k/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_m68k_tuxrun.py
> rename to tests/functional/m68k/test_tuxrun.py
> diff --git a/tests/functional/meson.build b/tests/functional/meson.build
> index 050c9000b95..c7ee4b1f172 100644
> --- a/tests/functional/meson.build
> +++ b/tests/functional/meson.build
> @@ -9,63 +9,33 @@ if get_option('tcg_interpreter')
> subdir_done()
> endif
>
> -# Timeouts for individual tests that can be slow e.g. with debugging enabled
> -test_timeouts = {
> - 'aarch64_aspeed_ast2700' : 600,
> - 'aarch64_aspeed_ast2700fc' : 600,
> - 'aarch64_device_passthrough' : 720,
> - 'aarch64_imx8mp_evk' : 240,
> - 'aarch64_raspi4' : 480,
> - 'aarch64_reverse_debug' : 180,
> - 'aarch64_rme_virt' : 1200,
> - 'aarch64_rme_sbsaref' : 1200,
> - 'aarch64_sbsaref_alpine' : 1200,
> - 'aarch64_sbsaref_freebsd' : 720,
> - 'aarch64_smmu' : 720,
> - 'aarch64_tuxrun' : 240,
> - 'aarch64_virt' : 360,
> - 'aarch64_virt_gpu' : 480,
> - 'acpi_bits' : 420,
> - 'arm_aspeed_palmetto' : 120,
> - 'arm_aspeed_romulus' : 120,
> - 'arm_aspeed_witherspoon' : 120,
> - 'arm_aspeed_ast2500' : 720,
> - 'arm_aspeed_ast2600' : 1200,
> - 'arm_aspeed_bletchley' : 480,
> - 'arm_aspeed_catalina' : 480,
> - 'arm_aspeed_gb200nvl_bmc' : 480,
> - 'arm_aspeed_rainier' : 480,
> - 'arm_bpim2u' : 500,
> - 'arm_collie' : 180,
> - 'arm_cubieboard' : 360,
> - 'arm_orangepi' : 540,
> - 'arm_quanta_gsj' : 240,
> - 'arm_raspi2' : 120,
> - 'arm_replay' : 240,
> - 'arm_tuxrun' : 240,
> - 'arm_sx1' : 360,
> - 'intel_iommu': 300,
> - 'mips_malta' : 480,
> - 'mipsel_malta' : 420,
> - 'mipsel_replay' : 480,
> - 'mips64_malta' : 240,
> - 'mips64el_malta' : 420,
> - 'mips64el_replay' : 180,
> - 'netdev_ethtool' : 180,
> - 'ppc_40p' : 240,
> - 'ppc64_hv' : 1000,
> - 'ppc64_powernv' : 480,
> - 'ppc64_pseries' : 480,
> - 'ppc64_replay' : 210,
> - 'ppc64_tuxrun' : 420,
> - 'ppc64_mac99' : 120,
> - 'riscv64_tuxrun' : 120,
> - 's390x_ccw_virtio' : 420,
> - 'sh4_tuxrun' : 240,
> - 'virtio_balloon': 120,
> - 'x86_64_kvm_xen' : 180,
> - 'x86_64_replay' : 480,
> -}
> +subdir('aarch64')
> +subdir('alpha')
> +subdir('arm')
> +subdir('avr')
> +subdir('hppa')
> +subdir('i386')
> +subdir('loongarch64')
> +subdir('m68k')
> +subdir('microblaze')
> +subdir('microblazeel')
> +subdir('mips')
> +subdir('mips64')
> +subdir('mips64el')
> +subdir('mipsel')
> +subdir('or1k')
> +subdir('ppc')
> +subdir('ppc64')
> +subdir('riscv32')
> +subdir('riscv64')
> +subdir('rx')
> +subdir('s390x')
> +subdir('sh4')
> +subdir('sh4eb')
> +subdir('sparc')
> +subdir('sparc64')
> +subdir('x86_64')
> +subdir('xtensa')
>
> tests_generic_system = [
> 'empty_cpu_model',
> @@ -79,271 +49,6 @@ tests_generic_linuxuser = [
> tests_generic_bsduser = [
> ]
>
> -tests_aarch64_system_quick = [
> - 'migration',
> -]
> -
> -tests_aarch64_system_thorough = [
> - 'aarch64_aspeed_ast2700',
> - 'aarch64_aspeed_ast2700fc',
> - 'aarch64_device_passthrough',
> - 'aarch64_hotplug_pci',
> - 'aarch64_imx8mp_evk',
> - 'aarch64_raspi3',
> - 'aarch64_raspi4',
> - 'aarch64_replay',
> - 'aarch64_reverse_debug',
> - 'aarch64_rme_virt',
> - 'aarch64_rme_sbsaref',
> - 'aarch64_sbsaref',
> - 'aarch64_sbsaref_alpine',
> - 'aarch64_sbsaref_freebsd',
> - 'aarch64_smmu',
> - 'aarch64_tcg_plugins',
> - 'aarch64_tuxrun',
> - 'aarch64_virt',
> - 'aarch64_virt_gpu',
> - 'aarch64_xen',
> - 'aarch64_xlnx_versal',
> - 'multiprocess',
> -]
> -
> -tests_alpha_system_quick = [
> - 'migration',
> -]
> -
> -tests_alpha_system_thorough = [
> - 'alpha_clipper',
> - 'alpha_replay',
> -]
> -
> -tests_arm_system_quick = [
> - 'migration',
> -]
> -
> -tests_arm_system_thorough = [
> - 'arm_aspeed_ast1030',
> - 'arm_aspeed_palmetto',
> - 'arm_aspeed_romulus',
> - 'arm_aspeed_witherspoon',
> - 'arm_aspeed_ast2500',
> - 'arm_aspeed_ast2600',
> - 'arm_aspeed_bletchley',
> - 'arm_aspeed_catalina',
> - 'arm_aspeed_gb200nvl_bmc',
> - 'arm_aspeed_rainier',
> - 'arm_bpim2u',
> - 'arm_canona1100',
> - 'arm_collie',
> - 'arm_cubieboard',
> - 'arm_emcraft_sf2',
> - 'arm_integratorcp',
> - 'arm_microbit',
> - 'arm_orangepi',
> - 'arm_quanta_gsj',
> - 'arm_raspi2',
> - 'arm_realview',
> - 'arm_replay',
> - 'arm_smdkc210',
> - 'arm_stellaris',
> - 'arm_sx1',
> - 'arm_vexpress',
> - 'arm_virt',
> - 'arm_tuxrun',
> -]
> -
> -tests_arm_linuxuser_thorough = [
> - 'arm_bflt',
> -]
> -
> -tests_avr_system_thorough = [
> - 'avr_mega2560',
> - 'avr_uno',
> -]
> -
> -tests_hppa_system_quick = [
> - 'hppa_seabios',
> -]
> -
> -tests_i386_system_quick = [
> - 'migration',
> -]
> -
> -tests_i386_system_thorough = [
> - 'i386_replay',
> - 'i386_tuxrun',
> -]
> -
> -tests_loongarch64_system_thorough = [
> - 'loongarch64_virt',
> -]
> -
> -tests_m68k_system_thorough = [
> - 'm68k_mcf5208evb',
> - 'm68k_nextcube',
> - 'm68k_replay',
> - 'm68k_q800',
> - 'm68k_tuxrun',
> -]
> -
> -tests_microblaze_system_thorough = [
> - 'microblaze_replay',
> - 'microblaze_s3adsp1800'
> -]
> -
> -tests_microblazeel_system_thorough = [
> - 'microblazeel_s3adsp1800'
> -]
> -
> -tests_mips_system_thorough = [
> - 'mips_malta',
> - 'mips_replay',
> - 'mips_tuxrun',
> -]
> -
> -tests_mipsel_system_thorough = [
> - 'mipsel_malta',
> - 'mipsel_replay',
> - 'mipsel_tuxrun',
> -]
> -
> -tests_mips64_system_thorough = [
> - 'mips64_malta',
> - 'mips64_tuxrun',
> -]
> -
> -tests_mips64el_system_thorough = [
> - 'mips64el_fuloong2e',
> - 'mips64el_loongson3v',
> - 'mips64el_malta',
> - 'mips64el_replay',
> - 'mips64el_tuxrun',
> -]
> -
> -tests_or1k_system_thorough = [
> - 'or1k_replay',
> - 'or1k_sim',
> -]
> -
> -tests_ppc_system_quick = [
> - 'migration',
> - 'ppc_74xx',
> -]
> -
> -tests_ppc_system_thorough = [
> - 'ppc_40p',
> - 'ppc_amiga',
> - 'ppc_bamboo',
> - 'ppc_mac',
> - 'ppc_mpc8544ds',
> - 'ppc_replay',
> - 'ppc_sam460ex',
> - 'ppc_tuxrun',
> - 'ppc_virtex_ml507',
> -]
> -
> -tests_ppc64_system_quick = [
> - 'migration',
> -]
> -
> -tests_ppc64_system_thorough = [
> - 'ppc64_e500',
> - 'ppc64_hv',
> - 'ppc64_powernv',
> - 'ppc64_pseries',
> - 'ppc64_replay',
> - 'ppc64_reverse_debug',
> - 'ppc64_tuxrun',
> - 'ppc64_mac99',
> -]
> -
> -tests_riscv32_system_quick = [
> - 'migration',
> - 'riscv_opensbi',
> -]
> -
> -tests_riscv32_system_thorough = [
> - 'riscv32_tuxrun',
> -]
> -
> -tests_riscv64_system_quick = [
> - 'migration',
> - 'riscv_opensbi',
> -]
> -
> -tests_riscv64_system_thorough = [
> - 'riscv64_tuxrun',
> -]
> -
> -tests_rx_system_thorough = [
> - 'rx_gdbsim',
> -]
> -
> -tests_s390x_system_thorough = [
> - 's390x_ccw_virtio',
> - 's390x_replay',
> - 's390x_topology',
> - 's390x_tuxrun',
> -]
> -
> -tests_sh4_system_thorough = [
> - 'sh4_r2d',
> - 'sh4_tuxrun',
> -]
> -
> -tests_sh4eb_system_thorough = [
> - 'sh4eb_r2d',
> -]
> -
> -tests_sparc_system_quick = [
> - 'migration',
> -]
> -
> -tests_sparc_system_thorough = [
> - 'sparc_replay',
> - 'sparc_sun4m',
> -]
> -
> -tests_sparc64_system_quick = [
> - 'migration',
> -]
> -
> -tests_sparc64_system_thorough = [
> - 'sparc64_sun4u',
> - 'sparc64_tuxrun',
> -]
> -
> -tests_x86_64_system_quick = [
> - 'cpu_queries',
> - 'mem_addr_space',
> - 'migration',
> - 'pc_cpu_hotplug_props',
> - 'virtio_version',
> - 'x86_cpu_model_versions',
> - 'vnc',
> - 'memlock',
> -]
> -
> -tests_x86_64_system_thorough = [
> - 'acpi_bits',
> - 'intel_iommu',
> - 'linux_initrd',
> - 'multiprocess',
> - 'netdev_ethtool',
> - 'virtio_balloon',
> - 'virtio_gpu',
> - 'x86_64_hotplug_blk',
> - 'x86_64_hotplug_cpu',
> - 'x86_64_kvm_xen',
> - 'x86_64_replay',
> - 'x86_64_reverse_debug',
> - 'x86_64_tuxrun',
> -]
> -
> -tests_xtensa_system_thorough = [
> - 'xtensa_lx60',
> - 'xtensa_replay',
> -]
>
> precache_all = []
> foreach speed : ['quick', 'thorough']
> @@ -386,7 +91,11 @@ foreach speed : ['quick', 'thorough']
>
> foreach test : target_tests
> testname = '@0@-@1@'.format(target_base, test)
> - testfile = 'test_' + test + '.py'
> + if fs.exists('generic' / 'test_' + test + '.py')
> + testfile = 'generic' / 'test_' + test + '.py'
> + else
> + testfile = target_base / 'test_' + test + '.py'
> + endif
> testpath = meson.current_source_dir() / testfile
> teststamp = testname + '.tstamp'
> test_precache_env = environment()
> @@ -400,6 +109,11 @@ foreach speed : ['quick', 'thorough']
> build_by_default: false,
> env: test_precache_env)
> precache_all += precache
> + if is_variable('test_' + target_base + '_timeouts')
> + time_out = get_variable('test_' + target_base + '_timeouts').get(test, 90)
> + else
> + time_out = 90
> + endif
>
> # Ideally we would add 'precache' to 'depends' here, such that
> # 'build_by_default: false' lets the pre-caching automatically
> @@ -415,8 +129,8 @@ foreach speed : ['quick', 'thorough']
> env: test_env,
> args: [testpath],
> protocol: 'tap',
> - timeout: test_timeouts.get(test, 90),
> - priority: test_timeouts.get(test, 90),
> + timeout: time_out,
> + priority: time_out,
> suite: suites)
> endforeach
> endforeach
> diff --git a/tests/functional/microblaze/meson.build b/tests/functional/microblaze/meson.build
> new file mode 100644
> index 00000000000..a067393acdc
> --- /dev/null
> +++ b/tests/functional/microblaze/meson.build
> @@ -0,0 +1,5 @@
> +
> +tests_microblaze_system_thorough = [
> + 'replay',
> + 's3adsp1800'
> +]
> diff --git a/tests/functional/test_microblaze_replay.py b/tests/functional/microblaze/test_replay.py
> similarity index 100%
> rename from tests/functional/test_microblaze_replay.py
> rename to tests/functional/microblaze/test_replay.py
> diff --git a/tests/functional/test_microblaze_s3adsp1800.py b/tests/functional/microblaze/test_s3adsp1800.py
> similarity index 100%
> rename from tests/functional/test_microblaze_s3adsp1800.py
> rename to tests/functional/microblaze/test_s3adsp1800.py
> diff --git a/tests/functional/microblazeel/meson.build b/tests/functional/microblazeel/meson.build
> new file mode 100644
> index 00000000000..69e3f58dd81
> --- /dev/null
> +++ b/tests/functional/microblazeel/meson.build
> @@ -0,0 +1,4 @@
> +
> +tests_microblazeel_system_thorough = [
> + 's3adsp1800'
> +]
> diff --git a/tests/functional/test_microblazeel_s3adsp1800.py b/tests/functional/microblazeel/test_s3adsp1800.py
> similarity index 92%
> rename from tests/functional/test_microblazeel_s3adsp1800.py
> rename to tests/functional/microblazeel/test_s3adsp1800.py
> index 915902d48bd..75ce8856ed1 100755
> --- a/tests/functional/test_microblazeel_s3adsp1800.py
> +++ b/tests/functional/microblazeel/test_s3adsp1800.py
> @@ -7,7 +7,7 @@
> # This work is licensed under the terms of the GNU GPL, version 2 or
> # later. See the COPYING file in the top-level directory.
>
> -from test_microblaze_s3adsp1800 import MicroblazeMachine
> +from microblaze.test_s3adsp1800 import MicroblazeMachine
>
>
> class MicroblazeLittleEndianMachine(MicroblazeMachine):
> diff --git a/tests/functional/mips/meson.build b/tests/functional/mips/meson.build
> new file mode 100644
> index 00000000000..3c09f461770
> --- /dev/null
> +++ b/tests/functional/mips/meson.build
> @@ -0,0 +1,11 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_mips_timeouts = {
> + 'malta' : 480,
> +}
> +
> +tests_mips_system_thorough = [
> + 'malta',
> + 'replay',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/test_mips_malta.py b/tests/functional/mips/test_malta.py
> similarity index 100%
> rename from tests/functional/test_mips_malta.py
> rename to tests/functional/mips/test_malta.py
> diff --git a/tests/functional/test_mips_replay.py b/tests/functional/mips/test_replay.py
> similarity index 100%
> rename from tests/functional/test_mips_replay.py
> rename to tests/functional/mips/test_replay.py
> diff --git a/tests/functional/test_mips_tuxrun.py b/tests/functional/mips/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_mips_tuxrun.py
> rename to tests/functional/mips/test_tuxrun.py
> diff --git a/tests/functional/mips64/meson.build b/tests/functional/mips64/meson.build
> new file mode 100644
> index 00000000000..65166fc1a45
> --- /dev/null
> +++ b/tests/functional/mips64/meson.build
> @@ -0,0 +1,10 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_mips64_timeouts = {
> + 'malta' : 240,
> +}
> +
> +tests_mips64_system_thorough = [
> + 'malta',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/test_mips64_malta.py b/tests/functional/mips64/test_malta.py
> similarity index 96%
> rename from tests/functional/test_mips64_malta.py
> rename to tests/functional/mips64/test_malta.py
> index 53c3e0c1221..a553d3c5bc7 100755
> --- a/tests/functional/test_mips64_malta.py
> +++ b/tests/functional/mips64/test_malta.py
> @@ -5,7 +5,7 @@
> # SPDX-License-Identifier: GPL-2.0-or-later
>
> from qemu_test import LinuxKernelTest, Asset
> -from test_mips_malta import mips_check_wheezy
> +from mips.test_malta import mips_check_wheezy
>
>
> class MaltaMachineConsole(LinuxKernelTest):
> diff --git a/tests/functional/test_mips64_tuxrun.py b/tests/functional/mips64/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_mips64_tuxrun.py
> rename to tests/functional/mips64/test_tuxrun.py
> diff --git a/tests/functional/mips64el/meson.build b/tests/functional/mips64el/meson.build
> new file mode 100644
> index 00000000000..096b12dc607
> --- /dev/null
> +++ b/tests/functional/mips64el/meson.build
> @@ -0,0 +1,14 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_mips64el_timeouts = {
> + 'malta' : 420,
> + 'replay' : 180,
> +}
> +
> +tests_mips64el_system_thorough = [
> + 'fuloong2e',
> + 'loongson3v',
> + 'malta',
> + 'replay',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/test_mips64el_fuloong2e.py b/tests/functional/mips64el/test_fuloong2e.py
> similarity index 100%
> rename from tests/functional/test_mips64el_fuloong2e.py
> rename to tests/functional/mips64el/test_fuloong2e.py
> diff --git a/tests/functional/test_mips64el_loongson3v.py b/tests/functional/mips64el/test_loongson3v.py
> similarity index 100%
> rename from tests/functional/test_mips64el_loongson3v.py
> rename to tests/functional/mips64el/test_loongson3v.py
> diff --git a/tests/functional/test_mips64el_malta.py b/tests/functional/mips64el/test_malta.py
> similarity index 98%
> rename from tests/functional/test_mips64el_malta.py
> rename to tests/functional/mips64el/test_malta.py
> index 3cc79b74c18..8fdc49b3005 100755
> --- a/tests/functional/test_mips64el_malta.py
> +++ b/tests/functional/mips64el/test_malta.py
> @@ -16,7 +16,7 @@
> from qemu_test import exec_command_and_wait_for_pattern
> from qemu_test import skipIfMissingImports, skipFlakyTest, skipUntrustedTest
>
> -from test_mips_malta import mips_check_wheezy
> +from mips.test_malta import mips_check_wheezy
>
>
> class MaltaMachineConsole(LinuxKernelTest):
> @@ -191,7 +191,7 @@ def test_mips_malta_i6400_framebuffer_logo_8cores(self):
> self.do_test_i6400_framebuffer_logo(8)
>
>
> -from test_mipsel_malta import MaltaMachineYAMON
> +from mipsel.test_malta import MaltaMachineYAMON
>
> if __name__ == '__main__':
> LinuxKernelTest.main()
> diff --git a/tests/functional/test_mips64el_replay.py b/tests/functional/mips64el/test_replay.py
> similarity index 100%
> rename from tests/functional/test_mips64el_replay.py
> rename to tests/functional/mips64el/test_replay.py
> diff --git a/tests/functional/test_mips64el_tuxrun.py b/tests/functional/mips64el/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_mips64el_tuxrun.py
> rename to tests/functional/mips64el/test_tuxrun.py
> diff --git a/tests/functional/mipsel/meson.build b/tests/functional/mipsel/meson.build
> new file mode 100644
> index 00000000000..f719f03e1a3
> --- /dev/null
> +++ b/tests/functional/mipsel/meson.build
> @@ -0,0 +1,12 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_mipsel_timeouts = {
> + 'malta' : 420,
> + 'replay' : 480,
> +}
> +
> +tests_mipsel_system_thorough = [
> + 'malta',
> + 'replay',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/test_mipsel_malta.py b/tests/functional/mipsel/test_malta.py
> similarity index 98%
> rename from tests/functional/test_mipsel_malta.py
> rename to tests/functional/mipsel/test_malta.py
> index 9ee2884da8e..427e163d19d 100755
> --- a/tests/functional/test_mipsel_malta.py
> +++ b/tests/functional/mipsel/test_malta.py
> @@ -13,7 +13,7 @@
> from qemu_test import interrupt_interactive_console_until_pattern
> from qemu_test import wait_for_console_pattern
>
> -from test_mips_malta import mips_check_wheezy
> +from mips.test_malta import mips_check_wheezy
>
>
> class MaltaMachineConsole(LinuxKernelTest):
> diff --git a/tests/functional/test_mipsel_replay.py b/tests/functional/mipsel/test_replay.py
> similarity index 100%
> rename from tests/functional/test_mipsel_replay.py
> rename to tests/functional/mipsel/test_replay.py
> diff --git a/tests/functional/test_mipsel_tuxrun.py b/tests/functional/mipsel/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_mipsel_tuxrun.py
> rename to tests/functional/mipsel/test_tuxrun.py
> diff --git a/tests/functional/or1k/meson.build b/tests/functional/or1k/meson.build
> new file mode 100644
> index 00000000000..e439087d938
> --- /dev/null
> +++ b/tests/functional/or1k/meson.build
> @@ -0,0 +1,5 @@
> +
> +tests_or1k_system_thorough = [
> + 'replay',
> + 'sim',
> +]
> diff --git a/tests/functional/test_or1k_replay.py b/tests/functional/or1k/test_replay.py
> similarity index 100%
> rename from tests/functional/test_or1k_replay.py
> rename to tests/functional/or1k/test_replay.py
> diff --git a/tests/functional/test_or1k_sim.py b/tests/functional/or1k/test_sim.py
> similarity index 100%
> rename from tests/functional/test_or1k_sim.py
> rename to tests/functional/or1k/test_sim.py
> diff --git a/tests/functional/ppc/meson.build b/tests/functional/ppc/meson.build
> new file mode 100644
> index 00000000000..81f73a44417
> --- /dev/null
> +++ b/tests/functional/ppc/meson.build
> @@ -0,0 +1,22 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_ppc_timeouts = {
> + '40p' : 240,
> +}
> +
> +tests_ppc_system_quick = [
> + 'migration',
> + '74xx',
> +]
> +
> +tests_ppc_system_thorough = [
> + '40p',
> + 'amiga',
> + 'bamboo',
> + 'mac',
> + 'mpc8544ds',
> + 'replay',
> + 'sam460ex',
> + 'tuxrun',
> + 'virtex_ml507',
> +]
> diff --git a/tests/functional/test_ppc_40p.py b/tests/functional/ppc/test_40p.py
> similarity index 100%
> rename from tests/functional/test_ppc_40p.py
> rename to tests/functional/ppc/test_40p.py
> diff --git a/tests/functional/test_ppc_74xx.py b/tests/functional/ppc/test_74xx.py
> similarity index 100%
> rename from tests/functional/test_ppc_74xx.py
> rename to tests/functional/ppc/test_74xx.py
> diff --git a/tests/functional/test_ppc_amiga.py b/tests/functional/ppc/test_amiga.py
> similarity index 100%
> rename from tests/functional/test_ppc_amiga.py
> rename to tests/functional/ppc/test_amiga.py
> diff --git a/tests/functional/test_ppc_bamboo.py b/tests/functional/ppc/test_bamboo.py
> similarity index 100%
> rename from tests/functional/test_ppc_bamboo.py
> rename to tests/functional/ppc/test_bamboo.py
> diff --git a/tests/functional/test_ppc_mac.py b/tests/functional/ppc/test_mac.py
> similarity index 100%
> rename from tests/functional/test_ppc_mac.py
> rename to tests/functional/ppc/test_mac.py
> diff --git a/tests/functional/ppc/test_migration.py b/tests/functional/ppc/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/ppc/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/test_ppc_mpc8544ds.py b/tests/functional/ppc/test_mpc8544ds.py
> similarity index 100%
> rename from tests/functional/test_ppc_mpc8544ds.py
> rename to tests/functional/ppc/test_mpc8544ds.py
> diff --git a/tests/functional/test_ppc_replay.py b/tests/functional/ppc/test_replay.py
> similarity index 100%
> rename from tests/functional/test_ppc_replay.py
> rename to tests/functional/ppc/test_replay.py
> diff --git a/tests/functional/test_ppc_sam460ex.py b/tests/functional/ppc/test_sam460ex.py
> similarity index 100%
> rename from tests/functional/test_ppc_sam460ex.py
> rename to tests/functional/ppc/test_sam460ex.py
> diff --git a/tests/functional/test_ppc_tuxrun.py b/tests/functional/ppc/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_ppc_tuxrun.py
> rename to tests/functional/ppc/test_tuxrun.py
> diff --git a/tests/functional/test_ppc_virtex_ml507.py b/tests/functional/ppc/test_virtex_ml507.py
> similarity index 100%
> rename from tests/functional/test_ppc_virtex_ml507.py
> rename to tests/functional/ppc/test_virtex_ml507.py
> diff --git a/tests/functional/ppc64/meson.build b/tests/functional/ppc64/meson.build
> new file mode 100644
> index 00000000000..58867c3b5b6
> --- /dev/null
> +++ b/tests/functional/ppc64/meson.build
> @@ -0,0 +1,25 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_ppc64_timeouts = {
> + 'hv' : 1000,
> + 'powernv' : 480,
> + 'pseries' : 480,
> + 'replay' : 210,
> + 'tuxrun' : 420,
> + 'mac99' : 120,
> +}
> +
> +tests_ppc64_system_quick = [
> + 'migration',
> +]
> +
> +tests_ppc64_system_thorough = [
> + 'e500',
> + 'hv',
> + 'powernv',
> + 'pseries',
> + 'replay',
> + 'reverse_debug',
> + 'tuxrun',
> + 'mac99',
> +]
> diff --git a/tests/functional/test_ppc64_e500.py b/tests/functional/ppc64/test_e500.py
> similarity index 100%
> rename from tests/functional/test_ppc64_e500.py
> rename to tests/functional/ppc64/test_e500.py
> diff --git a/tests/functional/test_ppc64_hv.py b/tests/functional/ppc64/test_hv.py
> similarity index 100%
> rename from tests/functional/test_ppc64_hv.py
> rename to tests/functional/ppc64/test_hv.py
> diff --git a/tests/functional/test_ppc64_mac99.py b/tests/functional/ppc64/test_mac99.py
> similarity index 100%
> rename from tests/functional/test_ppc64_mac99.py
> rename to tests/functional/ppc64/test_mac99.py
> diff --git a/tests/functional/ppc64/test_migration.py b/tests/functional/ppc64/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/ppc64/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/test_ppc64_powernv.py b/tests/functional/ppc64/test_powernv.py
> similarity index 100%
> rename from tests/functional/test_ppc64_powernv.py
> rename to tests/functional/ppc64/test_powernv.py
> diff --git a/tests/functional/test_ppc64_pseries.py b/tests/functional/ppc64/test_pseries.py
> similarity index 100%
> rename from tests/functional/test_ppc64_pseries.py
> rename to tests/functional/ppc64/test_pseries.py
> diff --git a/tests/functional/test_ppc64_replay.py b/tests/functional/ppc64/test_replay.py
> similarity index 100%
> rename from tests/functional/test_ppc64_replay.py
> rename to tests/functional/ppc64/test_replay.py
> diff --git a/tests/functional/test_ppc64_reverse_debug.py b/tests/functional/ppc64/test_reverse_debug.py
> similarity index 100%
> rename from tests/functional/test_ppc64_reverse_debug.py
> rename to tests/functional/ppc64/test_reverse_debug.py
> diff --git a/tests/functional/test_ppc64_tuxrun.py b/tests/functional/ppc64/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_ppc64_tuxrun.py
> rename to tests/functional/ppc64/test_tuxrun.py
> diff --git a/tests/functional/riscv32/meson.build b/tests/functional/riscv32/meson.build
> new file mode 100644
> index 00000000000..19298b564fe
> --- /dev/null
> +++ b/tests/functional/riscv32/meson.build
> @@ -0,0 +1,9 @@
> +
> +tests_riscv32_system_quick = [
> + 'migration',
> + 'opensbi',
> +]
> +
> +tests_riscv32_system_thorough = [
> + 'tuxrun',
> +]
> diff --git a/tests/functional/riscv32/test_migration.py b/tests/functional/riscv32/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/riscv32/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/riscv32/test_opensbi.py b/tests/functional/riscv32/test_opensbi.py
> new file mode 120000
> index 00000000000..67763bc7829
> --- /dev/null
> +++ b/tests/functional/riscv32/test_opensbi.py
> @@ -0,0 +1 @@
> +../riscv64/test_opensbi.py
> \ No newline at end of file
> diff --git a/tests/functional/test_riscv32_tuxrun.py b/tests/functional/riscv32/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_riscv32_tuxrun.py
> rename to tests/functional/riscv32/test_tuxrun.py
> diff --git a/tests/functional/riscv64/meson.build b/tests/functional/riscv64/meson.build
> new file mode 100644
> index 00000000000..c03772882cb
> --- /dev/null
> +++ b/tests/functional/riscv64/meson.build
> @@ -0,0 +1,13 @@
> +
> +test_riscv64_timeouts = {
> + 'tuxrun' : 120,
> +}
> +
> +tests_riscv64_system_quick = [
> + 'migration',
> + 'opensbi',
> +]
> +
> +tests_riscv64_system_thorough = [
> + 'tuxrun',
> +]
> diff --git a/tests/functional/test_riscv_opensbi.py b/tests/functional/riscv64/test_opensbi.py
> similarity index 100%
> rename from tests/functional/test_riscv_opensbi.py
> rename to tests/functional/riscv64/test_opensbi.py
> diff --git a/tests/functional/test_riscv64_tuxrun.py b/tests/functional/riscv64/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_riscv64_tuxrun.py
> rename to tests/functional/riscv64/test_tuxrun.py
> diff --git a/tests/functional/rx/meson.build b/tests/functional/rx/meson.build
> new file mode 100644
> index 00000000000..da311c169e8
> --- /dev/null
> +++ b/tests/functional/rx/meson.build
> @@ -0,0 +1,4 @@
> +
> +tests_rx_system_thorough = [
> + 'gdbsim',
> +]
> diff --git a/tests/functional/test_rx_gdbsim.py b/tests/functional/rx/test_gdbsim.py
> similarity index 100%
> rename from tests/functional/test_rx_gdbsim.py
> rename to tests/functional/rx/test_gdbsim.py
> diff --git a/tests/functional/s390x/meson.build b/tests/functional/s390x/meson.build
> new file mode 100644
> index 00000000000..892e7d6dd52
> --- /dev/null
> +++ b/tests/functional/s390x/meson.build
> @@ -0,0 +1,12 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_s390x_timeouts = {
> + 'ccw_virtio' : 420,
> +}
> +
> +tests_s390x_system_thorough = [
> + 'ccw_virtio',
> + 'replay',
> + 'topology',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/test_s390x_ccw_virtio.py b/tests/functional/s390x/test_ccw_virtio.py
> similarity index 100%
> rename from tests/functional/test_s390x_ccw_virtio.py
> rename to tests/functional/s390x/test_ccw_virtio.py
> diff --git a/tests/functional/test_s390x_replay.py b/tests/functional/s390x/test_replay.py
> similarity index 100%
> rename from tests/functional/test_s390x_replay.py
> rename to tests/functional/s390x/test_replay.py
> diff --git a/tests/functional/test_s390x_topology.py b/tests/functional/s390x/test_topology.py
> similarity index 100%
> rename from tests/functional/test_s390x_topology.py
> rename to tests/functional/s390x/test_topology.py
> diff --git a/tests/functional/test_s390x_tuxrun.py b/tests/functional/s390x/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_s390x_tuxrun.py
> rename to tests/functional/s390x/test_tuxrun.py
> diff --git a/tests/functional/sh4/meson.build b/tests/functional/sh4/meson.build
> new file mode 100644
> index 00000000000..d731581048a
> --- /dev/null
> +++ b/tests/functional/sh4/meson.build
> @@ -0,0 +1,10 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_sh4_timeouts = {
> + 'tuxrun' : 240,
> +}
> +
> +tests_sh4_system_thorough = [
> + 'r2d',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/test_sh4_r2d.py b/tests/functional/sh4/test_r2d.py
> similarity index 100%
> rename from tests/functional/test_sh4_r2d.py
> rename to tests/functional/sh4/test_r2d.py
> diff --git a/tests/functional/test_sh4_tuxrun.py b/tests/functional/sh4/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_sh4_tuxrun.py
> rename to tests/functional/sh4/test_tuxrun.py
> diff --git a/tests/functional/sh4eb/meson.build b/tests/functional/sh4eb/meson.build
> new file mode 100644
> index 00000000000..5575e235776
> --- /dev/null
> +++ b/tests/functional/sh4eb/meson.build
> @@ -0,0 +1,4 @@
> +
> +tests_sh4eb_system_thorough = [
> + 'r2d',
> +]
> diff --git a/tests/functional/test_sh4eb_r2d.py b/tests/functional/sh4eb/test_r2d.py
> similarity index 100%
> rename from tests/functional/test_sh4eb_r2d.py
> rename to tests/functional/sh4eb/test_r2d.py
> diff --git a/tests/functional/sparc/meson.build b/tests/functional/sparc/meson.build
> new file mode 100644
> index 00000000000..18d9c75c23a
> --- /dev/null
> +++ b/tests/functional/sparc/meson.build
> @@ -0,0 +1,9 @@
> +
> +tests_sparc_system_quick = [
> + 'migration',
> +]
> +
> +tests_sparc_system_thorough = [
> + 'replay',
> + 'sun4m',
> +]
> diff --git a/tests/functional/sparc/test_migration.py b/tests/functional/sparc/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/sparc/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/test_sparc_replay.py b/tests/functional/sparc/test_replay.py
> similarity index 100%
> rename from tests/functional/test_sparc_replay.py
> rename to tests/functional/sparc/test_replay.py
> diff --git a/tests/functional/test_sparc_sun4m.py b/tests/functional/sparc/test_sun4m.py
> similarity index 100%
> rename from tests/functional/test_sparc_sun4m.py
> rename to tests/functional/sparc/test_sun4m.py
> diff --git a/tests/functional/sparc64/meson.build b/tests/functional/sparc64/meson.build
> new file mode 100644
> index 00000000000..4a5a65defd3
> --- /dev/null
> +++ b/tests/functional/sparc64/meson.build
> @@ -0,0 +1,9 @@
> +
> +tests_sparc64_system_quick = [
> + 'migration',
> +]
> +
> +tests_sparc64_system_thorough = [
> + 'sun4u',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/sparc64/test_migration.py b/tests/functional/sparc64/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/sparc64/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/test_sparc64_sun4u.py b/tests/functional/sparc64/test_sun4u.py
> similarity index 100%
> rename from tests/functional/test_sparc64_sun4u.py
> rename to tests/functional/sparc64/test_sun4u.py
> diff --git a/tests/functional/test_sparc64_tuxrun.py b/tests/functional/sparc64/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_sparc64_tuxrun.py
> rename to tests/functional/sparc64/test_tuxrun.py
> diff --git a/tests/functional/x86_64/meson.build b/tests/functional/x86_64/meson.build
> new file mode 100644
> index 00000000000..49b05a8a170
> --- /dev/null
> +++ b/tests/functional/x86_64/meson.build
> @@ -0,0 +1,37 @@
> +
> +# Timeouts for individual tests that can be slow e.g. with debugging enabled
> +test_x86_64_timeouts = {
> + 'acpi_bits' : 420,
> + 'intel_iommu': 300,
> + 'netdev_ethtool' : 180,
> + 'kvm_xen' : 180,
> + 'replay' : 480,
> + 'virtio_balloon': 120,
> +}
> +
> +tests_x86_64_system_quick = [
> + 'cpu_queries',
> + 'mem_addr_space',
> + 'migration',
> + 'pc_cpu_hotplug_props',
> + 'virtio_version',
> + 'x86_cpu_model_versions',
> + 'vnc',
> + 'memlock',
> +]
> +
> +tests_x86_64_system_thorough = [
> + 'acpi_bits',
> + 'intel_iommu',
> + 'linux_initrd',
> + 'multiprocess',
> + 'netdev_ethtool',
> + 'virtio_balloon',
> + 'virtio_gpu',
> + 'hotplug_blk',
> + 'hotplug_cpu',
> + 'kvm_xen',
> + 'replay',
> + 'reverse_debug',
> + 'tuxrun',
> +]
> diff --git a/tests/functional/test_acpi_bits.py b/tests/functional/x86_64/test_acpi_bits.py
> similarity index 100%
> rename from tests/functional/test_acpi_bits.py
> rename to tests/functional/x86_64/test_acpi_bits.py
> diff --git a/tests/functional/test_cpu_queries.py b/tests/functional/x86_64/test_cpu_queries.py
> similarity index 100%
> rename from tests/functional/test_cpu_queries.py
> rename to tests/functional/x86_64/test_cpu_queries.py
> diff --git a/tests/functional/test_x86_64_hotplug_blk.py b/tests/functional/x86_64/test_hotplug_blk.py
> similarity index 100%
> rename from tests/functional/test_x86_64_hotplug_blk.py
> rename to tests/functional/x86_64/test_hotplug_blk.py
> diff --git a/tests/functional/test_x86_64_hotplug_cpu.py b/tests/functional/x86_64/test_hotplug_cpu.py
> similarity index 100%
> rename from tests/functional/test_x86_64_hotplug_cpu.py
> rename to tests/functional/x86_64/test_hotplug_cpu.py
> diff --git a/tests/functional/test_intel_iommu.py b/tests/functional/x86_64/test_intel_iommu.py
> similarity index 100%
> rename from tests/functional/test_intel_iommu.py
> rename to tests/functional/x86_64/test_intel_iommu.py
> diff --git a/tests/functional/test_x86_64_kvm_xen.py b/tests/functional/x86_64/test_kvm_xen.py
> similarity index 100%
> rename from tests/functional/test_x86_64_kvm_xen.py
> rename to tests/functional/x86_64/test_kvm_xen.py
> diff --git a/tests/functional/test_linux_initrd.py b/tests/functional/x86_64/test_linux_initrd.py
> similarity index 100%
> rename from tests/functional/test_linux_initrd.py
> rename to tests/functional/x86_64/test_linux_initrd.py
> diff --git a/tests/functional/test_mem_addr_space.py b/tests/functional/x86_64/test_mem_addr_space.py
> similarity index 100%
> rename from tests/functional/test_mem_addr_space.py
> rename to tests/functional/x86_64/test_mem_addr_space.py
> diff --git a/tests/functional/test_memlock.py b/tests/functional/x86_64/test_memlock.py
> similarity index 100%
> rename from tests/functional/test_memlock.py
> rename to tests/functional/x86_64/test_memlock.py
> diff --git a/tests/functional/x86_64/test_migration.py b/tests/functional/x86_64/test_migration.py
> new file mode 120000
> index 00000000000..3933b7f3345
> --- /dev/null
> +++ b/tests/functional/x86_64/test_migration.py
> @@ -0,0 +1 @@
> +../generic/test_migration.py
> \ No newline at end of file
> diff --git a/tests/functional/test_multiprocess.py b/tests/functional/x86_64/test_multiprocess.py
> similarity index 100%
> rename from tests/functional/test_multiprocess.py
> rename to tests/functional/x86_64/test_multiprocess.py
> diff --git a/tests/functional/test_netdev_ethtool.py b/tests/functional/x86_64/test_netdev_ethtool.py
> similarity index 100%
> rename from tests/functional/test_netdev_ethtool.py
> rename to tests/functional/x86_64/test_netdev_ethtool.py
> diff --git a/tests/functional/test_pc_cpu_hotplug_props.py b/tests/functional/x86_64/test_pc_cpu_hotplug_props.py
> similarity index 100%
> rename from tests/functional/test_pc_cpu_hotplug_props.py
> rename to tests/functional/x86_64/test_pc_cpu_hotplug_props.py
> diff --git a/tests/functional/test_x86_64_replay.py b/tests/functional/x86_64/test_replay.py
> similarity index 100%
> rename from tests/functional/test_x86_64_replay.py
> rename to tests/functional/x86_64/test_replay.py
> diff --git a/tests/functional/test_x86_64_reverse_debug.py b/tests/functional/x86_64/test_reverse_debug.py
> similarity index 100%
> rename from tests/functional/test_x86_64_reverse_debug.py
> rename to tests/functional/x86_64/test_reverse_debug.py
> diff --git a/tests/functional/test_x86_64_tuxrun.py b/tests/functional/x86_64/test_tuxrun.py
> similarity index 100%
> rename from tests/functional/test_x86_64_tuxrun.py
> rename to tests/functional/x86_64/test_tuxrun.py
> diff --git a/tests/functional/test_virtio_balloon.py b/tests/functional/x86_64/test_virtio_balloon.py
> similarity index 100%
> rename from tests/functional/test_virtio_balloon.py
> rename to tests/functional/x86_64/test_virtio_balloon.py
> diff --git a/tests/functional/test_virtio_gpu.py b/tests/functional/x86_64/test_virtio_gpu.py
> similarity index 100%
> rename from tests/functional/test_virtio_gpu.py
> rename to tests/functional/x86_64/test_virtio_gpu.py
> diff --git a/tests/functional/test_virtio_version.py b/tests/functional/x86_64/test_virtio_version.py
> similarity index 100%
> rename from tests/functional/test_virtio_version.py
> rename to tests/functional/x86_64/test_virtio_version.py
> diff --git a/tests/functional/test_vnc.py b/tests/functional/x86_64/test_vnc.py
> similarity index 100%
> rename from tests/functional/test_vnc.py
> rename to tests/functional/x86_64/test_vnc.py
> diff --git a/tests/functional/test_x86_cpu_model_versions.py b/tests/functional/x86_64/test_x86_cpu_model_versions.py
> similarity index 100%
> rename from tests/functional/test_x86_cpu_model_versions.py
> rename to tests/functional/x86_64/test_x86_cpu_model_versions.py
> diff --git a/tests/functional/xtensa/meson.build b/tests/functional/xtensa/meson.build
> new file mode 100644
> index 00000000000..ca1b6e943b4
> --- /dev/null
> +++ b/tests/functional/xtensa/meson.build
> @@ -0,0 +1,5 @@
> +
> +tests_xtensa_system_thorough = [
> + 'lx60',
> + 'replay',
> +]
> diff --git a/tests/functional/test_xtensa_lx60.py b/tests/functional/xtensa/test_lx60.py
> similarity index 100%
> rename from tests/functional/test_xtensa_lx60.py
> rename to tests/functional/xtensa/test_lx60.py
> diff --git a/tests/functional/test_xtensa_replay.py b/tests/functional/xtensa/test_replay.py
> similarity index 100%
> rename from tests/functional/test_xtensa_replay.py
> rename to tests/functional/xtensa/test_replay.py
> --
> 2.50.0
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC PATCH] tests/functional: Move tests into architecture specific folders
2025-07-10 9:59 ` Manos Pitsidianakis
@ 2025-07-10 12:18 ` Thomas Huth
0 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2025-07-10 12:18 UTC (permalink / raw)
To: Manos Pitsidianakis
Cc: qemu-devel, Daniel P. Berrangé, qemu-arm, qemu-ppc,
qemu-s390x, qemu-riscv, Philippe Mathieu-Daudé,
Pierrick Bouvier, Alex Bennée
On 10/07/2025 11.59, Manos Pitsidianakis wrote:
> On Thu, Jul 10, 2025 at 12:51 PM Thomas Huth <thuth@redhat.com> wrote:
>>
>> This patch tackles two issues. First, the tests/functional folder has
>> become quite crowded already, some restructuring would be helpful here.
>> Second, we currently encode the target architecture twice in the test
>> names since a lot of the test file names contain the target, too.
>> This contributes to the very long output lines when running "make
>> check-functional".
>>
>> So let's move the individual test files to target specific folders now.
>> Then we can drop the target from the file name (and thus from the test
>> name).
>>
>> Before the change, the output looked like this:
>>
>> ...
>> 195/236 qemu:func-thorough+func-microblazeel-thorough+thorough / func-microblazeel-microblazeel_s3adsp1800 OK 2.00s 2 subtests passed
>> 196/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-microblaze_replay OK 2.78s 1 subtests passed
>> 197/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-microblaze_s3adsp1800 OK 2.02s 2 subtests passed
>> 198/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_fuloong2e OK 1.95s 1 subtests passed
>> 199/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_loongson3v SKIP 0.07s 0 subtests passed
>> 200/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_tuxrun OK 8.52s 1 subtests passed
>> ...
>>
>> After this change, it gets a little bit shorter:
>>
>> ...
>> 195/236 qemu:func-thorough+func-microblazeel-thorough+thorough / func-microblazeel-s3adsp1800 OK 2.12s 2 subtests passed
>> 196/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-replay OK 2.90s 1 subtests passed
>> 197/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-s3adsp1800 OK 2.07s 2 subtests passed
>> 198/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-fuloong2e OK 2.05s 1 subtests passed
>> 199/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-loongson3v SKIP 0.07s 0 subtests passed
>> 200/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-tuxrun OK 8.84s 1 subtests passed
>> ...
>>
>> Tests that can be used for multiple but not all targets (like the "migration"
>> test) are now handled via symlinks in the target folders.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>> Note: Marked as RFC since I'm not that happy about the symlinks yet ...
>> if someone has a better idea, please let me know!
>
> How about making those tests utility functions that each target arch
> imports and calls? It feels cleaner than symlinks, I think.
That sounds better, indeed. I'll give it a try...
Thanks,
Thomas
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC PATCH] tests/functional: Move tests into architecture specific folders
2025-07-10 9:42 [RFC PATCH] tests/functional: Move tests into architecture specific folders Thomas Huth
2025-07-10 9:59 ` Manos Pitsidianakis
@ 2025-07-10 14:50 ` Daniel P. Berrangé
2025-07-11 11:51 ` Thomas Huth
2025-07-10 15:51 ` Pierrick Bouvier
2 siblings, 1 reply; 8+ messages in thread
From: Daniel P. Berrangé @ 2025-07-10 14:50 UTC (permalink / raw)
To: Thomas Huth
Cc: qemu-devel, qemu-arm, qemu-ppc, qemu-s390x, qemu-riscv,
Philippe Mathieu-Daudé, Pierrick Bouvier, Alex Bennée
On Thu, Jul 10, 2025 at 11:42:51AM +0200, Thomas Huth wrote:
> This patch tackles two issues. First, the tests/functional folder has
> become quite crowded already, some restructuring would be helpful here.
> Second, we currently encode the target architecture twice in the test
> names since a lot of the test file names contain the target, too.
> This contributes to the very long output lines when running "make
> check-functional".
>
> So let's move the individual test files to target specific folders now.
> Then we can drop the target from the file name (and thus from the test
> name).
> ---
> Note: Marked as RFC since I'm not that happy about the symlinks yet ...
> if someone has a better idea, please let me know!
> Also the update to the MAINTAINERS file is still missing - I'll add
> that once we agreed on whether this patch is a good idea or not.
FWIW, I don't find the symlinks to be a problem, but if they bother you,
we could probably just have a trivial subclass.
from ../generic/test_migration import MigrationTest
class MigrateTestX86(MigrationTest):
pass
Unless pytest runner really needs the 'test_XXX' methods to be only on
the leaf class, not a parent, in order to enumerate test cases ?
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC PATCH] tests/functional: Move tests into architecture specific folders
2025-07-10 9:42 [RFC PATCH] tests/functional: Move tests into architecture specific folders Thomas Huth
2025-07-10 9:59 ` Manos Pitsidianakis
2025-07-10 14:50 ` Daniel P. Berrangé
@ 2025-07-10 15:51 ` Pierrick Bouvier
2025-07-11 11:55 ` Thomas Huth
2 siblings, 1 reply; 8+ messages in thread
From: Pierrick Bouvier @ 2025-07-10 15:51 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
Cc: Daniel P. Berrangé, qemu-arm, qemu-ppc, qemu-s390x,
qemu-riscv, Philippe Mathieu-Daudé, Alex Bennée
On 7/10/25 2:42 AM, Thomas Huth wrote:
> This patch tackles two issues. First, the tests/functional folder has
> become quite crowded already, some restructuring would be helpful here.
> Second, we currently encode the target architecture twice in the test
> names since a lot of the test file names contain the target, too.
> This contributes to the very long output lines when running "make
> check-functional".
>
I agree with the "crowded" aspect of functional tests, and subfolders
are definitely welcome.
Concerning the long line, it seems that setup ("thorough" in this
example) is repeated 3 times on it, which is a bigger issue than having
arch name being repeated.
A simpler solution for the "long line" issue would be to change
mtest2make.py to generate shorter test target names. This would not
benefit for using meson test directly, but from what I understood, this
is not recommended nor supported anyway.
> So let's move the individual test files to target specific folders now.
> Then we can drop the target from the file name (and thus from the test
> name).
>
> Before the change, the output looked like this:
>
> ...
> 195/236 qemu:func-thorough+func-microblazeel-thorough+thorough / func-microblazeel-microblazeel_s3adsp1800 OK 2.00s 2 subtests passed
> 196/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-microblaze_replay OK 2.78s 1 subtests passed
> 197/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-microblaze_s3adsp1800 OK 2.02s 2 subtests passed
> 198/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_fuloong2e OK 1.95s 1 subtests passed
> 199/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_loongson3v SKIP 0.07s 0 subtests passed
> 200/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-mips64el_tuxrun OK 8.52s 1 subtests passed
> ...
>
> After this change, it gets a little bit shorter:
>
> ...
> 195/236 qemu:func-thorough+func-microblazeel-thorough+thorough / func-microblazeel-s3adsp1800 OK 2.12s 2 subtests passed
> 196/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-replay OK 2.90s 1 subtests passed
> 197/236 qemu:func-thorough+func-microblaze-thorough+thorough / func-microblaze-s3adsp1800 OK 2.07s 2 subtests passed
> 198/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-fuloong2e OK 2.05s 1 subtests passed
> 199/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-loongson3v SKIP 0.07s 0 subtests passed
> 200/236 qemu:func-thorough+func-mips64el-thorough+thorough / func-mips64el-tuxrun OK 8.84s 1 subtests passed
> ...
>
> Tests that can be used for multiple but not all targets (like the "migration"
> test) are now handled via symlinks in the target folders.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> Note: Marked as RFC since I'm not that happy about the symlinks yet ...
> if someone has a better idea, please let me know!
Same as Manos, correctly extracting common code looks better than
finding a workaround with symlinks to satisfy import rules.
> Also the update to the MAINTAINERS file is still missing - I'll add
> that once we agreed on whether this patch is a good idea or not.
>
Thanks,
Pierrick
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC PATCH] tests/functional: Move tests into architecture specific folders
2025-07-10 14:50 ` Daniel P. Berrangé
@ 2025-07-11 11:51 ` Thomas Huth
0 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2025-07-11 11:51 UTC (permalink / raw)
To: Daniel P. Berrangé
Cc: qemu-devel, qemu-arm, qemu-ppc, qemu-s390x, qemu-riscv,
Philippe Mathieu-Daudé, Pierrick Bouvier, Alex Bennée
On 10/07/2025 16.50, Daniel P. Berrangé wrote:
> On Thu, Jul 10, 2025 at 11:42:51AM +0200, Thomas Huth wrote:
>> This patch tackles two issues. First, the tests/functional folder has
>> become quite crowded already, some restructuring would be helpful here.
>> Second, we currently encode the target architecture twice in the test
>> names since a lot of the test file names contain the target, too.
>> This contributes to the very long output lines when running "make
>> check-functional".
>>
>> So let's move the individual test files to target specific folders now.
>> Then we can drop the target from the file name (and thus from the test
>> name).
>
>> ---
>> Note: Marked as RFC since I'm not that happy about the symlinks yet ...
>> if someone has a better idea, please let me know!
>> Also the update to the MAINTAINERS file is still missing - I'll add
>> that once we agreed on whether this patch is a good idea or not.
>
> FWIW, I don't find the symlinks to be a problem, but if they bother you,
> we could probably just have a trivial subclass.
>
>
> from ../generic/test_migration import MigrationTest
>
> class MigrateTestX86(MigrationTest):
> pass
>
>
> Unless pytest runner really needs the 'test_XXX' methods to be only on
> the leaf class, not a parent, in order to enumerate test cases ?
I played a little bit with this now, and it seems to be worse: If I keep the
test_* methods in the parent class, each test is now executed twice, once
for the leaf class, and once for the parent class :-/
I guess I could rename the functions in the parent class to use a different
prefix ("do_test_...) and then add test_... functions to the leaf classes
that call the ones from the parent, but that's quite a bit cumbersome...
I'll ponder for it a little bit longer, but if you have any other ideas,
that's welcome, too, of course!
Thomas
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC PATCH] tests/functional: Move tests into architecture specific folders
2025-07-10 15:51 ` Pierrick Bouvier
@ 2025-07-11 11:55 ` Thomas Huth
2025-07-11 16:15 ` Pierrick Bouvier
0 siblings, 1 reply; 8+ messages in thread
From: Thomas Huth @ 2025-07-11 11:55 UTC (permalink / raw)
To: Pierrick Bouvier, qemu-devel
Cc: Daniel P. Berrangé, qemu-arm, qemu-ppc, qemu-s390x,
qemu-riscv, Philippe Mathieu-Daudé, Alex Bennée,
Paolo Bonzini
On 10/07/2025 17.51, Pierrick Bouvier wrote:
> On 7/10/25 2:42 AM, Thomas Huth wrote:
>> This patch tackles two issues. First, the tests/functional folder has
>> become quite crowded already, some restructuring would be helpful here.
>> Second, we currently encode the target architecture twice in the test
>> names since a lot of the test file names contain the target, too.
>> This contributes to the very long output lines when running "make
>> check-functional".
>>
>
> I agree with the "crowded" aspect of functional tests, and subfolders are
> definitely welcome.
>
> Concerning the long line, it seems that setup ("thorough" in this example)
> is repeated 3 times on it, which is a bigger issue than having arch name
> being repeated.
>
> A simpler solution for the "long line" issue would be to change
> mtest2make.py to generate shorter test target names. This would not benefit
> for using meson test directly, but from what I understood, this is not
> recommended nor supported anyway.
I agree that this is a bigger annoyance here, but as far as I understood
that that repeated "thorough" term is just a listing of all the test suites
that the test is part of. I think this would rather need to be fixed on the
meson test runner side - why does meson list all test suites here? The one
that applies to the current should be enough, shouldn't it?
Thomas
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC PATCH] tests/functional: Move tests into architecture specific folders
2025-07-11 11:55 ` Thomas Huth
@ 2025-07-11 16:15 ` Pierrick Bouvier
0 siblings, 0 replies; 8+ messages in thread
From: Pierrick Bouvier @ 2025-07-11 16:15 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
Cc: Daniel P. Berrangé, qemu-arm, qemu-ppc, qemu-s390x,
qemu-riscv, Philippe Mathieu-Daudé, Alex Bennée,
Paolo Bonzini
On 7/11/25 4:55 AM, Thomas Huth wrote:
> On 10/07/2025 17.51, Pierrick Bouvier wrote:
>> On 7/10/25 2:42 AM, Thomas Huth wrote:
>>> This patch tackles two issues. First, the tests/functional folder has
>>> become quite crowded already, some restructuring would be helpful here.
>>> Second, we currently encode the target architecture twice in the test
>>> names since a lot of the test file names contain the target, too.
>>> This contributes to the very long output lines when running "make
>>> check-functional".
>>>
>>
>> I agree with the "crowded" aspect of functional tests, and subfolders are
>> definitely welcome.
>>
>> Concerning the long line, it seems that setup ("thorough" in this example)
>> is repeated 3 times on it, which is a bigger issue than having arch name
>> being repeated.
>>
>> A simpler solution for the "long line" issue would be to change
>> mtest2make.py to generate shorter test target names. This would not benefit
>> for using meson test directly, but from what I understood, this is not
>> recommended nor supported anyway.
>
> I agree that this is a bigger annoyance here, but as far as I understood
> that that repeated "thorough" term is just a listing of all the test suites
> that the test is part of. I think this would rather need to be fixed on the
> meson test runner side - why does meson list all test suites here? The one
> that applies to the current should be enough, shouldn't it?
>
Meson is usually explicit (thus sometimes verbose) and unambiguous,
which are two very nice virtues, especially for build systems and tests,
at least for my personal taste. You don't want to spend time reverse
engineering the test infrastructure itself when you try to understand
why a fail happened or when writing a new test.
Another additional benefit of listing setup + suite + test in an
exhaustive way is that your command line never change to run any
specific test, whatever your current setup is.
If I had to choose between a wider terminal output and spending time
with grep and find to understand what is running, I would pick the
former any time.
Maybe the complexity comes from our usage of test setups here, to
differentiate categories that will download, vs the one that will not.
We already talked about that in another thread, and I still think that
having a single setup (thorough), which could be the default, would make
things easier, even if people should accept to connect to Internet from
time to time to update their tests assets. They do it to download new
versions of QEMU or interact with the mailing list anyway. That said,
I'm not trying to open the can of worms again, just pointing that it may
be related to this topic.
> Thomas
>
Regards,
Pierrick
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-07-11 16:18 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-10 9:42 [RFC PATCH] tests/functional: Move tests into architecture specific folders Thomas Huth
2025-07-10 9:59 ` Manos Pitsidianakis
2025-07-10 12:18 ` Thomas Huth
2025-07-10 14:50 ` Daniel P. Berrangé
2025-07-11 11:51 ` Thomas Huth
2025-07-10 15:51 ` Pierrick Bouvier
2025-07-11 11:55 ` Thomas Huth
2025-07-11 16:15 ` Pierrick Bouvier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).