Thanks for doing this.
I have a fix for this problem, it's a bug with the test harness
code but was not merged yet. I'll re-send it.
Thanks,
Nick
On Wed Jul 31, 2024 at 3:03 AM AEST, Daniel P. Berrangé wrote:
> From: Thomas Huth <thuth@redhat.com>
>
> Note: The original Avocado test seems currently to be broken, it hangs
> when the guest is trying to install additional packages. So mark it as
> broken for now until it gets fixed.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> .../test_ppc64_hv.py} | 48 ++++++++-----------
> 1 file changed, 20 insertions(+), 28 deletions(-)
> rename tests/{avocado/ppc_hv_tests.py => functional/test_ppc64_hv.py} (88%)
> mode change 100644 => 100755
>
> diff --git a/tests/avocado/ppc_hv_tests.py b/tests/functional/test_ppc64_hv.py
> old mode 100644
> new mode 100755
> similarity index 88%
> rename from tests/avocado/ppc_hv_tests.py
> rename to tests/functional/test_ppc64_hv.py
> index bf8822bb97..a45657c87e
> --- a/tests/avocado/ppc_hv_tests.py
> +++ b/tests/functional/test_ppc64_hv.py
> @@ -1,3 +1,5 @@
> +#!/usr/bin/env python3
> +#
> # Tests that specifically try to exercise hypervisor features of the
> # target machines. powernv supports the Power hypervisor ISA, and
> # pseries supports the nested-HV hypervisor spec.
> @@ -7,10 +9,10 @@
> # 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 import skipIf, skipUnless
> -from avocado.utils import archive
> -from avocado_qemu import QemuSystemTest
> -from avocado_qemu import wait_for_console_pattern, exec_command
> +from unittest import skipIf, skipUnless
> +from qemu_test.utils import archive_extract
> +from qemu_test import QemuSystemTest, Asset
> +from qemu_test import wait_for_console_pattern, exec_command
> import os
> import time
> import subprocess
> @@ -47,7 +49,7 @@ def missing_deps():
> @skipIf(missing_deps(), 'dependencies (%s) not installed' % ','.join(deps))
> @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test sometimes gets stuck due to console handling problem')
> @skipUnless(os.getenv('AVOCADO_ALLOW_LARGE_STORAGE'), 'storage limited')
> -@skipUnless(os.getenv('SPEED') == 'slow', 'runtime limited')
> +@skip('broken test - guest fails to install packages')
> class HypervisorTest(QemuSystemTest):
>
> timeout = 1000
> @@ -55,6 +57,12 @@ class HypervisorTest(QemuSystemTest):
> panic_message = 'Kernel panic - not syncing'
> good_message = 'VFS: Cannot open root device'
>
> + # Alpine use sha256 so I recalculated this myself
> + ASSET_ISO = Asset(
> + ('https://dl-cdn.alpinelinux.org/alpine/v3.18/'
> + 'releases/ppc64le/alpine-standard-3.18.4-ppc64le.iso'),
> + 'c26b8d3e17c2f3f0fed02b4b1296589c2390e6d5548610099af75300edd7b3ff')
> +
> def extract_from_iso(self, iso, path):
> """
> Extracts a file from an iso file into the test workdir
> @@ -84,14 +92,7 @@ def extract_from_iso(self, iso, path):
> def setUp(self):
> super().setUp()
>
> - iso_url = ('https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/ppc64le/alpine-standard-3.18.4-ppc64le.iso')
> -
> - # Alpine use sha256 so I recalculated this myself
> - iso_sha256 = 'c26b8d3e17c2f3f0fed02b4b1296589c2390e6d5548610099af75300edd7b3ff'
> - iso_path = self.fetch_asset(iso_url, asset_hash=iso_sha256,
> - algorithm = "sha256")
> -
> - self.iso_path = iso_path
> + self.iso_path = self.ASSET_ISO.fetch()
> self.vmlinuz = self.extract_from_iso(iso_path, '/boot/vmlinuz-lts')
> self.initramfs = self.extract_from_iso(iso_path, '/boot/initramfs-lts')
>
> @@ -159,12 +160,8 @@ def do_test_kvm(self, hpt=False):
> wait_for_console_pattern(self, 'alpine:~#')
>
> def test_hv_pseries(self):
> - """
> - :avocado: tags=arch:ppc64
> - :avocado: tags=machine:pseries
> - :avocado: tags=accel:tcg
> - """
> self.require_accelerator("tcg")
> + self.set_machine('pseries')
> self.vm.add_args("-accel", "tcg,thread=multi")
> self.vm.add_args('-device', 'nvme,serial=1234,drive=drive0')
> self.vm.add_args("-machine", "x-vof=on,cap-nested-hv=on")
> @@ -174,12 +171,8 @@ def test_hv_pseries(self):
> self.do_stop_alpine()
>
> def test_hv_pseries_kvm(self):
> - """
> - :avocado: tags=arch:ppc64
> - :avocado: tags=machine:pseries
> - :avocado: tags=accel:kvm
> - """
> self.require_accelerator("kvm")
> + self.set_machine('pseries')
> self.vm.add_args("-accel", "kvm")
> self.vm.add_args('-device', 'nvme,serial=1234,drive=drive0')
> self.vm.add_args("-machine", "x-vof=on,cap-nested-hv=on,cap-ccf-assist=off")
> @@ -189,12 +182,8 @@ def test_hv_pseries_kvm(self):
> self.do_stop_alpine()
>
> def test_hv_powernv(self):
> - """
> - :avocado: tags=arch:ppc64
> - :avocado: tags=machine:powernv
> - :avocado: tags=accel:tcg
> - """
> self.require_accelerator("tcg")
> + self.set_machine('powernv')
> self.vm.add_args("-accel", "tcg,thread=multi")
> self.vm.add_args('-device', 'nvme,bus=pcie.2,addr=0x0,serial=1234,drive=drive0',
> '-device', 'e1000e,netdev=net0,mac=C0:FF:EE:00:00:02,bus=pcie.0,addr=0x0',
> @@ -204,3 +193,6 @@ def test_hv_powernv(self):
> self.do_test_kvm()
> self.do_test_kvm(True)
> self.do_stop_alpine()
> +
> +if __name__ == '__main__':
> + QemuSystemTest.main()