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é <f4...@amsat.org> > > --- > > 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