* [PULL 0/7] Functional tests and Gitlab-CI patches
@ 2025-02-11 12:31 Thomas Huth
2025-02-11 12:31 ` [PULL 1/7] tests/functional: Convert the aarch64 xen test to the functional framework Thomas Huth
` (7 more replies)
0 siblings, 8 replies; 10+ messages in thread
From: Thomas Huth @ 2025-02-11 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi
The following changes since commit 54e91d1523b412b4cff7cb36c898fa9dc133e886:
Merge tag 'pull-qapi-2025-02-10-v2' of https://repo.or.cz/qemu/armbru into staging (2025-02-10 10:47:31 -0500)
are available in the Git repository at:
https://gitlab.com/thuth/qemu.git tags/pull-request-2025-02-11
for you to fetch changes up to 66a1b4991c32e370a4e0ddabf496aa1563aff286:
gitlab-ci.d/cirrus: Update the FreeBSD job to v14.2 (2025-02-11 13:27:07 +0100)
----------------------------------------------------------------
* Convert more avocado tests to the functional framework
* Add a test for the sam460ex machine
* Fix the broken FreeBSD CI job by updating it to the latest version
----------------------------------------------------------------
Cédric Le Goater (1):
tests/functional: Add a ppc sam460ex test
Daniel P. Berrangé (2):
gitlab: don't fail cirrus CI jobs when credits are exhausted
gitlab: use new(ish) cirrus-vars command for creating config
Thomas Huth (4):
tests/functional: Convert the aarch64 xen test to the functional framework
tests/functional/test_aarch64_virt: Fix vulkan test without egl-headless
tests/functional: Convert the hotplug_blk avocado test
gitlab-ci.d/cirrus: Update the FreeBSD job to v14.2
MAINTAINERS | 4 +-
.gitlab-ci.d/cirrus.yml | 27 ++------
.gitlab-ci.d/cirrus/build.yml | 2 +-
tests/avocado/boot_xen.py | 95 -----------------------------
tests/avocado/hotplug_blk.py | 69 ---------------------
tests/functional/meson.build | 3 +
tests/functional/test_aarch64_virt.py | 2 +
tests/functional/test_aarch64_xen.py | 90 +++++++++++++++++++++++++++
tests/functional/test_ppc_sam460ex.py | 38 ++++++++++++
tests/functional/test_x86_64_hotplug_blk.py | 85 ++++++++++++++++++++++++++
10 files changed, 228 insertions(+), 187 deletions(-)
delete mode 100644 tests/avocado/boot_xen.py
delete mode 100644 tests/avocado/hotplug_blk.py
create mode 100755 tests/functional/test_aarch64_xen.py
create mode 100644 tests/functional/test_ppc_sam460ex.py
create mode 100755 tests/functional/test_x86_64_hotplug_blk.py
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PULL 1/7] tests/functional: Convert the aarch64 xen test to the functional framework
2025-02-11 12:31 [PULL 0/7] Functional tests and Gitlab-CI patches Thomas Huth
@ 2025-02-11 12:31 ` Thomas Huth
2025-02-11 12:31 ` [PULL 2/7] tests/functional/test_aarch64_virt: Fix vulkan test without egl-headless Thomas Huth
` (6 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Huth @ 2025-02-11 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi, Alex Bennée
This test just needs the adaption for the asset handling, then
we can move it to the functional framework.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250207144409.220006-1-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
MAINTAINERS | 2 +-
tests/avocado/boot_xen.py | 95 ----------------------------
tests/functional/meson.build | 1 +
tests/functional/test_aarch64_xen.py | 90 ++++++++++++++++++++++++++
4 files changed, 92 insertions(+), 96 deletions(-)
delete mode 100644 tests/avocado/boot_xen.py
create mode 100755 tests/functional/test_aarch64_xen.py
diff --git a/MAINTAINERS b/MAINTAINERS
index fefabe0cee..ebb415bc40 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2539,7 +2539,7 @@ M: Alex Bennée <alex.bennee@linaro.org>
S: Maintained
F: hw/core/guest-loader.c
F: docs/system/guest-loader.rst
-F: tests/avocado/boot_xen.py
+F: tests/functional/test_aarch64_xen.py
Intel Hexadecimal Object File Loader
M: Su Hang <suhang16@mails.ucas.ac.cn>
diff --git a/tests/avocado/boot_xen.py b/tests/avocado/boot_xen.py
deleted file mode 100644
index 490a127a3e..0000000000
--- a/tests/avocado/boot_xen.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Functional test that boots a Xen hypervisor with a domU kernel and
-# checks the console output is vaguely sane .
-#
-# Copyright (c) 2020 Linaro
-#
-# Author:
-# Alex Bennée <alex.bennee@linaro.org>
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-#
-# This work is licensed under the terms of the GNU GPL, version 2 or
-# later. See the COPYING file in the top-level directory.
-
-import os
-
-from avocado_qemu import wait_for_console_pattern
-from boot_linux_console import LinuxKernelTest
-
-
-class BootXen(LinuxKernelTest):
- """
- Boots a Xen hypervisor with a Linux DomU kernel.
-
- :avocado: tags=arch:aarch64
- :avocado: tags=accel:tcg
- :avocado: tags=cpu:cortex-a57
- :avocado: tags=machine:virt
- """
-
- timeout = 90
- XEN_COMMON_COMMAND_LINE = 'dom0_mem=128M loglvl=all guest_loglvl=all'
-
- def setUp(self):
- super(BootXen, self).setUp()
-
- # Using my own built kernel - which works
- kernel_url = ('https://fileserver.linaro.org/'
- 's/JSsewXGZ6mqxPr5/download?path=%2F&files='
- 'linux-5.9.9-arm64-ajb')
- kernel_sha1 = '4f92bc4b9f88d5ab792fa7a43a68555d344e1b83'
- self.kernel_path = self.fetch_asset(kernel_url,
- asset_hash=kernel_sha1)
-
- def launch_xen(self, xen_path):
- """
- Launch Xen with a dom0 guest kernel
- """
- self.log.info("launch with xen_path: %s", xen_path)
-
- self.vm.set_console()
-
- self.vm.add_args('-machine', 'virtualization=on',
- '-m', '768',
- '-kernel', xen_path,
- '-append', self.XEN_COMMON_COMMAND_LINE,
- '-device',
- 'guest-loader,addr=0x47000000,kernel=%s,bootargs=console=hvc0'
- % (self.kernel_path))
-
- self.vm.launch()
-
- console_pattern = 'VFS: Cannot open root device'
- wait_for_console_pattern(self, console_pattern, "Panic on CPU 0:")
-
- def test_arm64_xen_411_and_dom0(self):
- # archive of file from https://deb.debian.org/debian/pool/main/x/xen/
- xen_url = ('https://fileserver.linaro.org/s/JSsewXGZ6mqxPr5/'
- 'download?path=%2F&files='
- 'xen-hypervisor-4.11-arm64_4.11.4%2B37-g3263f257ca-1_arm64.deb')
- xen_sha1 = '034e634d4416adbad1212d59b62bccdcda63e62a'
- xen_deb = self.fetch_asset(xen_url, asset_hash=xen_sha1)
- xen_path = self.extract_from_deb(xen_deb, "/boot/xen-4.11-arm64")
-
- self.launch_xen(xen_path)
-
- def test_arm64_xen_414_and_dom0(self):
- # archive of file from https://deb.debian.org/debian/pool/main/x/xen/
- xen_url = ('https://fileserver.linaro.org/s/JSsewXGZ6mqxPr5/'
- 'download?path=%2F&files='
- 'xen-hypervisor-4.14-arm64_4.14.0%2B80-gd101b417b7-1_arm64.deb')
- xen_sha1 = 'b9d209dd689ed2b393e625303a225badefec1160'
- xen_deb = self.fetch_asset(xen_url, asset_hash=xen_sha1)
- xen_path = self.extract_from_deb(xen_deb, "/boot/xen-4.14-arm64")
-
- self.launch_xen(xen_path)
-
- def test_arm64_xen_415_and_dom0(self):
- xen_url = ('https://fileserver.linaro.org/'
- 's/JSsewXGZ6mqxPr5/download'
- '?path=%2F&files=xen-upstream-4.15-unstable.deb')
- xen_sha1 = 'fc191172b85cf355abb95d275a24cc0f6d6579d8'
- xen_deb = self.fetch_asset(xen_url, asset_hash=xen_sha1)
- xen_path = self.extract_from_deb(xen_deb, "/boot/xen-4.15-unstable")
-
- self.launch_xen(xen_path)
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index 3f085bfbca..e595508bfa 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -77,6 +77,7 @@ tests_aarch64_system_thorough = [
'aarch64_tcg_plugins',
'aarch64_tuxrun',
'aarch64_virt',
+ 'aarch64_xen',
'aarch64_xlnx_versal',
'multiprocess',
]
diff --git a/tests/functional/test_aarch64_xen.py b/tests/functional/test_aarch64_xen.py
new file mode 100755
index 0000000000..339904221b
--- /dev/null
+++ b/tests/functional/test_aarch64_xen.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+#
+# Functional test that boots a Xen hypervisor with a domU kernel and
+# checks the console output is vaguely sane .
+#
+# Copyright (c) 2020 Linaro
+#
+# Author:
+# Alex Bennée <alex.bennee@linaro.org>
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# 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 qemu_test import Asset, LinuxKernelTest, wait_for_console_pattern
+
+
+class BootXen(LinuxKernelTest):
+ """
+ Boots a Xen hypervisor with a Linux DomU kernel.
+ """
+
+ timeout = 90
+ XEN_COMMON_COMMAND_LINE = 'dom0_mem=128M loglvl=all guest_loglvl=all'
+
+ ASSET_KERNEL = Asset(
+ ('https://fileserver.linaro.org/s/JSsewXGZ6mqxPr5/'
+ 'download?path=%2F&files=linux-5.9.9-arm64-ajb'),
+ '00366fa51ea957c19462d2e2aefd480bef80ce727120e714ae48e0c88f261edb')
+
+ def launch_xen(self, xen_path):
+ """
+ Launch Xen with a dom0 guest kernel
+ """
+ self.set_machine('virt')
+ self.cpu = "cortex-a57"
+ self.kernel_path = self.ASSET_KERNEL.fetch()
+ self.log.info("launch with xen_path: %s", xen_path)
+
+ self.vm.set_console()
+
+ self.vm.add_args('-machine', 'virtualization=on',
+ '-m', '768',
+ '-kernel', xen_path,
+ '-append', self.XEN_COMMON_COMMAND_LINE,
+ '-device',
+ 'guest-loader,addr=0x47000000,kernel=%s,bootargs=console=hvc0'
+ % (self.kernel_path))
+
+ self.vm.launch()
+
+ console_pattern = 'VFS: Cannot open root device'
+ wait_for_console_pattern(self, console_pattern, "Panic on CPU 0:")
+
+ ASSET_XEN_4_11 = Asset(
+ ('https://fileserver.linaro.org/s/JSsewXGZ6mqxPr5/download?path=%2F&'
+ 'files=xen-hypervisor-4.11-arm64_4.11.4%2B37-g3263f257ca-1_arm64.deb'),
+ 'b745c2631342f9fcc0147ddc364edb62c20ecfebd430e5a3546e7d7c6891c0bc')
+
+ def test_arm64_xen_411_and_dom0(self):
+ # archive of file from https://deb.debian.org/debian/pool/main/x/xen/
+ xen_path = self.archive_extract(self.ASSET_XEN_4_11, format='deb',
+ member="boot/xen-4.11-arm64")
+ self.launch_xen(xen_path)
+
+ ASSET_XEN_4_14 = Asset(
+ ('https://fileserver.linaro.org/s/JSsewXGZ6mqxPr5/download?path=%2F&'
+ 'files=xen-hypervisor-4.14-arm64_4.14.0%2B80-gd101b417b7-1_arm64.deb'),
+ 'e930a3293248edabd367d5b4b3b6448b9c99c057096ea8b47228a7870661d5cb')
+
+ def test_arm64_xen_414_and_dom0(self):
+ # archive of file from https://deb.debian.org/debian/pool/main/x/xen/
+ xen_path = self.archive_extract(self.ASSET_XEN_4_14, format='deb',
+ member="boot/xen-4.14-arm64")
+ self.launch_xen(xen_path)
+
+ ASSET_XEN_4_15 = Asset(
+ ('https://fileserver.linaro.org/s/JSsewXGZ6mqxPr5/download?path=%2F&'
+ 'files=xen-upstream-4.15-unstable.deb'),
+ '2a9a8af8acf0231844657cc28baab95bd918b0ee2d493ee4ee6f8846e1358bc9')
+
+ def test_arm64_xen_415_and_dom0(self):
+ xen_path = self.archive_extract(self.ASSET_XEN_4_15, format='deb',
+ member="boot/xen-4.15-unstable")
+ self.launch_xen(xen_path)
+
+
+if __name__ == '__main__':
+ LinuxKernelTest.main()
--
2.48.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL 2/7] tests/functional/test_aarch64_virt: Fix vulkan test without egl-headless
2025-02-11 12:31 [PULL 0/7] Functional tests and Gitlab-CI patches Thomas Huth
2025-02-11 12:31 ` [PULL 1/7] tests/functional: Convert the aarch64 xen test to the functional framework Thomas Huth
@ 2025-02-11 12:31 ` Thomas Huth
2025-02-11 12:31 ` [PULL 3/7] tests/functional: Convert the hotplug_blk avocado test Thomas Huth
` (5 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Huth @ 2025-02-11 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi, Cornelia Huck, Alex Bennée
The vulkan test currently fails if the egl-headless device is not
available. Let's add a proper check to skip the test in this case.
Fixes: 3d30f882ce ("tests/functional: extend test_aarch64_virt with vulkan test")
Reported-by: Cornelia Huck <cohuck@redhat.com>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Cornelia Huck <cohuck@redhat.com>
Message-ID: <20250205141140.97437-1-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/functional/test_aarch64_virt.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/functional/test_aarch64_virt.py b/tests/functional/test_aarch64_virt.py
index 07c1c13638..95f5ce8b4c 100755
--- a/tests/functional/test_aarch64_virt.py
+++ b/tests/functional/test_aarch64_virt.py
@@ -189,6 +189,8 @@ def test_aarch64_virt_with_gpu(self):
self.skipTest("No venus support for virtio-gpu")
elif "egl: no drm render node available" in excp.output:
self.skipTest("Can't access host DRM render node")
+ elif "'type' does not accept value 'egl-headless'" in excp.output:
+ self.skipTest("egl-headless support is not available")
else:
self.log.info(f"unhandled launch failure: {excp.output}")
raise excp
--
2.48.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL 3/7] tests/functional: Convert the hotplug_blk avocado test
2025-02-11 12:31 [PULL 0/7] Functional tests and Gitlab-CI patches Thomas Huth
2025-02-11 12:31 ` [PULL 1/7] tests/functional: Convert the aarch64 xen test to the functional framework Thomas Huth
2025-02-11 12:31 ` [PULL 2/7] tests/functional/test_aarch64_virt: Fix vulkan test without egl-headless Thomas Huth
@ 2025-02-11 12:31 ` Thomas Huth
2025-02-11 12:31 ` [PULL 4/7] tests/functional: Add a ppc sam460ex test Thomas Huth
` (4 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Huth @ 2025-02-11 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi, Daniel P. Berrangé
By using the serial console instead of ssh for executing commands
in the guest, we can convert this test to the functional framework.
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20250130192712.19542-1-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
MAINTAINERS | 1 +
tests/avocado/hotplug_blk.py | 69 -----------------
tests/functional/meson.build | 1 +
tests/functional/test_x86_64_hotplug_blk.py | 85 +++++++++++++++++++++
4 files changed, 87 insertions(+), 69 deletions(-)
delete mode 100644 tests/avocado/hotplug_blk.py
create mode 100755 tests/functional/test_x86_64_hotplug_blk.py
diff --git a/MAINTAINERS b/MAINTAINERS
index ebb415bc40..a593241800 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2275,6 +2275,7 @@ F: hw/block/virtio-blk.c
F: hw/block/dataplane/*
F: include/hw/virtio/virtio-blk-common.h
F: tests/qtest/virtio-blk-test.c
+F: tests/functional/test_x86_64_hotplug_blk.py
T: git https://github.com/stefanha/qemu.git block
virtio-ccw
diff --git a/tests/avocado/hotplug_blk.py b/tests/avocado/hotplug_blk.py
deleted file mode 100644
index b36bca02ec..0000000000
--- a/tests/avocado/hotplug_blk.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Functional test that hotplugs a virtio blk disk and checks it on a Linux
-# guest
-#
-# Copyright (c) 2021 Red Hat, Inc.
-# Copyright (c) Yandex
-#
-# This work is licensed under the terms of the GNU GPL, version 2 or
-# later. See the COPYING file in the top-level directory.
-
-import time
-
-from avocado_qemu.linuxtest import LinuxTest
-
-
-class HotPlug(LinuxTest):
- def blockdev_add(self) -> None:
- self.vm.cmd('blockdev-add', **{
- 'driver': 'null-co',
- 'size': 1073741824,
- 'node-name': 'disk'
- })
-
- def assert_vda(self) -> None:
- self.ssh_command('test -e /sys/block/vda')
-
- def assert_no_vda(self) -> None:
- with self.assertRaises(AssertionError):
- self.assert_vda()
-
- def plug(self) -> None:
- args = {
- 'driver': 'virtio-blk-pci',
- 'drive': 'disk',
- 'id': 'virtio-disk0',
- 'bus': 'pci.1',
- 'addr': '1',
- }
-
- self.assert_no_vda()
- self.vm.cmd('device_add', args)
- try:
- self.assert_vda()
- except AssertionError:
- time.sleep(1)
- self.assert_vda()
-
- def unplug(self) -> None:
- self.vm.cmd('device_del', id='virtio-disk0')
-
- self.vm.event_wait('DEVICE_DELETED', 1.0,
- match={'data': {'device': 'virtio-disk0'}})
-
- self.assert_no_vda()
-
- def test(self) -> None:
- """
- :avocado: tags=arch:x86_64
- :avocado: tags=machine:q35
- :avocado: tags=accel:kvm
- """
- self.require_accelerator('kvm')
- self.vm.add_args('-accel', 'kvm')
- self.vm.add_args('-device', 'pcie-pci-bridge,id=pci.1,bus=pcie.0')
-
- self.launch_and_wait()
- self.blockdev_add()
-
- self.plug()
- self.unplug()
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index e595508bfa..70646d3457 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -285,6 +285,7 @@ tests_x86_64_system_thorough = [
'multiprocess',
'netdev_ethtool',
'virtio_gpu',
+ 'x86_64_hotplug_blk',
'x86_64_hotplug_cpu',
'x86_64_kvm_xen',
'x86_64_tuxrun',
diff --git a/tests/functional/test_x86_64_hotplug_blk.py b/tests/functional/test_x86_64_hotplug_blk.py
new file mode 100755
index 0000000000..7ddbfefc21
--- /dev/null
+++ b/tests/functional/test_x86_64_hotplug_blk.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python3
+#
+# Functional test that hotplugs a virtio blk disk and checks it on a Linux
+# guest
+#
+# Copyright (c) 2021 Red Hat, Inc.
+# Copyright (c) Yandex
+#
+# 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 qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pattern
+
+
+class HotPlugBlk(LinuxKernelTest):
+
+ ASSET_KERNEL = Asset(
+ ('https://archives.fedoraproject.org/pub/archive/fedora/linux/releases'
+ '/31/Server/x86_64/os/images/pxeboot/vmlinuz'),
+ 'd4738d03dbbe083ca610d0821d0a8f1488bebbdccef54ce33e3adb35fda00129')
+
+ ASSET_INITRD = Asset(
+ ('https://archives.fedoraproject.org/pub/archive/fedora/linux/releases'
+ '/31/Server/x86_64/os/images/pxeboot/initrd.img'),
+ '277cd6c7adf77c7e63d73bbb2cded8ef9e2d3a2f100000e92ff1f8396513cd8b')
+
+ def blockdev_add(self) -> None:
+ self.vm.cmd('blockdev-add', **{
+ 'driver': 'null-co',
+ 'size': 1073741824,
+ 'node-name': 'disk'
+ })
+
+ def assert_vda(self) -> None:
+ exec_command_and_wait_for_pattern(self, 'while ! test -e /sys/block/vda ;'
+ ' do sleep 0.2 ; done', '# ')
+
+ def assert_no_vda(self) -> None:
+ exec_command_and_wait_for_pattern(self, 'while test -e /sys/block/vda ;'
+ ' do sleep 0.2 ; done', '# ')
+
+ def plug(self) -> None:
+ args = {
+ 'driver': 'virtio-blk-pci',
+ 'drive': 'disk',
+ 'id': 'virtio-disk0',
+ 'bus': 'pci.1',
+ 'addr': '1',
+ }
+
+ self.assert_no_vda()
+ self.vm.cmd('device_add', args)
+ self.wait_for_console_pattern('virtio_blk virtio0: [vda]')
+ self.assert_vda()
+
+ def unplug(self) -> None:
+ self.vm.cmd('device_del', id='virtio-disk0')
+
+ self.vm.event_wait('DEVICE_DELETED', 1.0,
+ match={'data': {'device': 'virtio-disk0'}})
+
+ self.assert_no_vda()
+
+ def test(self) -> None:
+ self.require_accelerator('kvm')
+ self.set_machine('q35')
+
+ self.vm.add_args('-accel', 'kvm')
+ self.vm.add_args('-device', 'pcie-pci-bridge,id=pci.1,bus=pcie.0')
+ self.vm.add_args('-m', '1G')
+ self.vm.add_args('-append', 'console=ttyS0 rd.rescue')
+
+ self.launch_kernel(self.ASSET_KERNEL.fetch(),
+ self.ASSET_INITRD.fetch(),
+ wait_for='Entering emergency mode.')
+ self.wait_for_console_pattern('# ')
+
+ self.blockdev_add()
+
+ self.plug()
+ self.unplug()
+
+
+if __name__ == '__main__':
+ LinuxKernelTest.main()
--
2.48.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL 4/7] tests/functional: Add a ppc sam460ex test
2025-02-11 12:31 [PULL 0/7] Functional tests and Gitlab-CI patches Thomas Huth
` (2 preceding siblings ...)
2025-02-11 12:31 ` [PULL 3/7] tests/functional: Convert the hotplug_blk avocado test Thomas Huth
@ 2025-02-11 12:31 ` Thomas Huth
2025-02-11 14:38 ` BALATON Zoltan
2025-02-11 12:31 ` [PULL 5/7] gitlab: don't fail cirrus CI jobs when credits are exhausted Thomas Huth
` (3 subsequent siblings)
7 siblings, 1 reply; 10+ messages in thread
From: Thomas Huth @ 2025-02-11 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi, Cédric Le Goater
From: Cédric Le Goater <clg@redhat.com>
The test sequence boots from kernel a sam460ex machine with a
virtio-net device to check PCI.
The buildroot is built with config :
BR2_powerpc=y
BR2_powerpc_440fp=y
and the kernel with the '44x/canyonlands' deconfig and virtio support.
Signed-off-by: Cédric Le Goater <clg@redhat.com>
Message-ID: <20250203092606.491933-1-clg@redhat.com>
[thuth: sort meson.build alphabetically]
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
MAINTAINERS | 1 +
tests/functional/meson.build | 1 +
tests/functional/test_ppc_sam460ex.py | 38 +++++++++++++++++++++++++++
3 files changed, 40 insertions(+)
create mode 100644 tests/functional/test_ppc_sam460ex.py
diff --git a/MAINTAINERS b/MAINTAINERS
index a593241800..794bde23a4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1562,6 +1562,7 @@ F: pc-bios/canyonlands.dt[sb]
F: pc-bios/u-boot-sam460ex-20100605.bin
F: roms/u-boot-sam460ex
F: docs/system/ppc/amigang.rst
+F: tests/functional/test_ppc_sam460ex.py
pegasos2
M: BALATON Zoltan <balaton@eik.bme.hu>
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index 70646d3457..b516d21cba 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -197,6 +197,7 @@ tests_ppc_system_thorough = [
'ppc_bamboo',
'ppc_mac',
'ppc_mpc8544ds',
+ 'ppc_sam460ex',
'ppc_tuxrun',
'ppc_virtex_ml507',
]
diff --git a/tests/functional/test_ppc_sam460ex.py b/tests/functional/test_ppc_sam460ex.py
new file mode 100644
index 0000000000..31cf9dd6de
--- /dev/null
+++ b/tests/functional/test_ppc_sam460ex.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python3
+#
+# Functional test that boots a sam460ex machine with a PPC 460EX CPU
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+from qemu_test import LinuxKernelTest, Asset
+from qemu_test import exec_command_and_wait_for_pattern
+
+
+class sam460exTest(LinuxKernelTest):
+
+ ASSET_BR2_SAM460EX_LINUX = Asset(
+ 'https://github.com/legoater/qemu-ppc-boot/raw/refs/heads/main/buildroot/qemu_ppc_sam460ex-2023.11-8-gdcd9f0f6eb-20240105/vmlinux',
+ '6f46346f3e20e8b5fc050ff363f350f8b9d76a051b9e0bd7ea470cc680c14df2')
+
+ def test_ppc_sam460ex_buildroot(self):
+ self.set_machine('sam460ex')
+ self.require_netdev('user')
+
+ linux_path = self.ASSET_BR2_SAM460EX_LINUX.fetch()
+
+ self.vm.set_console()
+ self.vm.add_args('-kernel', linux_path,
+ '-device', 'virtio-net-pci,netdev=net0',
+ '-netdev', 'user,id=net0')
+ self.vm.launch()
+
+ self.wait_for_console_pattern('Linux version')
+ self.wait_for_console_pattern('Hardware name: amcc,canyonlands 460EX')
+ self.wait_for_console_pattern('/init as init process')
+ self.wait_for_console_pattern('lease of 10.0.2.15 obtained')
+ self.wait_for_console_pattern('buildroot login:')
+ exec_command_and_wait_for_pattern(self, 'root', '#')
+ exec_command_and_wait_for_pattern(self, 'poweroff', 'System Halted')
+
+if __name__ == '__main__':
+ LinuxKernelTest.main()
--
2.48.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL 5/7] gitlab: don't fail cirrus CI jobs when credits are exhausted
2025-02-11 12:31 [PULL 0/7] Functional tests and Gitlab-CI patches Thomas Huth
` (3 preceding siblings ...)
2025-02-11 12:31 ` [PULL 4/7] tests/functional: Add a ppc sam460ex test Thomas Huth
@ 2025-02-11 12:31 ` Thomas Huth
2025-02-11 12:31 ` [PULL 6/7] gitlab: use new(ish) cirrus-vars command for creating config Thomas Huth
` (2 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Huth @ 2025-02-11 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi, Daniel P. Berrangé
From: Daniel P. Berrangé <berrange@redhat.com>
In the last week of the month we have often run out of credits on
Cirrus CI, which causes the jobs to fail, in turn causing the
overall pipeline to fail.
The cirrus-run tool can now detect the "out of credits" scenario
and exits with a code of '3'. We can tell gitlab to treat this
exit code as special and mark the job as "warning" instead of
"failed". This allows the pipeline status overall to remain
green, when we have non-technical issues with Cirrus CI.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20241204194807.1472261-2-berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
.gitlab-ci.d/cirrus.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml
index a9e43e21d0..adc0007e5d 100644
--- a/.gitlab-ci.d/cirrus.yml
+++ b/.gitlab-ci.d/cirrus.yml
@@ -15,6 +15,8 @@
stage: build
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:latest
needs: []
+ allow_failure:
+ exit_codes: 3
# 20 mins larger than "timeout_in" in cirrus/build.yml
# as there's often a 5-10 minute delay before Cirrus CI
# actually starts the task
--
2.48.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL 6/7] gitlab: use new(ish) cirrus-vars command for creating config
2025-02-11 12:31 [PULL 0/7] Functional tests and Gitlab-CI patches Thomas Huth
` (4 preceding siblings ...)
2025-02-11 12:31 ` [PULL 5/7] gitlab: don't fail cirrus CI jobs when credits are exhausted Thomas Huth
@ 2025-02-11 12:31 ` Thomas Huth
2025-02-11 12:31 ` [PULL 7/7] gitlab-ci.d/cirrus: Update the FreeBSD job to v14.2 Thomas Huth
2025-02-12 13:45 ` [PULL 0/7] Functional tests and Gitlab-CI patches Stefan Hajnoczi
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Huth @ 2025-02-11 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi, Daniel P. Berrangé
From: Daniel P. Berrangé <berrange@redhat.com>
Rather than a giant sed command with a hardcoded list of env var name,
we can now use the new(ish) cirrus-vars command that libvirt has added
to the 'cirrus-run' container.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20241204194807.1472261-3-berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
.gitlab-ci.d/cirrus.yml | 23 +++--------------------
.gitlab-ci.d/cirrus/build.yml | 2 +-
2 files changed, 4 insertions(+), 21 deletions(-)
diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml
index adc0007e5d..16411f3d2b 100644
--- a/.gitlab-ci.d/cirrus.yml
+++ b/.gitlab-ci.d/cirrus.yml
@@ -22,27 +22,10 @@
# actually starts the task
timeout: 80m
script:
+ - set -o allexport
- source .gitlab-ci.d/cirrus/$NAME.vars
- - sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
- -e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g"
- -e "s|[@]CI_COMMIT_SHA@|$CI_COMMIT_SHA|g"
- -e "s|[@]CIRRUS_VM_INSTANCE_TYPE@|$CIRRUS_VM_INSTANCE_TYPE|g"
- -e "s|[@]CIRRUS_VM_IMAGE_SELECTOR@|$CIRRUS_VM_IMAGE_SELECTOR|g"
- -e "s|[@]CIRRUS_VM_IMAGE_NAME@|$CIRRUS_VM_IMAGE_NAME|g"
- -e "s|[@]CIRRUS_VM_CPUS@|$CIRRUS_VM_CPUS|g"
- -e "s|[@]CIRRUS_VM_RAM@|$CIRRUS_VM_RAM|g"
- -e "s|[@]UPDATE_COMMAND@|$UPDATE_COMMAND|g"
- -e "s|[@]INSTALL_COMMAND@|$INSTALL_COMMAND|g"
- -e "s|[@]PATH@|$PATH_EXTRA${PATH_EXTRA:+:}\$PATH|g"
- -e "s|[@]PKG_CONFIG_PATH@|$PKG_CONFIG_PATH|g"
- -e "s|[@]PKGS@|$PKGS|g"
- -e "s|[@]MAKE@|$MAKE|g"
- -e "s|[@]PYTHON@|$PYTHON|g"
- -e "s|[@]PIP3@|$PIP3|g"
- -e "s|[@]PYPI_PKGS@|$PYPI_PKGS|g"
- -e "s|[@]CONFIGURE_ARGS@|$CONFIGURE_ARGS|g"
- -e "s|[@]TEST_TARGETS@|$TEST_TARGETS|g"
- <.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
+ - set +o allexport
+ - cirrus-vars <.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
- cat .gitlab-ci.d/cirrus/$NAME.yml
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
variables:
diff --git a/.gitlab-ci.d/cirrus/build.yml b/.gitlab-ci.d/cirrus/build.yml
index 102cdbd8b1..41abd0b31a 100644
--- a/.gitlab-ci.d/cirrus/build.yml
+++ b/.gitlab-ci.d/cirrus/build.yml
@@ -8,7 +8,7 @@ env:
CI_REPOSITORY_URL: "@CI_REPOSITORY_URL@"
CI_COMMIT_REF_NAME: "@CI_COMMIT_REF_NAME@"
CI_COMMIT_SHA: "@CI_COMMIT_SHA@"
- PATH: "@PATH@"
+ PATH: "@PATH_EXTRA@:$PATH"
PKG_CONFIG_PATH: "@PKG_CONFIG_PATH@"
PYTHON: "@PYTHON@"
MAKE: "@MAKE@"
--
2.48.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PULL 7/7] gitlab-ci.d/cirrus: Update the FreeBSD job to v14.2
2025-02-11 12:31 [PULL 0/7] Functional tests and Gitlab-CI patches Thomas Huth
` (5 preceding siblings ...)
2025-02-11 12:31 ` [PULL 6/7] gitlab: use new(ish) cirrus-vars command for creating config Thomas Huth
@ 2025-02-11 12:31 ` Thomas Huth
2025-02-12 13:45 ` [PULL 0/7] Functional tests and Gitlab-CI patches Stefan Hajnoczi
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Huth @ 2025-02-11 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi, Daniel P. Berrangé
The FreeBSD job started to fail since the 14-1 image disappeared
from the cloud. Update the job to v14.2 to fix it.
Message-ID: <20250211120817.35050-1-thuth@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
.gitlab-ci.d/cirrus.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml
index 16411f3d2b..75b611418e 100644
--- a/.gitlab-ci.d/cirrus.yml
+++ b/.gitlab-ci.d/cirrus.yml
@@ -37,7 +37,7 @@ x64-freebsd-14-build:
NAME: freebsd-14
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
CIRRUS_VM_IMAGE_SELECTOR: image_family
- CIRRUS_VM_IMAGE_NAME: freebsd-14-1
+ CIRRUS_VM_IMAGE_NAME: freebsd-14-2
CIRRUS_VM_CPUS: 8
CIRRUS_VM_RAM: 8G
UPDATE_COMMAND: pkg update; pkg upgrade -y
--
2.48.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PULL 4/7] tests/functional: Add a ppc sam460ex test
2025-02-11 12:31 ` [PULL 4/7] tests/functional: Add a ppc sam460ex test Thomas Huth
@ 2025-02-11 14:38 ` BALATON Zoltan
0 siblings, 0 replies; 10+ messages in thread
From: BALATON Zoltan @ 2025-02-11 14:38 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Stefan Hajnoczi, Cédric Le Goater
[-- Attachment #1: Type: text/plain, Size: 496 bytes --]
On Tue, 11 Feb 2025, Thomas Huth wrote:
> From: Cédric Le Goater <clg@redhat.com>
>
> The test sequence boots from kernel a sam460ex machine with a
> virtio-net device to check PCI.
>
> The buildroot is built with config :
>
> BR2_powerpc=y
> BR2_powerpc_440fp=y
>
> and the kernel with the '44x/canyonlands' deconfig and virtio support.
>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> Message-ID: <20250203092606.491933-1-clg@redhat.com>
Acked-by: BALATON Zoltan <balaton@eik.bme.hu>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PULL 0/7] Functional tests and Gitlab-CI patches
2025-02-11 12:31 [PULL 0/7] Functional tests and Gitlab-CI patches Thomas Huth
` (6 preceding siblings ...)
2025-02-11 12:31 ` [PULL 7/7] gitlab-ci.d/cirrus: Update the FreeBSD job to v14.2 Thomas Huth
@ 2025-02-12 13:45 ` Stefan Hajnoczi
7 siblings, 0 replies; 10+ messages in thread
From: Stefan Hajnoczi @ 2025-02-12 13:45 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Stefan Hajnoczi
[-- Attachment #1: Type: text/plain, Size: 116 bytes --]
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/10.0 for any user-visible changes.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-02-12 13:47 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-11 12:31 [PULL 0/7] Functional tests and Gitlab-CI patches Thomas Huth
2025-02-11 12:31 ` [PULL 1/7] tests/functional: Convert the aarch64 xen test to the functional framework Thomas Huth
2025-02-11 12:31 ` [PULL 2/7] tests/functional/test_aarch64_virt: Fix vulkan test without egl-headless Thomas Huth
2025-02-11 12:31 ` [PULL 3/7] tests/functional: Convert the hotplug_blk avocado test Thomas Huth
2025-02-11 12:31 ` [PULL 4/7] tests/functional: Add a ppc sam460ex test Thomas Huth
2025-02-11 14:38 ` BALATON Zoltan
2025-02-11 12:31 ` [PULL 5/7] gitlab: don't fail cirrus CI jobs when credits are exhausted Thomas Huth
2025-02-11 12:31 ` [PULL 6/7] gitlab: use new(ish) cirrus-vars command for creating config Thomas Huth
2025-02-11 12:31 ` [PULL 7/7] gitlab-ci.d/cirrus: Update the FreeBSD job to v14.2 Thomas Huth
2025-02-12 13:45 ` [PULL 0/7] Functional tests and Gitlab-CI patches Stefan Hajnoczi
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).