qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH v3 6/6] tests/acceptance: Add test_sh4_r2d i


From: Cleber Rosa
Subject: Re: [Qemu-devel] [RFC PATCH v3 6/6] tests/acceptance: Add test_sh4_r2d in BootLinuxTracing
Date: Fri, 19 Oct 2018 20:02:55 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0


On 10/13/18 11:15 AM, Philippe Mathieu-Daudé wrote:
> Similar to the test_x86_64_pc test, this boots a Linux kernel on a
> R2D board (SH4 little-endian) and verify the usb is working by looking
> at the usb trace events. Thus this test requires the QEMU binary to be
> compiled with:
> 
>   $ configure ... --enable-trace-backends=log
> 
> This test also requires the dpkg-deb tool (apt/dnf install dpkg) to
> extract the kernel from the Debian package.
> 
>   $ avocado --show=app,trace run -p arch=sh4 
> tests/acceptance/boot_linux_console.py
>   JOB ID     : dc45be27f5d1edb8289a1ede139e107bbc55b045
>   JOB LOG    : 
> /home/phil/avocado/job-results/job-2018-10-13T14.46-dc45be2/job.log
>    (1/5) 
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_x86_64_pc: 
> CANCEL: Currently specific to the x86_64 target arch (0.00 s)
>    (2/5) 
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_mips_4kc_malta: 
> CANCEL: Currently specific to the sh4 target arch (0.00 s)
>    (3/5) 
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_mipsel_5kc_malta:
>  CANCEL: Currently specific to the sh4 target arch (0.00 s)
>    (4/5) 
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_sh4_r2d: SKIP: 
> console not working on r2d machine
>    (5/5) 
> tests/acceptance/boot_linux_console.py:BootLinuxTracing.test_sh4_r2d:  /
>   trace: address@hidden:usb_ohci_init_time usb_bit_time=1000000 
> usb_frame_time=83
>   trace: address@hidden:usb_ohci_port_attach port #0
>   trace: address@hidden:usb_ohci_reset sysbus-ohci
>   trace: address@hidden:usb_ohci_stop sysbus-ohci: USB Suspended
>   trace: address@hidden:usb_ohci_stop sysbus-ohci: USB Suspended
>   trace: address@hidden:usb_ohci_port_detach port #0
>   trace: address@hidden:usb_ohci_port_attach port #0
>   trace: address@hidden:usb_ohci_reset sysbus-ohci
>   trace: address@hidden:usb_ohci_stop sysbus-ohci: USB Suspended
>   trace: address@hidden:usb_ohci_set_ctl sysbus-ohci: new state 0x80
>   trace: address@hidden:usb_ohci_start sysbus-ohci: USB Operational
>   trace: address@hidden:usb_ohci_hub_power_up powered up all ports
>   PASS (2.43 s)
>   RESULTS    : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | 
> CANCEL 3
>   JOB TIME   : 2.67 s
> 

And with similar changes, on this point of this series:

$ avocado run tests/acceptance/boot_linux_console.py
JOB ID     : 857fef1b8c0ce59a79d452f27e996ed2743404b1
JOB LOG    :
/home/cleber/avocado/job-results/job-2018-10-19T19.58-857fef1/job.log
 (1/5)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_x86_64_pc:
PASS (2.04 s)
 (2/5)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_mips_4kc_malta:
PASS (0.57 s)
 (3/5)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_mipsel_5kc_malta:
PASS (0.59 s)
 (4/5)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_sh4_r2d:
SKIP: console not working on r2d machine
 (5/5)
tests/acceptance/boot_linux_console.py:BootLinuxTracing.test_sh4_r2d:
PASS (1.01 s)
RESULTS    : PASS 4 | ERROR 0 | FAIL 0 | SKIP 1 | WARN 0 | INTERRUPT 0 |
CANCEL 0
JOB TIME   : 4.57 s

- Cleber.

> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> ---
>  tests/acceptance/boot_linux_console.py | 64 ++++++++++++++++++++++++++
>  1 file changed, 64 insertions(+)
> 
> diff --git a/tests/acceptance/boot_linux_console.py 
> b/tests/acceptance/boot_linux_console.py
> index 8f99cc0d7c..e11993bf98 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -8,11 +8,22 @@
>  # 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
>  import logging
>  import subprocess
>  
>  from avocado import skip
>  from avocado_qemu import Test
> +from avocado.utils.wait import wait_for
> +
> +
> +def read_stream_for_string(stream, expected_string, logger=None):
> +    msg = stream.readline()
> +    if len(msg) == 0:
> +        return False
> +    if logger:
> +        logger.debug(msg.strip())
> +    return expected_string in msg
>  
>  
>  class BootLinuxConsole(Test):
> @@ -185,3 +196,56 @@ class BootLinuxConsole(Test):
>                  break
>              if 'Kernel panic - not syncing' in msg:
>                  self.fail("Kernel panic reached")
> +
> +class BootLinuxTracing(Test):
> +    """
> +    Boots a Linux kernel and checks that via the Tracing framework that
> +    a specific trace events occured, demostrating the kernel is operational.
> +
> +    :avocado: enable
> +    """
> +
> +    timeout = 60
> +
> +    def test_sh4_r2d(self):
> +        """
> +        This test requires the dpkg-deb tool (apt/dnf install dpkg) to 
> extract
> +        the kernel from the Debian package.
> +        This test also requires the QEMU binary to be compiled with:
> +
> +          $ configure ... --enable-trace-backends=log
> +
> +        The kernel can be rebuilt using this Debian kernel source [1] and
> +        following the instructions on [2].
> +
> +        [1] 
> https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official
> +        [2] 
> http://snapshot.debian.org/package/linux-2.6/2.6.32-30/#linux-source-2.6.32_2.6.32-30
> +
> +        :avocado: tags=arch:sh4
> +        """
> +        if self.arch != 'sh4':
> +            self.cancel('Currently specific to the %s target arch' % 
> self.arch)
> +
> +        deb_url = ('http://snapshot.debian.org/archive/'
> +                   'debian-ports/20110116T065852Z/pool-sh4/main/l/'
> +                   
> 'linux-2.6/linux-image-2.6.32-5-sh7751r_2.6.32-30_sh4.deb')
> +        deb_hash = '8025e503319dc8ad786756e3afaa8eb868e9ef59'
> +        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
> +        subprocess.check_call(['dpkg-deb', '--extract', deb_path, 
> self.workdir])
> +        kernel_path = self.workdir + '/boot/vmlinuz-2.6.32-5-sh7751r'
> +        trace_path = os.path.join(self.workdir, 'trace.log')
> +        trace_logger = logging.getLogger('trace')
> +
> +        self.vm.set_arch(self.arch)
> +        self.vm.set_machine('r2d')
> +        kernel_command_line = 'noiotrap'
> +        self.vm.add_args('-trace', "enable=usb_ohci_*,file=" + trace_path,
> +                         '-kernel', kernel_path,
> +                         '-append', kernel_command_line)
> +
> +        self.vm.launch()
> +        if not wait_for(read_stream_for_string, timeout=15, step=0,
> +                        args=(open(trace_path),
> +                              'usb_ohci_hub_power_up powered up all ports',
> +                              trace_logger)):
> +            self.fail("Machine failed to boot")
> 

-- 
Cleber Rosa
[ Sr Software Engineer - Virtualization Team - Red Hat ]
[ Avocado Test Framework - avocado-framework.github.io ]
[  7ABB 96EB 8B46 B94D 5E0F  E9BB 657E 8D33 A5F2 09F3  ]



reply via email to

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