* [PATCH 0/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer @ 2020-01-31 21:11 Philippe Mathieu-Daudé 2020-01-31 21:11 ` [PATCH 1/2] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() Philippe Mathieu-Daudé 2020-01-31 21:11 ` [PATCH 2/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé 0 siblings, 2 replies; 8+ messages in thread From: Philippe Mathieu-Daudé @ 2020-01-31 21:11 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Thomas Huth, Eduardo Habkost, Dr . David Alan Gilbert, Wainer dos Santos Moschetta, Philippe Mathieu-Daudé, qemu-arm, Gerd Hoffmann, Cleber Rosa Hi, This is a simple Avocado test that use OpenCV to find the Tux logo on the framebuffer screen dump. It is very fast, around 4 seconds on my laptop. Tux found by OpenCV: https://pasteboard.co/ISz7kr8.png Regards, Phil. Based-on: <20200131170233.14584-1-thuth@redhat.com> "tests/acceptance: Add a test for the integratorcp arm machine" https://www.mail-archive.com/qemu-devel@nongnu.org/msg675828.html Philippe Mathieu-Daudé (2): tests/acceptance: Extract boot_integratorcp() from test_integratorcp() tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer tests/acceptance/machine_arm_integratorcp.py | 67 ++++++++++++++++++-- 1 file changed, 61 insertions(+), 6 deletions(-) -- 2.21.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() 2020-01-31 21:11 [PATCH 0/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé @ 2020-01-31 21:11 ` Philippe Mathieu-Daudé 2020-02-01 7:06 ` Thomas Huth 2020-02-03 14:00 ` Wainer dos Santos Moschetta 2020-01-31 21:11 ` [PATCH 2/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé 1 sibling, 2 replies; 8+ messages in thread From: Philippe Mathieu-Daudé @ 2020-01-31 21:11 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Thomas Huth, Eduardo Habkost, Dr . David Alan Gilbert, Wainer dos Santos Moschetta, Philippe Mathieu-Daudé, qemu-arm, Gerd Hoffmann, Cleber Rosa 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. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> --- tests/acceptance/machine_arm_integratorcp.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/acceptance/machine_arm_integratorcp.py b/tests/acceptance/machine_arm_integratorcp.py index 4f9ab40f2f..748819916d 100644 --- a/tests/acceptance/machine_arm_integratorcp.py +++ b/tests/acceptance/machine_arm_integratorcp.py @@ -19,12 +19,7 @@ class IntegratorMachine(Test): timeout = 90 - @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') - def test_integratorcp(self): - """ - :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 +35,13 @@ class IntegratorMachine(Test): '-initrd', initrd_path, '-append', 'printk.time=0 console=ttyAMA0') self.vm.launch() + + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') + def test_integratorcp(self): + """ + :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] 8+ messages in thread
* Re: [PATCH 1/2] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() 2020-01-31 21:11 ` [PATCH 1/2] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() Philippe Mathieu-Daudé @ 2020-02-01 7:06 ` Thomas Huth 2020-02-11 10:08 ` Philippe Mathieu-Daudé 2020-02-03 14:00 ` Wainer dos Santos Moschetta 1 sibling, 1 reply; 8+ messages in thread From: Thomas Huth @ 2020-02-01 7:06 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Peter Maydell, Eduardo Habkost, Dr . David Alan Gilbert, Wainer dos Santos Moschetta, qemu-arm, Gerd Hoffmann, Cleber Rosa On 31/01/2020 22.11, Philippe Mathieu-Daudé wrote: > 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. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > tests/acceptance/machine_arm_integratorcp.py | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/tests/acceptance/machine_arm_integratorcp.py b/tests/acceptance/machine_arm_integratorcp.py > index 4f9ab40f2f..748819916d 100644 > --- a/tests/acceptance/machine_arm_integratorcp.py > +++ b/tests/acceptance/machine_arm_integratorcp.py > @@ -19,12 +19,7 @@ class IntegratorMachine(Test): > > timeout = 90 > > - @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') > - def test_integratorcp(self): > - """ > - :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 +35,13 @@ class IntegratorMachine(Test): > '-initrd', initrd_path, > '-append', 'printk.time=0 console=ttyAMA0') I wonder whether you might want to move the "console=ttyAMA0" to the test_integratorcp(), too, to get the text in the framebuffer in the second test instead? > self.vm.launch() > + > + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') > + def test_integratorcp(self): > + """ > + :avocado: tags=arch:arm > + :avocado: tags=machine:integratorcp > + :avocado: tags=device:pl011 > + """ > + self.boot_integratorcp() > wait_for_console_pattern(self, 'Log in as root') > Anyway, patch looks fine, Reviewed-by: Thomas Huth <thuth@redhat.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() 2020-02-01 7:06 ` Thomas Huth @ 2020-02-11 10:08 ` Philippe Mathieu-Daudé 0 siblings, 0 replies; 8+ messages in thread From: Philippe Mathieu-Daudé @ 2020-02-11 10:08 UTC (permalink / raw) To: Thomas Huth, Philippe Mathieu-Daudé, qemu-devel, Peter Maydell Cc: Eduardo Habkost, Dr . David Alan Gilbert, Wainer dos Santos Moschetta, qemu-arm, Gerd Hoffmann, Cleber Rosa On 2/1/20 8:06 AM, Thomas Huth wrote: > On 31/01/2020 22.11, Philippe Mathieu-Daudé wrote: >> 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. >> >> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> >> --- >> tests/acceptance/machine_arm_integratorcp.py | 16 ++++++++++------ >> 1 file changed, 10 insertions(+), 6 deletions(-) >> >> diff --git a/tests/acceptance/machine_arm_integratorcp.py b/tests/acceptance/machine_arm_integratorcp.py >> index 4f9ab40f2f..748819916d 100644 >> --- a/tests/acceptance/machine_arm_integratorcp.py >> +++ b/tests/acceptance/machine_arm_integratorcp.py >> @@ -19,12 +19,7 @@ class IntegratorMachine(Test): >> >> timeout = 90 >> >> - @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') >> - def test_integratorcp(self): >> - """ >> - :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 +35,13 @@ class IntegratorMachine(Test): >> '-initrd', initrd_path, >> '-append', 'printk.time=0 console=ttyAMA0') > > I wonder whether you might want to move the "console=ttyAMA0" to the > test_integratorcp(), too, to get the text in the framebuffer in the > second test instead? This is not a test, but a common method used by both tests, so both use it. > >> self.vm.launch() >> + >> + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') >> + def test_integratorcp(self): >> + """ >> + :avocado: tags=arch:arm >> + :avocado: tags=machine:integratorcp >> + :avocado: tags=device:pl011 >> + """ >> + self.boot_integratorcp() >> wait_for_console_pattern(self, 'Log in as root') >> > > Anyway, patch looks fine, > > Reviewed-by: Thomas Huth <thuth@redhat.com> Thanks! Peter, Thomas previous patch and these series are reviewed. Can you queue them in your target-arm.next tree? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() 2020-01-31 21:11 ` [PATCH 1/2] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() Philippe Mathieu-Daudé 2020-02-01 7:06 ` Thomas Huth @ 2020-02-03 14:00 ` Wainer dos Santos Moschetta 1 sibling, 0 replies; 8+ messages in thread From: Wainer dos Santos Moschetta @ 2020-02-03 14:00 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Peter Maydell, Thomas Huth, Eduardo Habkost, Dr . David Alan Gilbert, qemu-arm, Gerd Hoffmann, Cleber Rosa On 1/31/20 7:11 PM, Philippe Mathieu-Daudé wrote: > 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. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > tests/acceptance/machine_arm_integratorcp.py | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com> > > diff --git a/tests/acceptance/machine_arm_integratorcp.py b/tests/acceptance/machine_arm_integratorcp.py > index 4f9ab40f2f..748819916d 100644 > --- a/tests/acceptance/machine_arm_integratorcp.py > +++ b/tests/acceptance/machine_arm_integratorcp.py > @@ -19,12 +19,7 @@ class IntegratorMachine(Test): > > timeout = 90 > > - @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') > - def test_integratorcp(self): > - """ > - :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 +35,13 @@ class IntegratorMachine(Test): > '-initrd', initrd_path, > '-append', 'printk.time=0 console=ttyAMA0') > self.vm.launch() > + > + @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') > + def test_integratorcp(self): > + """ > + :avocado: tags=arch:arm > + :avocado: tags=machine:integratorcp > + :avocado: tags=device:pl011 > + """ > + self.boot_integratorcp() > wait_for_console_pattern(self, 'Log in as root') ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer 2020-01-31 21:11 [PATCH 0/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé 2020-01-31 21:11 ` [PATCH 1/2] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() Philippe Mathieu-Daudé @ 2020-01-31 21:11 ` Philippe Mathieu-Daudé 2020-02-01 7:24 ` Thomas Huth 2020-02-03 14:05 ` Wainer dos Santos Moschetta 1 sibling, 2 replies; 8+ messages in thread From: Philippe Mathieu-Daudé @ 2020-01-31 21:11 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Thomas Huth, Eduardo Habkost, Dr . David Alan Gilbert, Wainer dos Santos Moschetta, Philippe Mathieu-Daudé, qemu-arm, Gerd Hoffmann, Cleber Rosa 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> --- The resulting match is https://pasteboard.co/ISz7kr8.png For matching SMP machines, these suggestion might work: https://stackoverflow.com/questions/50579050/template-matching-with-multiple-objects-in-opencv-python --- tests/acceptance/machine_arm_integratorcp.py | 51 ++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/tests/acceptance/machine_arm_integratorcp.py b/tests/acceptance/machine_arm_integratorcp.py index 748819916d..a706fe1b44 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): """Boots the Linux kernel and checks that the console is operational""" @@ -45,3 +60,39 @@ class IntegratorMachine(Test): """ 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): + """ + :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] 8+ messages in thread
* Re: [PATCH 2/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer 2020-01-31 21:11 ` [PATCH 2/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé @ 2020-02-01 7:24 ` Thomas Huth 2020-02-03 14:05 ` Wainer dos Santos Moschetta 1 sibling, 0 replies; 8+ messages in thread From: Thomas Huth @ 2020-02-01 7:24 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Peter Maydell, Eduardo Habkost, Dr . David Alan Gilbert, Wainer dos Santos Moschetta, qemu-arm, Gerd Hoffmann, Aleksandar Markovic, Cleber Rosa On 31/01/2020 22.11, Philippe Mathieu-Daudé wrote: > 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 What a cool idea :-) If you like, there are some more images with Tux in the QEMU advent calendar 2018 which you could use for testing the framebuffer: https://www.qemu-advent-calendar.org/2018/download/day13.tar.xz https://www.qemu-advent-calendar.org/2018/download/day15.tar.xz https://www.qemu-advent-calendar.org/2018/download/day16.tar.xz https://www.qemu-advent-calendar.org/2018/download/day19.tar.xz These two use a slightly different tux: https://www.qemu-advent-calendar.org/2018/download/day09.tar.xz https://www.qemu-advent-calendar.org/2018/download/day11.tar.xz And day 22 (MIPS64) and 23 (SPARC64) use a framebuffer, too, but they seem to be broken with the current version from the git master branch. Thomas ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer 2020-01-31 21:11 ` [PATCH 2/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé 2020-02-01 7:24 ` Thomas Huth @ 2020-02-03 14:05 ` Wainer dos Santos Moschetta 1 sibling, 0 replies; 8+ messages in thread From: Wainer dos Santos Moschetta @ 2020-02-03 14:05 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Peter Maydell, Thomas Huth, Eduardo Habkost, Dr . David Alan Gilbert, qemu-arm, Gerd Hoffmann, Cleber Rosa On 1/31/20 7:11 PM, Philippe Mathieu-Daudé wrote: > 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: So Tux > Messi??!! I knew that! > 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> > --- > The resulting match is https://pasteboard.co/ISz7kr8.png > > For matching SMP machines, these suggestion might work: > https://stackoverflow.com/questions/50579050/template-matching-with-multiple-objects-in-opencv-python > --- > tests/acceptance/machine_arm_integratorcp.py | 51 ++++++++++++++++++++ > 1 file changed, 51 insertions(+) Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com> > > diff --git a/tests/acceptance/machine_arm_integratorcp.py b/tests/acceptance/machine_arm_integratorcp.py > index 748819916d..a706fe1b44 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): > """Boots the Linux kernel and checks that the console is operational""" > > @@ -45,3 +60,39 @@ class IntegratorMachine(Test): > """ > 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): > + """ > + :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) ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-02-11 10:09 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-01-31 21:11 [PATCH 0/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé 2020-01-31 21:11 ` [PATCH 1/2] tests/acceptance: Extract boot_integratorcp() from test_integratorcp() Philippe Mathieu-Daudé 2020-02-01 7:06 ` Thomas Huth 2020-02-11 10:08 ` Philippe Mathieu-Daudé 2020-02-03 14:00 ` Wainer dos Santos Moschetta 2020-01-31 21:11 ` [PATCH 2/2] tests/acceptance/integratorcp: Verify Tux is displayed on framebuffer Philippe Mathieu-Daudé 2020-02-01 7:24 ` Thomas Huth 2020-02-03 14:05 ` Wainer dos Santos Moschetta
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).