mirror of
https://github.com/qemu/qemu.git
synced 2024-11-23 10:53:37 +08:00
tests/functional: Convert simple avocado tests into standalone python tests
These test are rather simple and don't need any modifications apart from adjusting the "from avocado_qemu" line. To ease debugging, make the files executable and add a shebang line and Python '__main__' handling, too, so that these tests can now be run by executing them directly. Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <20240830133841.142644-13-thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
1497377857
commit
cce85725f1
@ -1833,6 +1833,8 @@ F: hw/isa/apm.c
|
||||
F: include/hw/isa/apm.h
|
||||
F: tests/unit/test-x86-topo.c
|
||||
F: tests/qtest/test-x86-cpuid-compat.c
|
||||
F: tests/functional/test_mem_addr_space.py
|
||||
F: tests/functional/test_pc_cpu_hotplug_props.py
|
||||
|
||||
PC Chipset
|
||||
M: Michael S. Tsirkin <mst@redhat.com>
|
||||
@ -1899,6 +1901,8 @@ F: include/hw/boards.h
|
||||
F: include/hw/core/cpu.h
|
||||
F: include/hw/cpu/cluster.h
|
||||
F: include/sysemu/numa.h
|
||||
F: tests/functional/test_cpu_queries.py
|
||||
F: tests/functional/test_empty_cpu_model.py
|
||||
F: tests/unit/test-smp-parse.c
|
||||
T: git https://gitlab.com/ehabkost/qemu.git machine-next
|
||||
|
||||
@ -2238,6 +2242,7 @@ F: net/vhost-user.c
|
||||
F: include/hw/virtio/
|
||||
F: docs/devel/virtio*
|
||||
F: docs/devel/migration/virtio.rst
|
||||
F: tests/functional/test_virtio_version.py
|
||||
|
||||
virtio-balloon
|
||||
M: Michael S. Tsirkin <mst@redhat.com>
|
||||
|
@ -14,6 +14,7 @@ test_timeouts = {
|
||||
}
|
||||
|
||||
tests_generic_system = [
|
||||
'empty_cpu_model',
|
||||
]
|
||||
|
||||
tests_generic_linuxuser = [
|
||||
@ -23,6 +24,10 @@ tests_generic_bsduser = [
|
||||
]
|
||||
|
||||
tests_x86_64_system_quick = [
|
||||
'cpu_queries',
|
||||
'mem_addr_space',
|
||||
'pc_cpu_hotplug_props',
|
||||
'virtio_version',
|
||||
]
|
||||
|
||||
tests_x86_64_system_thorough = [
|
||||
|
12
tests/avocado/cpu_queries.py → tests/functional/test_cpu_queries.py
Normal file → Executable file
12
tests/avocado/cpu_queries.py → tests/functional/test_cpu_queries.py
Normal file → Executable file
@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Sanity check of query-cpu-* results
|
||||
#
|
||||
# Copyright (c) 2019 Red Hat, Inc.
|
||||
@ -8,7 +10,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 avocado_qemu import QemuSystemTest
|
||||
from qemu_test import QemuSystemTest
|
||||
|
||||
class QueryCPUModelExpansion(QemuSystemTest):
|
||||
"""
|
||||
@ -16,10 +18,7 @@ class QueryCPUModelExpansion(QemuSystemTest):
|
||||
"""
|
||||
|
||||
def test(self):
|
||||
"""
|
||||
:avocado: tags=arch:x86_64
|
||||
:avocado: tags=machine:none
|
||||
"""
|
||||
self.set_machine('none')
|
||||
self.vm.add_args('-S')
|
||||
self.vm.launch()
|
||||
|
||||
@ -33,3 +32,6 @@ class QueryCPUModelExpansion(QemuSystemTest):
|
||||
e = self.vm.cmd('query-cpu-model-expansion', model=model,
|
||||
type='full')
|
||||
self.assertEqual(e['model']['name'], c['name'])
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
7
tests/avocado/empty_cpu_model.py → tests/functional/test_empty_cpu_model.py
Normal file → Executable file
7
tests/avocado/empty_cpu_model.py → tests/functional/test_empty_cpu_model.py
Normal file → Executable file
@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Check for crash when using empty -cpu option
|
||||
#
|
||||
# Copyright (c) 2019 Red Hat, Inc.
|
||||
@ -7,7 +9,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 avocado_qemu import QemuSystemTest
|
||||
from qemu_test import QemuSystemTest
|
||||
|
||||
class EmptyCPUModel(QemuSystemTest):
|
||||
def test(self):
|
||||
@ -17,3 +19,6 @@ class EmptyCPUModel(QemuSystemTest):
|
||||
self.vm.wait()
|
||||
self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
|
||||
self.assertRegex(self.vm.get_log(), r'-cpu option cannot be empty')
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
52
tests/avocado/mem-addr-space-check.py → tests/functional/test_mem_addr_space.py
Normal file → Executable file
52
tests/avocado/mem-addr-space-check.py → tests/functional/test_mem_addr_space.py
Normal file → Executable file
@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Check for crash when using memory beyond the available guest processor
|
||||
# address space.
|
||||
#
|
||||
@ -8,7 +10,7 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
from avocado_qemu import QemuSystemTest
|
||||
from qemu_test import QemuSystemTest
|
||||
import time
|
||||
|
||||
class MemAddrCheck(QemuSystemTest):
|
||||
@ -22,9 +24,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
# for all 32-bit cases, pci64_hole_size is 0.
|
||||
def test_phybits_low_pse36(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
With pse36 feature ON, a processor has 36 bits of addressing. So it can
|
||||
access up to a maximum of 64GiB of memory. Memory hotplug region begins
|
||||
at 4 GiB boundary when "above_4g_mem_size" is 0 (this would be true when
|
||||
@ -52,9 +51,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_low_pae(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
With pae feature ON, a processor has 36 bits of addressing. So it can
|
||||
access up to a maximum of 64GiB of memory. Rest is the same as the case
|
||||
with pse36 above.
|
||||
@ -72,9 +68,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_ok_pentium_pse36(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
Setting maxmem to 59.5G and making sure that QEMU can start with the
|
||||
same options as the failing case above with pse36 cpu feature.
|
||||
"""
|
||||
@ -91,9 +84,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_ok_pentium_pae(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
Test is same as above but now with pae cpu feature turned on.
|
||||
Setting maxmem to 59.5G and making sure that QEMU can start fine
|
||||
with the same options as the case above.
|
||||
@ -111,9 +101,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_ok_pentium2(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
Pentium2 has 36 bits of addressing, so its same as pentium
|
||||
with pse36 ON.
|
||||
"""
|
||||
@ -130,9 +117,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_low_nonpse36(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
Pentium processor has 32 bits of addressing without pse36 or pae
|
||||
so it can access physical address up to 4 GiB. Setting maxmem to
|
||||
4 GiB should make QEMU fail to start with "phys-bits too low"
|
||||
@ -153,9 +137,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
# now lets test some 64-bit CPU cases.
|
||||
def test_phybits_low_tcg_q35_70_amd(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
For q35 7.1 machines and above, there is a HT window that starts at
|
||||
1024 GiB and ends at 1 TiB - 1. If the max GPA falls in this range,
|
||||
"above_4G" memory is adjusted to start at 1 TiB boundary for AMD cpus
|
||||
@ -182,9 +163,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_low_tcg_q35_71_amd(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
AMD_HT_START is defined to be at 1012 GiB. So for q35 machines
|
||||
version > 7.0 and AMD cpus, instead of 1024 GiB limit for 40 bit
|
||||
processor address space, it has to be 1012 GiB , that is 12 GiB
|
||||
@ -205,9 +183,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_ok_tcg_q35_70_amd(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
Same as q35-7.0 AMD case except that here we check that QEMU can
|
||||
successfully start when maxmem is < 988G.
|
||||
"""
|
||||
@ -224,9 +199,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_ok_tcg_q35_71_amd(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
Same as q35-7.1 AMD case except that here we check that QEMU can
|
||||
successfully start when maxmem is < 976G.
|
||||
"""
|
||||
@ -243,9 +215,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_ok_tcg_q35_71_intel(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
Same parameters as test_phybits_low_tcg_q35_71_amd() but use
|
||||
Intel cpu instead. QEMU should start fine in this case as
|
||||
"above_4G" memory starts at 4G.
|
||||
@ -264,9 +233,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_low_tcg_q35_71_amd_41bits(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
AMD processor with 41 bits. Max cpu hw address = 2 TiB.
|
||||
By setting maxram above 1012 GiB - 32 GiB - 4 GiB = 976 GiB, we can
|
||||
force "above_4G" memory to start at 1 TiB for q35-7.1 machines
|
||||
@ -291,9 +257,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_ok_tcg_q35_71_amd_41bits(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
AMD processor with 41 bits. Max cpu hw address = 2 TiB.
|
||||
Same as above but by setting maxram between 976 GiB and 992 Gib,
|
||||
QEMU should start fine.
|
||||
@ -312,9 +275,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_low_tcg_q35_intel_cxl(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
cxl memory window starts after memory device range. Here, we use 1 GiB
|
||||
of cxl window memory. 4G_mem end aligns at 4G. pci64_hole is 32 GiB and
|
||||
starts after the cxl memory window.
|
||||
@ -335,9 +295,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
|
||||
def test_phybits_ok_tcg_q35_intel_cxl(self):
|
||||
"""
|
||||
:avocado: tags=machine:q35
|
||||
:avocado: tags=arch:x86_64
|
||||
|
||||
Same as above but here we do not reserve any cxl memory window. Hence,
|
||||
with the exact same parameters as above, QEMU should start fine even
|
||||
with cxl enabled.
|
||||
@ -352,3 +309,6 @@ class MemAddrCheck(QemuSystemTest):
|
||||
time.sleep(self.DELAY_Q35_BOOT_SEQUENCE)
|
||||
self.vm.shutdown()
|
||||
self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
11
tests/avocado/pc_cpu_hotplug_props.py → tests/functional/test_pc_cpu_hotplug_props.py
Normal file → Executable file
11
tests/avocado/pc_cpu_hotplug_props.py → tests/functional/test_pc_cpu_hotplug_props.py
Normal file → Executable file
@ -1,3 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Ensure CPU die-id can be omitted on -device
|
||||
#
|
||||
@ -20,16 +21,16 @@
|
||||
# License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
from avocado_qemu import QemuSystemTest
|
||||
from qemu_test import QemuSystemTest
|
||||
|
||||
class OmittedCPUProps(QemuSystemTest):
|
||||
"""
|
||||
:avocado: tags=arch:x86_64
|
||||
:avocado: tags=cpu:qemu64
|
||||
"""
|
||||
|
||||
def test_no_die_id(self):
|
||||
self.vm.add_args('-nodefaults', '-S')
|
||||
self.vm.add_args('-smp', '1,sockets=2,cores=2,threads=2,maxcpus=8')
|
||||
self.vm.add_args('-device', 'qemu64-x86_64-cpu,socket-id=1,core-id=0,thread-id=0')
|
||||
self.vm.launch()
|
||||
self.assertEqual(len(self.vm.cmd('query-cpus-fast')), 2)
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
8
tests/avocado/virtio_version.py → tests/functional/test_virtio_version.py
Normal file → Executable file
8
tests/avocado/virtio_version.py → tests/functional/test_virtio_version.py
Normal file → Executable file
@ -1,3 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Check compatibility of virtio device types
|
||||
"""
|
||||
@ -12,7 +13,7 @@ import sys
|
||||
import os
|
||||
|
||||
from qemu.machine import QEMUMachine
|
||||
from avocado_qemu import QemuSystemTest
|
||||
from qemu_test import QemuSystemTest
|
||||
|
||||
# Virtio Device IDs:
|
||||
VIRTIO_NET = 1
|
||||
@ -60,8 +61,6 @@ class VirtioVersionCheck(QemuSystemTest):
|
||||
Check if virtio-version-specific device types result in the
|
||||
same device tree created by `disable-modern` and
|
||||
`disable-legacy`.
|
||||
|
||||
:avocado: tags=arch:x86_64
|
||||
"""
|
||||
|
||||
# just in case there are failures, show larger diff:
|
||||
@ -173,3 +172,6 @@ class VirtioVersionCheck(QemuSystemTest):
|
||||
self.check_modern_only('virtio-mouse-pci', VIRTIO_INPUT)
|
||||
self.check_modern_only('virtio-tablet-pci', VIRTIO_INPUT)
|
||||
self.check_modern_only('virtio-keyboard-pci', VIRTIO_INPUT)
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
Loading…
Reference in New Issue
Block a user