[PATCH] tests/acceptance: Add a test for the sun4u sparc64 machine

Thomas Huth posted 1 patch 3 years, 9 months ago
Test FreeBSD passed
Test docker-quick@centos7 passed
Test checkpatch passed
Test docker-mingw@fedora passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200702141050.30073-1-thuth@redhat.com
Maintainers: "Philippe Mathieu-Daudé" <philmd@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Cleber Rosa <crosa@redhat.com>
There is a newer version of this series
MAINTAINERS                               |  1 +
tests/acceptance/machine_sparc64_sun4u.py | 35 +++++++++++++++++++++++
2 files changed, 36 insertions(+)
create mode 100644 tests/acceptance/machine_sparc64_sun4u.py
[PATCH] tests/acceptance: Add a test for the sun4u sparc64 machine
Posted by Thomas Huth 3 years, 9 months ago
We can use the image from the advent calendar 2018 to test the sun4u
machine. It's not using the "QEMU advent calendar" string, so we can
not use the do_test_advcal_2018() from boot_linux_console.py, thus
let's also put it into a separate file to also be able to add an
entry to the MAINTAINERS file.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 MAINTAINERS                               |  1 +
 tests/acceptance/machine_sparc64_sun4u.py | 35 +++++++++++++++++++++++
 2 files changed, 36 insertions(+)
 create mode 100644 tests/acceptance/machine_sparc64_sun4u.py

diff --git a/MAINTAINERS b/MAINTAINERS
index dec252f38b..c26bc06e39 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1318,6 +1318,7 @@ F: include/hw/pci-host/sabre.h
 F: hw/pci-bridge/simba.c
 F: include/hw/pci-bridge/simba.h
 F: pc-bios/openbios-sparc64
+F: tests/acceptance/machine_sparc64_sun4u.py
 
 Sun4v
 M: Artyom Tarasenko <atar4qemu@gmail.com>
diff --git a/tests/acceptance/machine_sparc64_sun4u.py b/tests/acceptance/machine_sparc64_sun4u.py
new file mode 100644
index 0000000000..2506eefe3f
--- /dev/null
+++ b/tests/acceptance/machine_sparc64_sun4u.py
@@ -0,0 +1,35 @@
+# Functional test that boots a Linux kernel and checks the console
+#
+# Copyright (c) 2020 Red Hat, Inc.
+#
+# Author:
+#  Thomas Huth <thuth@redhat.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.
+
+import os
+
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+from avocado.utils import archive
+
+class Sun4uMachine(Test):
+    """Boots the Linux kernel and checks that the console is operational"""
+
+    timeout = 90
+
+    def test_sparc64_sun4u(self):
+        """
+        :avocado: tags=arch:sparc64
+        :avocado: tags=machine:sun4u
+        """
+        tar_url = ('https://www.qemu-advent-calendar.org'
+                   '/2018/download/day23.tar.xz')
+        tar_hash = '142db83cd974ffadc4f75c8a5cad5bcc5722c240'
+        file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
+        archive.extract(file_path, self.workdir)
+        self.vm.set_console()
+        self.vm.add_args('-kernel', self.workdir + '/day23/vmlinux')
+        self.vm.launch()
+        wait_for_console_pattern(self, 'Starting logging: OK')
-- 
2.18.1


Re: [PATCH] tests/acceptance: Add a test for the sun4u sparc64 machine
Posted by Philippe Mathieu-Daudé 3 years, 9 months ago
On 7/2/20 4:10 PM, Thomas Huth wrote:
> We can use the image from the advent calendar 2018 to test the sun4u
> machine. It's not using the "QEMU advent calendar" string, so we can
> not use the do_test_advcal_2018() from boot_linux_console.py, thus
> let's also put it into a separate file to also be able to add an
> entry to the MAINTAINERS file.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  MAINTAINERS                               |  1 +
>  tests/acceptance/machine_sparc64_sun4u.py | 35 +++++++++++++++++++++++
>  2 files changed, 36 insertions(+)
>  create mode 100644 tests/acceptance/machine_sparc64_sun4u.py
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index dec252f38b..c26bc06e39 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1318,6 +1318,7 @@ F: include/hw/pci-host/sabre.h
>  F: hw/pci-bridge/simba.c
>  F: include/hw/pci-bridge/simba.h
>  F: pc-bios/openbios-sparc64
> +F: tests/acceptance/machine_sparc64_sun4u.py
>  
>  Sun4v
>  M: Artyom Tarasenko <atar4qemu@gmail.com>
> diff --git a/tests/acceptance/machine_sparc64_sun4u.py b/tests/acceptance/machine_sparc64_sun4u.py
> new file mode 100644
> index 0000000000..2506eefe3f
> --- /dev/null
> +++ b/tests/acceptance/machine_sparc64_sun4u.py
> @@ -0,0 +1,35 @@
> +# Functional test that boots a Linux kernel and checks the console
> +#
> +# Copyright (c) 2020 Red Hat, Inc.
> +#
> +# Author:
> +#  Thomas Huth <thuth@redhat.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.
> +
> +import os
> +
> +from avocado_qemu import Test
> +from avocado_qemu import wait_for_console_pattern
> +from avocado.utils import archive
> +
> +class Sun4uMachine(Test):

I'd rather use Sun4uMachine(LinuxKernelTest) here, ...

> +    """Boots the Linux kernel and checks that the console is operational"""
> +
> +    timeout = 90
> +
> +    def test_sparc64_sun4u(self):
> +        """
> +        :avocado: tags=arch:sparc64
> +        :avocado: tags=machine:sun4u
> +        """
> +        tar_url = ('https://www.qemu-advent-calendar.org'
> +                   '/2018/download/day23.tar.xz')
> +        tar_hash = '142db83cd974ffadc4f75c8a5cad5bcc5722c240'
> +        file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
> +        archive.extract(file_path, self.workdir)
> +        self.vm.set_console()
> +        self.vm.add_args('-kernel', self.workdir + '/day23/vmlinux')

