diff mbox series

[1/2] tests/functional: Convert mips64el Malta I6400 avocado tests

Message ID 20240821125701.63042-2-philmd@linaro.org
State Superseded
Headers show
Series tests/functional: Convert MIPS Malta avocado tests | expand

Commit Message

Philippe Mathieu-Daudé Aug. 21, 2024, 12:57 p.m. UTC
Straight forward conversion. Update the SHA1 hashes to SHA256
hashes since SHA1 should not be used anymore nowadays.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 MAINTAINERS                             |   1 +
 tests/avocado/machine_mips_malta.py     | 108 -----------------------
 tests/functional/meson.build            |   1 +
 tests/functional/test_mips64el_malta.py | 111 ++++++++++++++++++++++++
 4 files changed, 113 insertions(+), 108 deletions(-)
 create mode 100755 tests/functional/test_mips64el_malta.py

Comments

Thomas Huth Aug. 21, 2024, 1:14 p.m. UTC | #1
On 21/08/2024 14.57, Philippe Mathieu-Daudé wrote:
> Straight forward conversion. Update the SHA1 hashes to SHA256
> hashes since SHA1 should not be used anymore nowadays.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   MAINTAINERS                             |   1 +
>   tests/avocado/machine_mips_malta.py     | 108 -----------------------
>   tests/functional/meson.build            |   1 +
>   tests/functional/test_mips64el_malta.py | 111 ++++++++++++++++++++++++
>   4 files changed, 113 insertions(+), 108 deletions(-)
>   create mode 100755 tests/functional/test_mips64el_malta.py
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 77fbb5d42e..3a91017979 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1369,6 +1369,7 @@ F: hw/pci-host/gt64120.c
>   F: include/hw/southbridge/piix.h
>   F: tests/avocado/linux_ssh_mips_malta.py
>   F: tests/avocado/machine_mips_malta.py
> +F: tests/functional/test_mips64el_malta.py
>   
>   Mipssim
>   R: Aleksandar Rikalo <arikalo@gmail.com>
> diff --git a/tests/avocado/machine_mips_malta.py b/tests/avocado/machine_mips_malta.py
> index 07a80633b5..05c64e18c4 100644
> --- a/tests/avocado/machine_mips_malta.py
> +++ b/tests/avocado/machine_mips_malta.py
> @@ -8,121 +8,13 @@
>   # SPDX-License-Identifier: GPL-2.0-or-later
>   
>   import os
> -import gzip
> -import logging
>   
> -from avocado import skipUnless
> -from avocado import skipUnless
>   from avocado.utils import archive
>   from avocado_qemu import QemuSystemTest
> -from avocado_qemu import exec_command_and_wait_for_pattern
>   from avocado_qemu import interrupt_interactive_console_until_pattern
>   from avocado_qemu import wait_for_console_pattern
>   
>   
> -NUMPY_AVAILABLE = True
> -try:
> -    import numpy as np
> -except ImportError:
> -    NUMPY_AVAILABLE = False
> -
> -CV2_AVAILABLE = True
> -try:
> -    import cv2
> -except ImportError:
> -    CV2_AVAILABLE = False
> -
> -
> -@skipUnless(NUMPY_AVAILABLE, 'Python NumPy not installed')
> -@skipUnless(CV2_AVAILABLE, 'Python OpenCV not installed')
> -class MaltaMachineFramebuffer(QemuSystemTest):
> -
> -    timeout = 30
> -
> -    KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '
> -
> -    def do_test_i6400_framebuffer_logo(self, cpu_cores_count):
> -        """
> -        Boot Linux kernel and check Tux logo is displayed on the framebuffer.
> -        """
> -        screendump_path = os.path.join(self.workdir, 'screendump.pbm')
> -
> -        kernel_url = ('https://github.com/philmd/qemu-testing-blob/raw/'
> -                      'a5966ca4b5/mips/malta/mips64el/'
> -                      'vmlinux-4.7.0-rc1.I6400.gz')
> -        kernel_hash = '096f50c377ec5072e6a366943324622c312045f6'
> -        kernel_path_gz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
> -        kernel_path = self.workdir + "vmlinux"
> -        archive.gzip_uncompress(kernel_path_gz, kernel_path)
> -
> -        tuxlogo_url = ('https://github.com/torvalds/linux/raw/v2.6.12/'
> -                       'drivers/video/logo/logo_linux_vga16.ppm')
> -        tuxlogo_hash = '3991c2ddbd1ddaecda7601f8aafbcf5b02dc86af'
> -        tuxlogo_path = self.fetch_asset(tuxlogo_url, asset_hash=tuxlogo_hash)
> -
> -        self.vm.set_console()
> -        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> -                               'clocksource=GIC console=tty0 console=ttyS0')
> -        self.vm.add_args('-kernel', kernel_path,
> -                         '-smp', '%u' % cpu_cores_count,
> -                         '-vga', 'std',
> -                         '-append', kernel_command_line)
> -        self.vm.launch()
> -        framebuffer_ready = 'Console: switching to colour frame buffer device'
> -        wait_for_console_pattern(self, framebuffer_ready,
> -                                 failure_message='Kernel panic - not syncing')
> -        self.vm.cmd('human-monitor-command', command_line='stop')
> -        self.vm.cmd('human-monitor-command',
> -                    command_line='screendump %s' % screendump_path)
> -        logger = logging.getLogger('framebuffer')
> -
> -        match_threshold = 0.95
> -        screendump_bgr = cv2.imread(screendump_path, cv2.IMREAD_COLOR)
> -        tuxlogo_bgr = cv2.imread(tuxlogo_path, cv2.IMREAD_COLOR)
> -        result = cv2.matchTemplate(screendump_bgr, tuxlogo_bgr,
> -                                   cv2.TM_CCOEFF_NORMED)
> -        loc = np.where(result >= match_threshold)
> -        tuxlogo_count = 0
> -        h, w = tuxlogo_bgr.shape[:2]
> -        debug_png = os.getenv('AVOCADO_CV2_SCREENDUMP_PNG_PATH')
> -        for tuxlogo_count, pt in enumerate(zip(*loc[::-1]), start=1):
> -            logger.debug('found Tux at position (x, y) = %s', pt)
> -            cv2.rectangle(screendump_bgr, pt,
> -                          (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
> -        if debug_png:
> -            cv2.imwrite(debug_png, screendump_bgr)
> -        self.assertGreaterEqual(tuxlogo_count, cpu_cores_count)
> -
> -    def test_mips_malta_i6400_framebuffer_logo_1core(self):
> -        """
> -        :avocado: tags=arch:mips64el
> -        :avocado: tags=machine:malta
> -        :avocado: tags=cpu:I6400
> -        """
> -        self.do_test_i6400_framebuffer_logo(1)
> -
> -    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
> -    def test_mips_malta_i6400_framebuffer_logo_7cores(self):
> -        """
> -        :avocado: tags=arch:mips64el
> -        :avocado: tags=machine:malta
> -        :avocado: tags=cpu:I6400
> -        :avocado: tags=mips:smp
> -        :avocado: tags=flaky
> -        """
> -        self.do_test_i6400_framebuffer_logo(7)
> -
> -    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
> -    def test_mips_malta_i6400_framebuffer_logo_8cores(self):
> -        """
> -        :avocado: tags=arch:mips64el
> -        :avocado: tags=machine:malta
> -        :avocado: tags=cpu:I6400
> -        :avocado: tags=mips:smp
> -        :avocado: tags=flaky
> -        """
> -        self.do_test_i6400_framebuffer_logo(8)
> -
>   class MaltaMachine(QemuSystemTest):
>   
>       def do_test_yamon(self):
> diff --git a/tests/functional/meson.build b/tests/functional/meson.build
> index 8d28313a65..1823f88897 100644
> --- a/tests/functional/meson.build
> +++ b/tests/functional/meson.build
> @@ -56,6 +56,7 @@ tests_mips64el_quick = [
>   ]
>   
>   tests_mips64el_thorough = [
> +  'mips64el_malta',
>     'mips64el_loongson3v',
>   ]

Maybe keep the list in alphabetical order?

Anyway:
Reviewed-by: Thomas Huth <thuth@redhat.com>
diff mbox series

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index 77fbb5d42e..3a91017979 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1369,6 +1369,7 @@  F: hw/pci-host/gt64120.c
 F: include/hw/southbridge/piix.h
 F: tests/avocado/linux_ssh_mips_malta.py
 F: tests/avocado/machine_mips_malta.py
+F: tests/functional/test_mips64el_malta.py
 
 Mipssim
 R: Aleksandar Rikalo <arikalo@gmail.com>
diff --git a/tests/avocado/machine_mips_malta.py b/tests/avocado/machine_mips_malta.py
index 07a80633b5..05c64e18c4 100644
--- a/tests/avocado/machine_mips_malta.py
+++ b/tests/avocado/machine_mips_malta.py
@@ -8,121 +8,13 @@ 
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 import os
-import gzip
-import logging
 
-from avocado import skipUnless
-from avocado import skipUnless
 from avocado.utils import archive
 from avocado_qemu import QemuSystemTest
-from avocado_qemu import exec_command_and_wait_for_pattern
 from avocado_qemu import interrupt_interactive_console_until_pattern
 from avocado_qemu import wait_for_console_pattern
 
 
-NUMPY_AVAILABLE = True
-try:
-    import numpy as np
-except ImportError:
-    NUMPY_AVAILABLE = False
-
-CV2_AVAILABLE = True
-try:
-    import cv2
-except ImportError:
-    CV2_AVAILABLE = False
-
-
-@skipUnless(NUMPY_AVAILABLE, 'Python NumPy not installed')
-@skipUnless(CV2_AVAILABLE, 'Python OpenCV not installed')
-class MaltaMachineFramebuffer(QemuSystemTest):
-
-    timeout = 30
-
-    KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '
-
-    def do_test_i6400_framebuffer_logo(self, cpu_cores_count):
-        """
-        Boot Linux kernel and check Tux logo is displayed on the framebuffer.
-        """
-        screendump_path = os.path.join(self.workdir, 'screendump.pbm')
-
-        kernel_url = ('https://github.com/philmd/qemu-testing-blob/raw/'
-                      'a5966ca4b5/mips/malta/mips64el/'
-                      'vmlinux-4.7.0-rc1.I6400.gz')
-        kernel_hash = '096f50c377ec5072e6a366943324622c312045f6'
-        kernel_path_gz = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
-        kernel_path = self.workdir + "vmlinux"
-        archive.gzip_uncompress(kernel_path_gz, kernel_path)
-
-        tuxlogo_url = ('https://github.com/torvalds/linux/raw/v2.6.12/'
-                       'drivers/video/logo/logo_linux_vga16.ppm')
-        tuxlogo_hash = '3991c2ddbd1ddaecda7601f8aafbcf5b02dc86af'
-        tuxlogo_path = self.fetch_asset(tuxlogo_url, asset_hash=tuxlogo_hash)
-
-        self.vm.set_console()
-        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
-                               'clocksource=GIC console=tty0 console=ttyS0')
-        self.vm.add_args('-kernel', kernel_path,
-                         '-smp', '%u' % cpu_cores_count,
-                         '-vga', 'std',
-                         '-append', kernel_command_line)
-        self.vm.launch()
-        framebuffer_ready = 'Console: switching to colour frame buffer device'
-        wait_for_console_pattern(self, framebuffer_ready,
-                                 failure_message='Kernel panic - not syncing')
-        self.vm.cmd('human-monitor-command', command_line='stop')
-        self.vm.cmd('human-monitor-command',
-                    command_line='screendump %s' % screendump_path)
-        logger = logging.getLogger('framebuffer')
-
-        match_threshold = 0.95
-        screendump_bgr = cv2.imread(screendump_path, cv2.IMREAD_COLOR)
-        tuxlogo_bgr = cv2.imread(tuxlogo_path, cv2.IMREAD_COLOR)
-        result = cv2.matchTemplate(screendump_bgr, tuxlogo_bgr,
-                                   cv2.TM_CCOEFF_NORMED)
-        loc = np.where(result >= match_threshold)
-        tuxlogo_count = 0
-        h, w = tuxlogo_bgr.shape[:2]
-        debug_png = os.getenv('AVOCADO_CV2_SCREENDUMP_PNG_PATH')
-        for tuxlogo_count, pt in enumerate(zip(*loc[::-1]), start=1):
-            logger.debug('found Tux at position (x, y) = %s', pt)
-            cv2.rectangle(screendump_bgr, pt,
-                          (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
-        if debug_png:
-            cv2.imwrite(debug_png, screendump_bgr)
-        self.assertGreaterEqual(tuxlogo_count, cpu_cores_count)
-
-    def test_mips_malta_i6400_framebuffer_logo_1core(self):
-        """
-        :avocado: tags=arch:mips64el
-        :avocado: tags=machine:malta
-        :avocado: tags=cpu:I6400
-        """
-        self.do_test_i6400_framebuffer_logo(1)
-
-    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
-    def test_mips_malta_i6400_framebuffer_logo_7cores(self):
-        """
-        :avocado: tags=arch:mips64el
-        :avocado: tags=machine:malta
-        :avocado: tags=cpu:I6400
-        :avocado: tags=mips:smp
-        :avocado: tags=flaky
-        """
-        self.do_test_i6400_framebuffer_logo(7)
-
-    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
-    def test_mips_malta_i6400_framebuffer_logo_8cores(self):
-        """
-        :avocado: tags=arch:mips64el
-        :avocado: tags=machine:malta
-        :avocado: tags=cpu:I6400
-        :avocado: tags=mips:smp
-        :avocado: tags=flaky
-        """
-        self.do_test_i6400_framebuffer_logo(8)
-
 class MaltaMachine(QemuSystemTest):
 
     def do_test_yamon(self):
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index 8d28313a65..1823f88897 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -56,6 +56,7 @@  tests_mips64el_quick = [
 ]
 
 tests_mips64el_thorough = [
+  'mips64el_malta',
   'mips64el_loongson3v',
 ]
 
diff --git a/tests/functional/test_mips64el_malta.py b/tests/functional/test_mips64el_malta.py
new file mode 100755
index 0000000000..05d2c5f85b
--- /dev/null
+++ b/tests/functional/test_mips64el_malta.py
@@ -0,0 +1,111 @@ 
+#!/usr/bin/env python3
+#
+# Functional tests for the little-endian 64-bit MIPS Malta board
+#
+# Copyright (c) Philippe Mathieu-Daudé <f4bug@amsat.org>
+#
+# 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 logging
+
+from qemu_test import QemuSystemTest, Asset
+from qemu_test import wait_for_console_pattern
+from qemu_test.utils import gzip_uncompress
+from unittest import skipUnless
+
+NUMPY_AVAILABLE = True
+try:
+    import numpy as np
+except ImportError:
+    NUMPY_AVAILABLE = False
+
+CV2_AVAILABLE = True
+try:
+    import cv2
+except ImportError:
+    CV2_AVAILABLE = False
+
+
+@skipUnless(NUMPY_AVAILABLE, 'Python NumPy not installed')
+@skipUnless(CV2_AVAILABLE, 'Python OpenCV not installed')
+class MaltaMachineFramebuffer(QemuSystemTest):
+
+    timeout = 30
+
+    ASSET_KERNEL = Asset(
+        ('https://github.com/philmd/qemu-testing-blob/raw/a5966ca4b5/'
+         'mips/malta/mips64el/vmlinux-4.7.0-rc1.I6400.gz'),
+        '1f64efc59968a3c328672e6b10213fe574bb2308d9d2ed44e75e40be59e9fbc2')
+
+    ASSET_TUXLOGO = Asset(
+        ('https://github.com/torvalds/linux/raw/v2.6.12/'
+         'drivers/video/logo/logo_linux_vga16.ppm'),
+        'b762f0d91ec018887ad1b334543c2fdf9be9fdfc87672b409211efaa3ea0ef79')
+
+    KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '
+
+    def do_test_i6400_framebuffer_logo(self, cpu_cores_count):
+        """
+        Boot Linux kernel and check Tux logo is displayed on the framebuffer.
+        """
+        screendump_path = os.path.join(self.workdir, 'screendump.pbm')
+
+        kernel_path_gz = self.ASSET_KERNEL.fetch()
+        kernel_path = self.workdir + "vmlinux"
+        gzip_uncompress(kernel_path_gz, kernel_path)
+
+        tuxlogo_path = self.ASSET_TUXLOGO.fetch()
+
+        self.set_machine('malta')
+        self.vm.set_console()
+        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
+                               'clocksource=GIC console=tty0 console=ttyS0')
+        self.vm.add_args('-kernel', kernel_path,
+                         '-cpu', 'I6400',
+                         '-smp', '%u' % cpu_cores_count,
+                         '-vga', 'std',
+                         '-append', kernel_command_line)
+        self.vm.launch()
+        framebuffer_ready = 'Console: switching to colour frame buffer device'
+        wait_for_console_pattern(self, framebuffer_ready,
+                                 failure_message='Kernel panic - not syncing')
+        self.vm.cmd('human-monitor-command', command_line='stop')
+        self.vm.cmd('human-monitor-command',
+                    command_line='screendump %s' % screendump_path)
+        logger = logging.getLogger('framebuffer')
+
+        match_threshold = 0.95
+        screendump_bgr = cv2.imread(screendump_path, cv2.IMREAD_COLOR)
+        tuxlogo_bgr = cv2.imread(tuxlogo_path, cv2.IMREAD_COLOR)
+        result = cv2.matchTemplate(screendump_bgr, tuxlogo_bgr,
+                                   cv2.TM_CCOEFF_NORMED)
+        loc = np.where(result >= match_threshold)
+        tuxlogo_count = 0
+        h, w = tuxlogo_bgr.shape[:2]
+        debug_png = os.getenv('AVOCADO_CV2_SCREENDUMP_PNG_PATH')
+        for tuxlogo_count, pt in enumerate(zip(*loc[::-1]), start=1):
+            logger.debug('found Tux at position (x, y) = %s', pt)
+            cv2.rectangle(screendump_bgr, pt,
+                          (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
+        if debug_png:
+            cv2.imwrite(debug_png, screendump_bgr)
+        self.assertGreaterEqual(tuxlogo_count, cpu_cores_count)
+
+    def test_mips_malta_i6400_framebuffer_logo_1core(self):
+        self.do_test_i6400_framebuffer_logo(1)
+
+    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
+    def test_mips_malta_i6400_framebuffer_logo_7cores(self):
+        self.do_test_i6400_framebuffer_logo(7)
+
+    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
+    def test_mips_malta_i6400_framebuffer_logo_8cores(self):
+        self.do_test_i6400_framebuffer_logo(8)
+
+
+if __name__ == '__main__':
+    QemuSystemTest.main()