qemu-arm
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]