tests/functional: Convert some tests that download files via fetch_asset()
Now that we've got the Asset class with pre-caching, we can convert some Avocado tests that use fetch_asset() for downloading their required files. Message-ID: <20240830133841.142644-18-thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
34b17c0a65
commit
4c0a2df81c
10
MAINTAINERS
10
MAINTAINERS
@ -222,7 +222,7 @@ S: Maintained
|
||||
F: docs/system/target-avr.rst
|
||||
F: gdb-xml/avr-cpu.xml
|
||||
F: target/avr/
|
||||
F: tests/avocado/machine_avr6.py
|
||||
F: tests/functional/test_avr_mega2560.py
|
||||
|
||||
CRIS TCG CPUs
|
||||
M: Edgar E. Iglesias <edgar.iglesias@gmail.com>
|
||||
@ -266,7 +266,7 @@ M: Song Gao <gaosong@loongson.cn>
|
||||
S: Maintained
|
||||
F: target/loongarch/
|
||||
F: tests/tcg/loongarch64/
|
||||
F: tests/avocado/machine_loongarch.py
|
||||
F: tests/functional/test_loongarch64_virt.py
|
||||
|
||||
M68K TCG CPUs
|
||||
M: Laurent Vivier <laurent@vivier.eu>
|
||||
@ -1397,7 +1397,7 @@ F: hw/mips/loongson3_virt.c
|
||||
F: include/hw/intc/loongson_ipi_common.h
|
||||
F: include/hw/intc/loongson_ipi.h
|
||||
F: include/hw/intc/loongson_liointc.h
|
||||
F: tests/avocado/machine_mips_loongson3v.py
|
||||
F: tests/functional/test_mips64el_loongson3v.py
|
||||
|
||||
Boston
|
||||
M: Paul Burton <paulburton@kernel.org>
|
||||
@ -1423,7 +1423,7 @@ PowerPC Machines
|
||||
L: qemu-ppc@nongnu.org
|
||||
S: Orphan
|
||||
F: hw/ppc/ppc405*
|
||||
F: tests/avocado/ppc_405.py
|
||||
F: tests/functional/test_ppc_405.py
|
||||
|
||||
Bamboo
|
||||
L: qemu-ppc@nongnu.org
|
||||
@ -2495,7 +2495,7 @@ R: Sriram Yagnaraman <sriram.yagnaraman@ericsson.com>
|
||||
S: Maintained
|
||||
F: docs/system/devices/igb.rst
|
||||
F: hw/net/igb*
|
||||
F: tests/avocado/netdev-ethtool.py
|
||||
F: tests/functional/test_netdev_ethtool.py
|
||||
F: tests/qtest/igb-test.c
|
||||
F: tests/qtest/libqos/igb.c
|
||||
|
||||
|
0
tests/avocado/machine_arm_n8x0.py
Normal file → Executable file
0
tests/avocado/machine_arm_n8x0.py
Normal file → Executable file
@ -1,39 +0,0 @@
|
||||
# Functional tests for the Generic Loongson-3 Platform.
|
||||
#
|
||||
# Copyright (c) 2021 Jiaxun Yang <jiaxun.yang@flygoat.com>
|
||||
#
|
||||
# This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
# See the COPYING file in the top-level directory.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
from avocado import skipUnless
|
||||
from avocado_qemu import QemuSystemTest
|
||||
from avocado_qemu import wait_for_console_pattern
|
||||
|
||||
class MipsLoongson3v(QemuSystemTest):
|
||||
timeout = 60
|
||||
|
||||
@skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
|
||||
def test_pmon_serial_console(self):
|
||||
"""
|
||||
:avocado: tags=arch:mips64el
|
||||
:avocado: tags=endian:little
|
||||
:avocado: tags=machine:loongson3-virt
|
||||
:avocado: tags=cpu:Loongson-3A1000
|
||||
:avocado: tags=device:liointc
|
||||
:avocado: tags=device:goldfish_rtc
|
||||
"""
|
||||
|
||||
pmon_hash = '7c8b45dd81ccfc55ff28f5aa267a41c3'
|
||||
pmon_path = self.fetch_asset('https://github.com/loongson-community/pmon/'
|
||||
'releases/download/20210112/pmon-3avirt.bin',
|
||||
asset_hash=pmon_hash, algorithm='md5')
|
||||
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-bios', pmon_path)
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'CPU GODSON3 BogoMIPS:')
|
@ -11,6 +11,7 @@ endif
|
||||
|
||||
# Timeouts for individual tests that can be slow e.g. with debugging enabled
|
||||
test_timeouts = {
|
||||
'netdev_ethtool' : 180,
|
||||
}
|
||||
|
||||
tests_generic_system = [
|
||||
@ -19,16 +20,32 @@ tests_generic_system = [
|
||||
'version',
|
||||
]
|
||||
|
||||
tests_ppc_quick = [
|
||||
'ppc_74xx',
|
||||
]
|
||||
|
||||
tests_generic_linuxuser = [
|
||||
]
|
||||
|
||||
tests_generic_bsduser = [
|
||||
]
|
||||
|
||||
tests_avr_system_thorough = [
|
||||
'avr_mega2560',
|
||||
]
|
||||
|
||||
tests_loongarch64_system_thorough = [
|
||||
'loongarch64_virt',
|
||||
]
|
||||
|
||||
tests_mips64el_system_thorough = [
|
||||
'mips64el_loongson3v',
|
||||
]
|
||||
|
||||
tests_ppc_system_quick = [
|
||||
'ppc_74xx',
|
||||
]
|
||||
|
||||
tests_ppc_system_thorough = [
|
||||
'ppc_405',
|
||||
]
|
||||
|
||||
tests_x86_64_system_quick = [
|
||||
'cpu_queries',
|
||||
'mem_addr_space',
|
||||
@ -37,6 +54,7 @@ tests_x86_64_system_quick = [
|
||||
]
|
||||
|
||||
tests_x86_64_system_thorough = [
|
||||
'netdev_ethtool',
|
||||
]
|
||||
|
||||
precache_all = []
|
||||
|
22
tests/avocado/machine_avr6.py → tests/functional/test_avr_mega2560.py
Normal file → Executable file
22
tests/avocado/machine_avr6.py → tests/functional/test_avr_mega2560.py
Normal file → Executable file
@ -1,3 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# QEMU AVR integration tests
|
||||
#
|
||||
@ -19,26 +20,24 @@
|
||||
|
||||
import time
|
||||
|
||||
from avocado_qemu import QemuSystemTest
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
|
||||
class AVR6Machine(QemuSystemTest):
|
||||
timeout = 5
|
||||
|
||||
ASSET_ROM = Asset(('https://github.com/seharris/qemu-avr-tests'
|
||||
'/raw/36c3e67b8755dcf/free-rtos/Demo'
|
||||
'/AVR_ATMega2560_GCC/demo.elf'),
|
||||
'ee4833bd65fc69e84a79ed1c608affddbd499a60e63acf87d9113618401904e4')
|
||||
|
||||
def test_freertos(self):
|
||||
"""
|
||||
:avocado: tags=arch:avr
|
||||
:avocado: tags=machine:arduino-mega-2560-v3
|
||||
"""
|
||||
"""
|
||||
https://github.com/seharris/qemu-avr-tests/raw/master/free-rtos/Demo/AVR_ATMega2560_GCC/demo.elf
|
||||
constantly prints out 'ABCDEFGHIJKLMNOPQRSTUVWXABCDEFGHIJKLMNOPQRSTUVWX'
|
||||
"""
|
||||
rom_url = ('https://github.com/seharris/qemu-avr-tests'
|
||||
'/raw/36c3e67b8755dcf/free-rtos/Demo'
|
||||
'/AVR_ATMega2560_GCC/demo.elf')
|
||||
rom_hash = '7eb521f511ca8f2622e0a3c5e8dd686efbb911d4'
|
||||
rom_path = self.fetch_asset(rom_url, asset_hash=rom_hash)
|
||||
rom_path = self.ASSET_ROM.fetch()
|
||||
|
||||
self.set_machine('arduino-mega-2560-v3')
|
||||
self.vm.add_args('-bios', rom_path)
|
||||
self.vm.add_args('-nographic')
|
||||
self.vm.launch()
|
||||
@ -48,3 +47,6 @@ class AVR6Machine(QemuSystemTest):
|
||||
|
||||
self.assertIn('ABCDEFGHIJKLMNOPQRSTUVWXABCDEFGHIJKLMNOPQRSTUVWX',
|
||||
self.vm.get_log())
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
46
tests/avocado/machine_loongarch.py → tests/functional/test_loongarch64_virt.py
Normal file → Executable file
46
tests/avocado/machine_loongarch.py → tests/functional/test_loongarch64_virt.py
Normal file → Executable file
@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#
|
||||
# LoongArch virt test.
|
||||
@ -5,15 +7,28 @@
|
||||
# Copyright (c) 2023 Loongson Technology Corporation Limited
|
||||
#
|
||||
|
||||
from avocado_qemu import QemuSystemTest
|
||||
from avocado_qemu import exec_command_and_wait_for_pattern
|
||||
from avocado_qemu import wait_for_console_pattern
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import exec_command_and_wait_for_pattern
|
||||
from qemu_test import wait_for_console_pattern
|
||||
|
||||
class LoongArchMachine(QemuSystemTest):
|
||||
KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '
|
||||
|
||||
timeout = 120
|
||||
|
||||
ASSET_KERNEL = Asset(
|
||||
('https://github.com/yangxiaojuan-loongson/qemu-binary/'
|
||||
'releases/download/2024-05-30/vmlinuz.efi'),
|
||||
'08b88a45f48a5fd92260bae895be4e5175be2397481a6f7821b9f39b2965b79e')
|
||||
ASSET_INITRD = Asset(
|
||||
('https://github.com/yangxiaojuan-loongson/qemu-binary/'
|
||||
'releases/download/2024-05-30/ramdisk'),
|
||||
'03d6fb6f8ee64ecac961120a0bdacf741f17b3bee2141f17fa01908c8baf176a')
|
||||
ASSET_BIOS = Asset(
|
||||
('https://github.com/yangxiaojuan-loongson/qemu-binary/'
|
||||
'releases/download/2024-05-30/QEMU_EFI.fd'),
|
||||
'937c1e7815e2340150c194a9f8f0474259038a3d7b8845ed62cc08163c46bea1')
|
||||
|
||||
def wait_for_console_pattern(self, success_message, vm=None):
|
||||
wait_for_console_pattern(self, success_message,
|
||||
failure_message='Kernel panic - not syncing',
|
||||
@ -21,25 +36,11 @@ class LoongArchMachine(QemuSystemTest):
|
||||
|
||||
def test_loongarch64_devices(self):
|
||||
|
||||
"""
|
||||
:avocado: tags=arch:loongarch64
|
||||
:avocado: tags=machine:virt
|
||||
"""
|
||||
self.set_machine('virt')
|
||||
|
||||
kernel_url = ('https://github.com/yangxiaojuan-loongson/qemu-binary/'
|
||||
'releases/download/2024-05-30/vmlinuz.efi')
|
||||
kernel_hash = '951b485b16e3788b6db03a3e1793c067009e31a2'
|
||||
kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
|
||||
|
||||
initrd_url = ('https://github.com/yangxiaojuan-loongson/qemu-binary/'
|
||||
'releases/download/2024-05-30/ramdisk')
|
||||
initrd_hash = 'c67658d9b2a447ce7db2f73ba3d373c9b2b90ab2'
|
||||
initrd_path = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
|
||||
|
||||
bios_url = ('https://github.com/yangxiaojuan-loongson/qemu-binary/'
|
||||
'releases/download/2024-05-30/QEMU_EFI.fd')
|
||||
bios_hash = ('f4d0966b5117d4cd82327c050dd668741046be69')
|
||||
bios_path = self.fetch_asset(bios_url, asset_hash=bios_hash)
|
||||
kernel_path = self.ASSET_KERNEL.fetch()
|
||||
initrd_path = self.ASSET_INITRD.fetch()
|
||||
bios_path = self.ASSET_BIOS.fetch()
|
||||
|
||||
self.vm.set_console()
|
||||
kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
|
||||
@ -56,3 +57,6 @@ class LoongArchMachine(QemuSystemTest):
|
||||
self.wait_for_console_pattern('Run /sbin/init as init process')
|
||||
exec_command_and_wait_for_pattern(self, 'cat /proc/cpuinfo',
|
||||
'processor : 3')
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
39
tests/functional/test_mips64el_loongson3v.py
Executable file
39
tests/functional/test_mips64el_loongson3v.py
Executable file
@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Functional tests for the Generic Loongson-3 Platform.
|
||||
#
|
||||
# Copyright (c) 2021 Jiaxun Yang <jiaxun.yang@flygoat.com>
|
||||
#
|
||||
# This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
# See the COPYING file in the top-level directory.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
from unittest import skipUnless
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import wait_for_console_pattern
|
||||
|
||||
class MipsLoongson3v(QemuSystemTest):
|
||||
timeout = 60
|
||||
|
||||
ASSET_PMON = Asset(
|
||||
('https://github.com/loongson-community/pmon/'
|
||||
'releases/download/20210112/pmon-3avirt.bin'),
|
||||
'fcdf6bb2cb7885a4a62f31fcb0d5e368bac7b6cea28f40c6dfa678af22fea20a')
|
||||
|
||||
@skipUnless(os.getenv('QEMU_TEST_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
|
||||
def test_pmon_serial_console(self):
|
||||
self.set_machine('loongson3-virt')
|
||||
|
||||
pmon_path = self.ASSET_PMON.fetch()
|
||||
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-bios', pmon_path)
|
||||
self.vm.launch()
|
||||
wait_for_console_pattern(self, 'CPU GODSON3 BogoMIPS:')
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
51
tests/avocado/netdev-ethtool.py → tests/functional/test_netdev_ethtool.py
Normal file → Executable file
51
tests/avocado/netdev-ethtool.py → tests/functional/test_netdev_ethtool.py
Normal file → Executable file
@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# ethtool tests for emulated network devices
|
||||
#
|
||||
# This test leverages ethtool's --test sequence to validate network
|
||||
@ -5,39 +7,33 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-late
|
||||
|
||||
from avocado import skip
|
||||
from avocado_qemu import QemuSystemTest
|
||||
from avocado_qemu import wait_for_console_pattern
|
||||
from unittest import skip
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import wait_for_console_pattern
|
||||
|
||||
class NetDevEthtool(QemuSystemTest):
|
||||
"""
|
||||
:avocado: tags=arch:x86_64
|
||||
:avocado: tags=machine:q35
|
||||
"""
|
||||
|
||||
# Runs in about 17s under KVM, 19s under TCG, 25s under GCOV
|
||||
timeout = 45
|
||||
|
||||
# Fetch assets from the netdev-ethtool subdir of my shared test
|
||||
# images directory on fileserver.linaro.org.
|
||||
def get_asset(self, name, sha1):
|
||||
base_url = ('https://fileserver.linaro.org/s/'
|
||||
'kE4nCFLdQcoBF9t/download?'
|
||||
'path=%2Fnetdev-ethtool&files=' )
|
||||
url = base_url + name
|
||||
# use explicit name rather than failing to neatly parse the
|
||||
# URL into a unique one
|
||||
return self.fetch_asset(name=name, locations=(url), asset_hash=sha1)
|
||||
ASSET_BASEURL = ('https://fileserver.linaro.org/s/kE4nCFLdQcoBF9t/'
|
||||
'download?path=%2Fnetdev-ethtool&files=')
|
||||
ASSET_BZIMAGE = Asset(
|
||||
ASSET_BASEURL + "bzImage",
|
||||
"ed62ee06ea620b1035747f3f66a5e9fc5d3096b29f75562ada888b04cd1c4baf")
|
||||
ASSET_ROOTFS = Asset(
|
||||
ASSET_BASEURL + "rootfs.squashfs",
|
||||
"8f0207e3c4d40832ae73c1a927e42ca30ccb1e71f047acb6ddb161ba422934e6")
|
||||
|
||||
def common_test_code(self, netdev, extra_args=None):
|
||||
self.set_machine('q35')
|
||||
|
||||
# This custom kernel has drivers for all the supported network
|
||||
# devices we can emulate in QEMU
|
||||
kernel = self.get_asset("bzImage",
|
||||
"33469d7802732d5815226166581442395cb289e2")
|
||||
|
||||
rootfs = self.get_asset("rootfs.squashfs",
|
||||
"9793cea7021414ae844bda51f558bd6565b50cdc")
|
||||
kernel = self.ASSET_BZIMAGE.fetch()
|
||||
rootfs = self.ASSET_ROOTFS.fetch()
|
||||
|
||||
append = 'printk.time=0 console=ttyS0 '
|
||||
append += 'root=/dev/sr0 rootfstype=squashfs '
|
||||
@ -68,15 +64,9 @@ class NetDevEthtool(QemuSystemTest):
|
||||
self.vm.kill()
|
||||
|
||||
def test_igb(self):
|
||||
"""
|
||||
:avocado: tags=device:igb
|
||||
"""
|
||||
self.common_test_code("igb")
|
||||
|
||||
def test_igb_nomsi(self):
|
||||
"""
|
||||
:avocado: tags=device:igb
|
||||
"""
|
||||
self.common_test_code("igb", "pci=nomsi")
|
||||
|
||||
# It seems the other popular cards we model in QEMU currently fail
|
||||
@ -88,14 +78,11 @@ class NetDevEthtool(QemuSystemTest):
|
||||
|
||||
@skip("Incomplete reg 0x00178 support")
|
||||
def test_e1000(self):
|
||||
"""
|
||||
:avocado: tags=device:e1000
|
||||
"""
|
||||
self.common_test_code("e1000")
|
||||
|
||||
@skip("Incomplete reg 0x00178 support")
|
||||
def test_i82550(self):
|
||||
"""
|
||||
:avocado: tags=device:i82550
|
||||
"""
|
||||
self.common_test_code("i82550")
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
29
tests/avocado/ppc_405.py → tests/functional/test_ppc_405.py
Normal file → Executable file
29
tests/avocado/ppc_405.py → tests/functional/test_ppc_405.py
Normal file → Executable file
@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Test that the U-Boot firmware boots on ppc 405 machines and check the console
|
||||
#
|
||||
# Copyright (c) 2021 Red Hat, Inc.
|
||||
@ -5,20 +7,21 @@
|
||||
# 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.utils import archive
|
||||
from avocado_qemu import QemuSystemTest
|
||||
from avocado_qemu import wait_for_console_pattern
|
||||
from avocado_qemu import exec_command_and_wait_for_pattern
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import wait_for_console_pattern
|
||||
from qemu_test import exec_command_and_wait_for_pattern
|
||||
|
||||
class Ppc405Machine(QemuSystemTest):
|
||||
|
||||
timeout = 90
|
||||
|
||||
ASSET_UBOOT = Asset(
|
||||
('https://gitlab.com/huth/u-boot/-/raw/taihu-2021-10-09/'
|
||||
'u-boot-taihu.bin'),
|
||||
'a076bb6cdeaafa406330e51e074b66d8878d9036d67d4caa0137be03ee4c112c')
|
||||
|
||||
def do_test_ppc405(self):
|
||||
uboot_url = ('https://gitlab.com/huth/u-boot/-/raw/'
|
||||
'taihu-2021-10-09/u-boot-taihu.bin')
|
||||
uboot_hash = ('3208940e908a5edc7c03eab072c60f0dcfadc2ab');
|
||||
file_path = self.fetch_asset(uboot_url, asset_hash=uboot_hash)
|
||||
file_path = self.ASSET_UBOOT.fetch()
|
||||
self.vm.set_console(console_index=1)
|
||||
self.vm.add_args('-bios', file_path)
|
||||
self.vm.launch()
|
||||
@ -26,11 +29,9 @@ class Ppc405Machine(QemuSystemTest):
|
||||
exec_command_and_wait_for_pattern(self, 'reset', 'AMCC PowerPC 405EP')
|
||||
|
||||
def test_ppc_ref405ep(self):
|
||||
"""
|
||||
:avocado: tags=arch:ppc
|
||||
:avocado: tags=machine:ref405ep
|
||||
:avocado: tags=cpu:405ep
|
||||
:avocado: tags=accel:tcg
|
||||
"""
|
||||
self.require_accelerator("tcg")
|
||||
self.set_machine('ref405ep')
|
||||
self.do_test_ppc405()
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
Loading…
Reference in New Issue
Block a user