qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU


From: Jag Raman
Subject: Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU
Date: Thu, 7 Jan 2021 12:23:49 -0500


> On Jan 6, 2021, at 8:51 AM, Marc-André Lureau <marcandre.lureau@gmail.com> 
> wrote:
> 
> Hi
> 
> On Tue, Dec 29, 2020 at 8:19 PM Jag Raman <jag.raman@oracle.com> wrote:
> 
> 
> > On Dec 23, 2020, at 1:49 PM, Elena Ufimtseva <elena.ufimtseva@oracle.com> 
> > wrote:
> > 
> > On Wed, Dec 23, 2020 at 03:01:24PM +0400, Marc-André Lureau wrote:
> >> Hi
> >> 
> >> On Wed, Dec 23, 2020 at 10:45 AM <elena.ufimtseva@oracle.com> wrote:
> >> 
> >>> From: Jagannathan Raman <jag.raman@oracle.com>
> >>> 
> >>> Runs the Avocado acceptance test to check if a
> >>> remote lsi53c895a device gets identified by the guest.
> >>> 
> >>> Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
> >>> Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
> >>> Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
> >>> ---
> >>> tests/acceptance/multiprocess.py | 104 +++++++++++++++++++++++++++++++
> >>> 1 file changed, 104 insertions(+)
> >>> create mode 100644 tests/acceptance/multiprocess.py
> >>> 
> >>> diff --git a/tests/acceptance/multiprocess.py
> >>> b/tests/acceptance/multiprocess.py
> >>> new file mode 100644
> >>> index 0000000000..d10b4d2c05
> >>> --- /dev/null
> >>> +++ b/tests/acceptance/multiprocess.py
> >>> @@ -0,0 +1,104 @@
> >>> +# Test for multiprocess qemu
> >>> +#
> >>> +# This work is licensed under the terms of the GNU GPL, version 2 or
> >>> +# later.  See the COPYING file in the top-level directory.
> >>> +
> >>> +
> >>> +from avocado_qemu import Test
> >>> +from avocado_qemu import wait_for_console_pattern
> >>> +from avocado_qemu import exec_command_and_wait_for_pattern
> >>> +
> >>> +from qemu.accel import kvm_available
> >>> +
> >>> +import os
> >>> +import socket
> >>> +
> >>> +ACCEL_NOT_AVAILABLE_FMT = "%s accelerator does not seem to be available"
> >>> +KVM_NOT_AVAILABLE = ACCEL_NOT_AVAILABLE_FMT % "KVM"
> >>> +
> >>> +class Multiprocess(Test):
> >>> +    """
> >>> +    :avocado: tags=multiprocess
> >>> +    """
> >>> +    KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '
> >>> +
> >>> +    def wait_for_console_pattern(self, success_message, vm=None):
> >>> +        wait_for_console_pattern(self, success_message,
> >>> +                                 failure_message='Kernel panic - not
> >>> syncing',
> >>> +                                 vm=vm)
> >>> +
> >>> +    def do_test(self, kernel_url, initrd_url, kernel_command_line,
> >>> +                machine_type):
> >>> +        if not kvm_available(self.arch, self.qemu_bin):
> >>> +            self.cancel(KVM_NOT_AVAILABLE)
> >>> +
> >>> +        # Create socketpair to connect proxy and remote processes
> >>> +        proxy_sock, remote_sock = socket.socketpair(socket.AF_UNIX,
> >>> +                                                    socket.SOCK_STREAM)
> >>> +        os.set_inheritable(proxy_sock.fileno(), True)
> >>> +        os.set_inheritable(remote_sock.fileno(), True)
> >>> +
> >>> +        kernel_path = self.fetch_asset(kernel_url)
> >>> +        initrd_path = self.fetch_asset(initrd_url)
> >>> +
> >>> +        # Create remote process
> >>> +        remote_vm = self.get_vm()
> >>> +        remote_vm.add_args('-machine', 'x-remote')
> >>> +        remote_vm.add_args('-nodefaults')
> >>> +        remote_vm.add_args('-device', 'lsi53c895a,id=lsi1')
> >>> +        remote_vm.add_args('-object', 'x-remote-object,id=robj1,'
> >>> +                           'devid=lsi1,fd='+str(remote_sock.fileno()))
> >>> +        remote_vm.launch()
> >>> +
> >>> +        # Create proxy process
> >>> +        self.vm.set_console()
> >>> +        self.vm.add_args('-machine', machine_type)
> >>> +        self.vm.add_args('-accel', 'kvm')
> >>> +        self.vm.add_args('-cpu', 'host')
> >>> +        self.vm.add_args("-object",
> >>> +                         "memory-backend-memfd,id=sysmem-file,size=2G")
> >>> +        self.vm.add_args("--numa", "node,memdev=sysmem-file")
> >>> +        self.vm.add_args("-m", "2048")
> >>> +        self.vm.add_args('-kernel', kernel_path,
> >>> +                         '-initrd', initrd_path,
> >>> +                         '-append', kernel_command_line)
> >>> +        self.vm.add_args('-device',
> >>> +                         'x-pci-proxy-dev,'
> >>> +                         'id=lsi1,fd='+str(proxy_sock.fileno()))
> >>> +        self.vm.launch()
> >>> +        self.wait_for_console_pattern("as init process")
> >>> +        exec_command_and_wait_for_pattern(self, "mount -t sysfs sysfs
> >>> /sys",
> >>> +                                          '', '')
> >>> +        exec_command_and_wait_for_pattern(self,
> >>> +                                          "cat
> >>> /sys/bus/pci/devices/*/uevent",
> >>> +                                          "PCI_ID=1000:0012", '')
> >>> +
> >>> +    def test_multiprocess_x86_64(self):
> >>> +        """
> >>> +        :avocado: tags=arch:x86_64
> >>> +        """
> >>> +        kernel_url = ('
> >>> https://archives.fedoraproject.org/pub/archive/fedora'
> >>> +                      '/linux/releases/31/Everything/x86_64/os/images'
> >>> +                      '/pxeboot/vmlinuz')
> >>> +        initrd_url = ('
> >>> https://archives.fedoraproject.org/pub/archive/fedora'
> >>> +                      '/linux/releases/31/Everything/x86_64/os/images'
> >>> +                      '/pxeboot/initrd.img')
> >>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> >>> +                               'console=ttyS0 rdinit=/bin/bash')
> >>> +        machine = 'pc'
> >>> +        self.do_test(kernel_url, initrd_url, kernel_command_line, 
> >>> machine)
> >>> +
> >>> +    def test_multiprocess_aarch64(self):
> >>> +        """
> >>> +        :avocado: tags=arch:aarch64
> >>> +        """
> >>> +        kernel_url = ('
> >>> https://archives.fedoraproject.org/pub/archive/fedora'
> >>> +                      '/linux/releases/31/Everything/aarch64/os/images'
> >>> +                      '/pxeboot/vmlinuz')
> >>> +        initrd_url = ('
> >>> https://archives.fedoraproject.org/pub/archive/fedora'
> >>> +                      '/linux/releases/31/Everything/aarch64/os/images'
> >>> +                      '/pxeboot/initrd.img')
> >>> +        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> >>> +                               'rdinit=/bin/bash console=ttyAMA0')
> >>> +        machine_type = 'virt,gic-version=3'
> >>> +        self.do_test(kernel_url, initrd_url, kernel_command_line,
> >>> machine_type)
> >>> --
> >>> 2.25.GIT
> >>> 
> >>> 
> >> The test looks quite nice, thanks. However, it times out for me. I have
> >> very limited experience with avocado. Any idea?
> > 
> > Thanks Marc-Andre!
> > 
> >> (13/40)
> >> tests/acceptance/multiprocess.py:Multiprocess.test_multiprocess_x86_64:
> >> ERROR: timed out (211.81 s)
> > 
> > Can you check what is in the log file?
> > Should show the log file name before it gets cancelled.
> > 
> > I have it on my system at 
> > $HOME/avocado/job-results/job-2020-12-23T10.37-452c8ab/job.log.
> 
> Hi Marc-Andre,
> 
> Thank you very much for taking a loot at it. If you are able to share the 
> test log,
> that would be helpful to see what is causing the timeout.
> 
> I tested it again, and it works now. No idea what happened.
> 
> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> 

Thank you for confirming, Marc-Andre!
> 




reply via email to

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