* [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests
@ 2020-02-25 17:24 Philippe Mathieu-Daudé
2020-02-25 17:24 ` [PATCH 1/4] tests/acceptance: Add a test for the N800 and N810 arm machines Philippe Mathieu-Daudé
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-25 17:24 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell, qemu-arm, Philippe Mathieu-Daudé
This series collects patches adding tests for arm machines.
All patches are reviewed.
Philippe Mathieu-Daudé (2):
tests/acceptance: Extract boot_integratorcp() from test_integratorcp()
tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer
Thomas Huth (2):
tests/acceptance: Add a test for the N800 and N810 arm machines
tests/acceptance: Add a test for the integratorcp arm machine
MAINTAINERS | 2 +
tests/acceptance/machine_arm_integratorcp.py | 99 ++++++++++++++++++++
tests/acceptance/machine_arm_n8x0.py | 49 ++++++++++
3 files changed, 150 insertions(+)
create mode 100644 tests/acceptance/machine_arm_integratorcp.py
create mode 100644 tests/acceptance/machine_arm_n8x0.py
--
2.21.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/4] tests/acceptance: Add a test for the N800 and N810 arm machines
2020-02-25 17:24 [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests Philippe Mathieu-Daudé
@ 2020-02-25 17:24 ` Philippe Mathieu-Daudé
2020-02-25 17:24 ` [PATCH 2/4] tests/acceptance: Add a test for the integratorcp arm machine Philippe Mathieu-Daudé
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-25 17:24 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Thomas Huth, Philippe Mathieu-Daudé,
Philippe Mathieu-Daudé,
Wainer dos Santos Moschetta, qemu-arm
From: Thomas Huth <thuth@redhat.com>
Old kernels from the Meego project can be used to check that Linux
is at least starting on these machines.
Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20200129131920.22302-1-thuth@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
MAINTAINERS | 1 +
tests/acceptance/machine_arm_n8x0.py | 49 ++++++++++++++++++++++++++++
2 files changed, 50 insertions(+)
create mode 100644 tests/acceptance/machine_arm_n8x0.py
diff --git a/MAINTAINERS b/MAINTAINERS
index 36d94c17a6..83e5a83418 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -687,6 +687,7 @@ F: hw/rtc/twl92230.c
F: include/hw/display/blizzard.h
F: include/hw/input/tsc2xxx.h
F: include/hw/misc/cbus.h
+F: tests/acceptance/machine_arm_n8x0.py
Palm
M: Andrzej Zaborowski <balrogg@gmail.com>
diff --git a/tests/acceptance/machine_arm_n8x0.py b/tests/acceptance/machine_arm_n8x0.py
new file mode 100644
index 0000000000..e5741f2d8d
--- /dev/null
+++ b/tests/acceptance/machine_arm_n8x0.py
@@ -0,0 +1,49 @@
+# 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 import skipUnless
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+
+class N8x0Machine(Test):
+ """Boots the Linux kernel and checks that the console is operational"""
+
+ timeout = 90
+
+ def __do_test_n8x0(self):
+ kernel_url = ('http://stskeeps.subnetmask.net/meego-n8x0/'
+ 'meego-arm-n8x0-1.0.80.20100712.1431-'
+ 'vmlinuz-2.6.35~rc4-129.1-n8x0')
+ kernel_hash = 'e9d5ab8d7548923a0061b6fbf601465e479ed269'
+ kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+
+ self.vm.set_console(console_index=1)
+ self.vm.add_args('-kernel', kernel_path,
+ '-append', 'printk.time=0 console=ttyS1')
+ self.vm.launch()
+ wait_for_console_pattern(self, 'TSC2005 driver initializing')
+
+ @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+ def test_n800(self):
+ """
+ :avocado: tags=arch:arm
+ :avocado: tags=machine:n800
+ """
+ self.__do_test_n8x0()
+
+ @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+ def test_n810(self):
+ """
+ :avocado: tags=arch:arm
+ :avocado: tags=machine:n810
+ """
+ self.__do_test_n8x0()
--
2.21.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/4] tests/acceptance: Add a test for the integratorcp arm machine
2020-02-25 17:24 [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests Philippe Mathieu-Daudé
2020-02-25 17:24 ` [PATCH 1/4] tests/acceptance: Add a test for the N800 and N810 arm machines Philippe Mathieu-Daudé
@ 2020-02-25 17:24 ` Philippe Mathieu-Daudé
2020-02-25 17:25 ` [PATCH 3/4] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() Philippe Mathieu-Daudé
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-25 17:24 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Thomas Huth, Philippe Mathieu-Daudé,
Philippe Mathieu-Daudé,
Wainer dos Santos Moschetta, qemu-arm
From: Thomas Huth <thuth@redhat.com>
There is a kernel and initrd available on github which we can use
for testing this machine.
Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Message-Id: <20200131170233.14584-1-thuth@redhat.com>
[PMD: Renamed test method, moved description from class to method]
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
MAINTAINERS | 1 +
tests/acceptance/machine_arm_integratorcp.py | 43 ++++++++++++++++++++
2 files changed, 44 insertions(+)
create mode 100644 tests/acceptance/machine_arm_integratorcp.py
diff --git a/MAINTAINERS b/MAINTAINERS
index 83e5a83418..06ceb57cba 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -614,6 +614,7 @@ S: Maintained
F: hw/arm/integratorcp.c
F: hw/misc/arm_integrator_debug.c
F: include/hw/misc/arm_integrator_debug.h
+F: tests/acceptance/machine_arm_integratorcp.py
MCIMX6UL EVK / i.MX6ul
M: Peter Maydell <peter.maydell@linaro.org>
diff --git a/tests/acceptance/machine_arm_integratorcp.py b/tests/acceptance/machine_arm_integratorcp.py
new file mode 100644
index 0000000000..d928ed79b4
--- /dev/null
+++ b/tests/acceptance/machine_arm_integratorcp.py
@@ -0,0 +1,43 @@
+# 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 import skipUnless
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+
+class IntegratorMachine(Test):
+
+ timeout = 90
+
+ @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+ def test_integratorcp_console(self):
+ """
+ Boots the Linux kernel and checks that the console is operational
+ :avocado: tags=arch:arm
+ :avocado: tags=machine:integratorcp
+ """
+ kernel_url = ('https://github.com/zayac/qemu-arm/raw/master/'
+ 'arm-test/kernel/zImage.integrator')
+ kernel_hash = '0d7adba893c503267c946a3cbdc63b4b54f25468'
+ kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+
+ initrd_url = ('https://github.com/zayac/qemu-arm/raw/master/'
+ 'arm-test/kernel/arm_root.img')
+ initrd_hash = 'b51e4154285bf784e017a37586428332d8c7bd8b'
+ initrd_path = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
+
+ self.vm.set_console()
+ self.vm.add_args('-kernel', kernel_path,
+ '-initrd', initrd_path,
+ '-append', 'printk.time=0 console=ttyAMA0')
+ self.vm.launch()
+ wait_for_console_pattern(self, 'Log in as root')
--
2.21.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/4] tests/acceptance: Extract boot_integratorcp() from test_integratorcp()
2020-02-25 17:24 [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests Philippe Mathieu-Daudé
2020-02-25 17:24 ` [PATCH 1/4] tests/acceptance: Add a test for the N800 and N810 arm machines Philippe Mathieu-Daudé
2020-02-25 17:24 ` [PATCH 2/4] tests/acceptance: Add a test for the integratorcp arm machine Philippe Mathieu-Daudé
@ 2020-02-25 17:25 ` Philippe Mathieu-Daudé
2020-02-25 17:25 ` [PATCH 4/4] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé
2020-02-28 16:05 ` [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests Peter Maydell
4 siblings, 0 replies; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-25 17:25 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Thomas Huth, Philippe Mathieu-Daudé,
Wainer dos Santos Moschetta, qemu-arm
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
As we want to re-use this code, extract it as a new function.
Since we are using the PL011 serial console, add a Avocado tag
to ease filtering of tests.
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
tests/acceptance/machine_arm_integratorcp.py | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/tests/acceptance/machine_arm_integratorcp.py b/tests/acceptance/machine_arm_integratorcp.py
index d928ed79b4..22afd3b82a 100644
--- a/tests/acceptance/machine_arm_integratorcp.py
+++ b/tests/acceptance/machine_arm_integratorcp.py
@@ -18,13 +18,7 @@ class IntegratorMachine(Test):
timeout = 90
- @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
- def test_integratorcp_console(self):
- """
- Boots the Linux kernel and checks that the console is operational
- :avocado: tags=arch:arm
- :avocado: tags=machine:integratorcp
- """
+ def boot_integratorcp(self):
kernel_url = ('https://github.com/zayac/qemu-arm/raw/master/'
'arm-test/kernel/zImage.integrator')
kernel_hash = '0d7adba893c503267c946a3cbdc63b4b54f25468'
@@ -40,4 +34,14 @@ def test_integratorcp_console(self):
'-initrd', initrd_path,
'-append', 'printk.time=0 console=ttyAMA0')
self.vm.launch()
+
+ @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+ def test_integratorcp_console(self):
+ """
+ Boots the Linux kernel and checks that the console is operational
+ :avocado: tags=arch:arm
+ :avocado: tags=machine:integratorcp
+ :avocado: tags=device:pl011
+ """
+ self.boot_integratorcp()
wait_for_console_pattern(self, 'Log in as root')
--
2.21.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer
2020-02-25 17:24 [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests Philippe Mathieu-Daudé
` (2 preceding siblings ...)
2020-02-25 17:25 ` [PATCH 3/4] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() Philippe Mathieu-Daudé
@ 2020-02-25 17:25 ` Philippe Mathieu-Daudé
2020-02-28 16:05 ` [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests Peter Maydell
4 siblings, 0 replies; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-25 17:25 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, qemu-arm, Philippe Mathieu-Daudé,
Wainer dos Santos Moschetta
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
Add a test that verifies the Tux logo is displayed on the framebuffer.
We simply follow the OpenCV "Template Matching with Multiple Objects"
tutorial, replacing Lionel Messi by Tux:
https://docs.opencv.org/4.2.0/d4/dc6/tutorial_py_template_matching.html
When OpenCV and NumPy are installed, this test can be run using:
$ AVOCADO_ALLOW_UNTRUSTED_CODE=hmmm \
avocado --show=app,framebuffer run -t device:framebuffer \
tests/acceptance/machine_arm_integratorcp.py
JOB ID : 8c46b0f8269242e87d738247883ea2a470df949e
JOB LOG : avocado/job-results/job-2020-01-31T21.38-8c46b0f/job.log
(1/1) tests/acceptance/machine_arm_integratorcp.py:IntegratorMachine.test_framebuffer_tux_logo:
framebuffer: found Tux at position [x, y] = (0, 0)
PASS (3.96 s)
RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME : 4.23 s
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Message-Id: <20200131211102.29612-3-f4bug@amsat.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
tests/acceptance/machine_arm_integratorcp.py | 52 ++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/tests/acceptance/machine_arm_integratorcp.py b/tests/acceptance/machine_arm_integratorcp.py
index 22afd3b82a..49c8ebff78 100644
--- a/tests/acceptance/machine_arm_integratorcp.py
+++ b/tests/acceptance/machine_arm_integratorcp.py
@@ -9,11 +9,26 @@
# later. See the COPYING file in the top-level directory.
import os
+import logging
from avocado import skipUnless
from avocado_qemu import Test
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
+
+
class IntegratorMachine(Test):
timeout = 90
@@ -45,3 +60,40 @@ def test_integratorcp_console(self):
"""
self.boot_integratorcp()
wait_for_console_pattern(self, 'Log in as root')
+
+ @skipUnless(NUMPY_AVAILABLE, 'Python NumPy not installed')
+ @skipUnless(CV2_AVAILABLE, 'Python OpenCV not installed')
+ @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+ def test_framebuffer_tux_logo(self):
+ """
+ Boot Linux and verify the Tux logo is displayed on the framebuffer.
+ :avocado: tags=arch:arm
+ :avocado: tags=machine:integratorcp
+ :avocado: tags=device:pl110
+ :avocado: tags=device:framebuffer
+ """
+ screendump_path = os.path.join(self.workdir, "screendump.pbm")
+ 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.boot_integratorcp()
+ framebuffer_ready = 'Console: switching to colour frame buffer device'
+ wait_for_console_pattern(self, framebuffer_ready)
+ self.vm.command('human-monitor-command', command_line='stop')
+ self.vm.command('human-monitor-command',
+ command_line='screendump %s' % screendump_path)
+ logger = logging.getLogger('framebuffer')
+
+ cpu_count = 1
+ match_threshold = 0.92
+ screendump_bgr = cv2.imread(screendump_path)
+ screendump_gray = cv2.cvtColor(screendump_bgr, cv2.COLOR_BGR2GRAY)
+ result = cv2.matchTemplate(screendump_gray, cv2.imread(tuxlogo_path, 0),
+ cv2.TM_CCOEFF_NORMED)
+ loc = np.where(result >= match_threshold)
+ tux_count = 0
+ for tux_count, pt in enumerate(zip(*loc[::-1]), start=1):
+ logger.debug('found Tux at position [x, y] = %s', pt)
+ self.assertGreaterEqual(tux_count, cpu_count)
--
2.21.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests
2020-02-25 17:24 [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests Philippe Mathieu-Daudé
` (3 preceding siblings ...)
2020-02-25 17:25 ` [PATCH 4/4] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé
@ 2020-02-28 16:05 ` Peter Maydell
4 siblings, 0 replies; 6+ messages in thread
From: Peter Maydell @ 2020-02-28 16:05 UTC (permalink / raw)
To: Philippe Mathieu-Daudé; +Cc: qemu-arm, QEMU Developers
On Tue, 25 Feb 2020 at 17:25, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
>
> This series collects patches adding tests for arm machines.
> All patches are reviewed.
>
> Philippe Mathieu-Daudé (2):
> tests/acceptance: Extract boot_integratorcp() from test_integratorcp()
> tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer
>
> Thomas Huth (2):
> tests/acceptance: Add a test for the N800 and N810 arm machines
> tests/acceptance: Add a test for the integratorcp arm machine
>
> MAINTAINERS | 2 +
> tests/acceptance/machine_arm_integratorcp.py | 99 ++++++++++++++++++++
> tests/acceptance/machine_arm_n8x0.py | 49 ++++++++++
> 3 files changed, 150 insertions(+)
> create mode 100644 tests/acceptance/machine_arm_integratorcp.py
> create mode 100644 tests/acceptance/machine_arm_n8x0.py
Applied to target-arm.next, thanks.
-- PMM
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-02-28 16:06 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-25 17:24 [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests Philippe Mathieu-Daudé
2020-02-25 17:24 ` [PATCH 1/4] tests/acceptance: Add a test for the N800 and N810 arm machines Philippe Mathieu-Daudé
2020-02-25 17:24 ` [PATCH 2/4] tests/acceptance: Add a test for the integratorcp arm machine Philippe Mathieu-Daudé
2020-02-25 17:25 ` [PATCH 3/4] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() Philippe Mathieu-Daudé
2020-02-25 17:25 ` [PATCH 4/4] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé
2020-02-28 16:05 ` [PATCH 0/4] tests/acceptance: nSeries and integrator/CP tests Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.