... to use '-append', self.KERNEL_COMMON_COMMAND_LINE here.

> +        self.vm.launch()
> +        wait_for_console_pattern(self, 'Starting logging: OK')
> 

$ avocado --show=app,console run -t arch:sparc64 tests/acceptance/
Fetching asset from
tests/acceptance/machine_sparc64_sun4u.py:Sun4uMachine.test_sparc64_sun4u
 (1/1)
tests/acceptance/machine_sparc64_sun4u.py:Sun4uMachine.test_sparc64_sun4u:
console: OpenBIOS for Sparc64
console: Configuration device id QEMU version 1 machine id 0
console: kernel phys 404000 virt 40004000 size 0x10b7858
console: kernel cmdline
console: CPUs: 1 x SUNW,UltraSPARC-IIi
console: UUID: 00000000-0000-0000-0000-000000000000
console: Welcome to OpenBIOS v1.1 built on May 21 2020 19:15
console: Type 'help' for detailed information
console: [sparc64] Kernel already loaded
console: [    0.004591] PROMLIB: Sun IEEE Boot Prom 'OBP 3.10.24
1999/01/01 01:01'
console: [    0.006452] PROMLIB: Root node compatible: sun4u
console: [    0.007859] Linux version 4.16.13 (thuth@thuth.remote.csb)
(gcc version 6.4.0 (Buildroot 2018.05.2)) #46 SMP Sun Dec 16 17:16:03
CET 2018
console: [    0.039824] bootconsole [earlyprom0] enabled
console: [    0.042520] ARCH: SUN4U
...
console: [    4.823203] Booting Linux...
console: [    7.067712] rtc-m48t59 rtc-m48t59.0: setting system clock to
2020-07-04 14:52:23 UTC (1593874343)
console: [    7.216252] This architecture does not have kernel memory
protection.
console: Starting logging: OK
PASS (15.28 s)

Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Preferably with KERNEL_COMMON_COMMAND_LINE:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Thanks for adding this test!

Phil.

Re: [PATCH] tests/acceptance: Add a test for the sun4u sparc64 machine
Posted by Mark Cave-Ayland 3 years, 9 months ago
On 02/07/2020 15:10, Thomas Huth wrote:

> We can use the image from the advent calendar 2018 to test the sun4u
> machine. It's not using the "QEMU advent calendar" string, so we can
> not use the do_test_advcal_2018() from boot_linux_console.py, thus
> let's also put it into a separate file to also be able to add an
> entry to the MAINTAINERS file.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  MAINTAINERS                               |  1 +
>  tests/acceptance/machine_sparc64_sun4u.py | 35 +++++++++++++++++++++++
>  2 files changed, 36 insertions(+)
>  create mode 100644 tests/acceptance/machine_sparc64_sun4u.py
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index dec252f38b..c26bc06e39 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1318,6 +1318,7 @@ F: include/hw/pci-host/sabre.h
>  F: hw/pci-bridge/simba.c
>  F: include/hw/pci-bridge/simba.h
>  F: pc-bios/openbios-sparc64
> +F: tests/acceptance/machine_sparc64_sun4u.py
>  
>  Sun4v
>  M: Artyom Tarasenko <atar4qemu@gmail.com>
> diff --git a/tests/acceptance/machine_sparc64_sun4u.py b/tests/acceptance/machine_sparc64_sun4u.py
> new file mode 100644
> index 0000000000..2506eefe3f
> --- /dev/null
> +++ b/tests/acceptance/machine_sparc64_sun4u.py
> @@ -0,0 +1,35 @@
> +# Functional test that boots a Linux kernel and checks the console
> +#
> +# Copyright (c) 2020 Red Hat, Inc.
> +#
> +# Author:
> +#  Thomas Huth <thuth@redhat.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.
> +
> +import os
> +
> +from avocado_qemu import Test
> +from avocado_qemu import wait_for_console_pattern
> +from avocado.utils import archive
> +
> +class Sun4uMachine(Test):
> +    """Boots the Linux kernel and checks that the console is operational"""
> +
> +    timeout = 90
> +
> +    def test_sparc64_sun4u(self):
> +        """
> +        :avocado: tags=arch:sparc64
> +        :avocado: tags=machine:sun4u
> +        """
> +        tar_url = ('https://www.qemu-advent-calendar.org'
> +                   '/2018/download/day23.tar.xz')
> +        tar_hash = '142db83cd974ffadc4f75c8a5cad5bcc5722c240'
> +        file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
> +        archive.extract(file_path, self.workdir)
> +        self.vm.set_console()
> +        self.vm.add_args('-kernel', self.workdir + '/day23/vmlinux')
> +        self.vm.launch()
> +        wait_for_console_pattern(self, 'Starting logging: OK')

Thanks Thomas!

I've just tested this and the patch appears to work fine and passes here:

Fetching asset from
tests/acceptance/machine_sparc64_sun4u.py:Sun4uMachine.test_sparc64_sun4u
JOB ID     : c719db83a6011ed88a485b177079d0add26f6f81
JOB LOG    :
/home/build/src/qemu/git/qemu/tests/results/job-2020-07-02T21.25-c719db8/job.log
 (01/11) tests/acceptance/empty_cpu_model.py:EmptyCPUModel.test: CANCEL: No QEMU
binary defined or found in the build tree (0.00 s)
 (02/11) tests/acceptance/machine_sparc64_sun4u.py:Sun4uMachine.test_sparc64_sun4u:
PASS (18.74 s)
...
...


Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>


ATB,

Mark.