[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/1] tests/acceptance: Count Raspberry Pi logos displayed on
From: |
Eduardo Habkost |
Subject: |
Re: [PATCH 1/1] tests/acceptance: Count Raspberry Pi logos displayed on framebuffer |
Date: |
Mon, 3 Feb 2020 10:48:25 -0500 |
On Mon, Feb 03, 2020 at 12:21:53PM -0200, Wainer dos Santos Moschetta wrote:
>
> On 1/31/20 9:24 PM, Philippe Mathieu-Daudé wrote:
> > Add a test that verifies that each core properly displays the
> > Raspberry Pi logo on the framebuffer device.
> >
> > We simply follow the OpenCV "Template Matching with Multiple Objects"
> > tutorial, replacing Lionel Messi by a raspberrry:
> > 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 --show=app,framebuffer run -t device:bcm2835-fb
> > tests/acceptance/
> > JOB ID : 9bbbc54c0a6fa180348d0b5305507f76852b4da2
> > JOB LOG : avocado/job-results/job-2020-01-31T23.48-9bbbc54/job.log
> > (1/1)
> > tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_raspi2_framebuffer_logo:
> > framebuffer: found raspberry at position (x, y) = (0, 0)
> > framebuffer: found raspberry at position (x, y) = (71, 0)
> > framebuffer: found raspberry at position (x, y) = (142, 0)
> > framebuffer: found raspberry at position (x, y) = (213, 0)
> > PASS (11.06 s)
> > RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 |
> > CANCEL 0
> > JOB TIME : 11.39 s
> >
> > Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> > ---
> > The resulting match can be visualised at https://pasteboard.co/ISzNHtx.png
> > ---
> > tests/acceptance/boot_linux_console.py | 62 ++++++++++++++++++++++++++
> > 1 file changed, 62 insertions(+)
> >
> > diff --git a/tests/acceptance/boot_linux_console.py
> > b/tests/acceptance/boot_linux_console.py
> > index e40b84651b..4e69a83a12 100644
> > --- a/tests/acceptance/boot_linux_console.py
> > +++ b/tests/acceptance/boot_linux_console.py
> > @@ -12,6 +12,7 @@ import os
> > import lzma
> > import gzip
> > import shutil
> > +import logging
> > from avocado import skipUnless
> > from avocado_qemu import Test
> > @@ -21,6 +22,19 @@ from avocado.utils import process
> > from avocado.utils import archive
> > +NUMPY_AVAILABLE = True
> > +try:
> > + import numpy as np
> > +except ImportError:
> > + NUMPY_AVAILABLE = False
> > +
> > +CV2_AVAILABLE = True
> > +try:
> > + import cv2
> > +except ImportError:
> > + CV2_AVAILABLE = False
> > +
> > +
>
>
> Those Python packages are only needed by this new test case, and the test is
> likely to be moved to a separate file soon. So I suggest to put those
> availability checks inside the test method, so easing the future removal.
> And use self.cancel() to cancel the test (if the case).
>
>
> > class BootLinuxConsole(Test):
> > """
> > Boots a Linux kernel and checks that the console is operational and
> > the
> > @@ -360,6 +374,54 @@ class BootLinuxConsole(Test):
> > """
> > self.do_test_arm_raspi2(0)
> > + @skipUnless(NUMPY_AVAILABLE, 'Python NumPy not installed')
> > + @skipUnless(CV2_AVAILABLE, 'Python OpenCV not installed')
> > + def test_arm_raspi2_framebuffer_logo(self):
> > + """
> > + :avocado: tags=arch:arm
> > + :avocado: tags=machine:raspi2
> > + :avocado: tags=device:bcm2835-fb
> > + """
> > + screendump_path = os.path.join(self.workdir, 'screendump.pbm')
> > + rpilogo_url = ('https://github.com/raspberrypi/linux/raw/'
> > + 'raspberrypi-kernel_1.20190517-1/'
> > + 'drivers/video/logo/logo_linux_clut224.ppm')
> > + rpilogo_hash = 'fff3cc20c6030acce0953147f9baac43f44ed6b0'
> > + rpilogo_path = self.fetch_asset(rpilogo_url,
> > asset_hash=rpilogo_hash)
> > + deb_url = ('http://archive.raspberrypi.org/debian/'
> > + 'pool/main/r/raspberrypi-firmware/'
> > + 'raspberrypi-kernel_1.20190215-1_armhf.deb')
> > + deb_hash = 'cd284220b32128c5084037553db3c482426f3972'
> > + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
> > + kernel_path = self.extract_from_deb(deb_path, '/boot/kernel7.img')
> > + dtb_path = self.extract_from_deb(deb_path,
> > '/boot/bcm2709-rpi-2-b.dtb')
> > +
> > + self.vm.set_console()
> > + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> > + 'earlycon=pl011,0x3f201000 console=ttyAMA0')
> > + self.vm.add_args('-kernel', kernel_path,
> > + '-dtb', dtb_path,
> > + '-append', kernel_command_line)
> > + self.vm.launch()
> > + 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_cores_count = 4
>
>
> Won't this fail if host cpu cores are less than 4?
The number of cores in the host shouldn't matter. raspi2 has
min_cpus = max_cpus = BCM283X_NCPUS = 4.
--
Eduardo