All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] multi-process: Acceptance test for multiprocess QEMU
@ 2020-12-23  6:44 elena.ufimtseva
  2020-12-23 11:01 ` Marc-André Lureau
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: elena.ufimtseva @ 2020-12-23  6:44 UTC (permalink / raw)
  To: qemu-devel
  Cc: elena.ufimtseva, fam, swapnil.ingle, john.g.johnson, kraxel,
	jag.raman, quintela, mst, armbru, kanth.ghatraju, felipe, thuth,
	ehabkost, konrad.wilk, dgilbert, alex.williamson, stefanha,
	thanos.makatos, kwolf, berrange, mreitz, ross.lagerwall,
	marcandre.lureau, pbonzini

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



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU
  2020-12-23  6:44 [PATCH] multi-process: Acceptance test for multiprocess QEMU elena.ufimtseva
@ 2020-12-23 11:01 ` Marc-André Lureau
  2020-12-23 18:49   ` Elena Ufimtseva
  2020-12-23 18:51   ` Wainer dos Santos Moschetta
  2020-12-23 19:16 ` Wainer dos Santos Moschetta
  2021-02-22 14:32 ` Philippe Mathieu-Daudé
  2 siblings, 2 replies; 9+ messages in thread
From: Marc-André Lureau @ 2020-12-23 11:01 UTC (permalink / raw)
  To: Elena Ufimtseva
  Cc: Fam Zheng, John G Johnson, Swapnil Ingle, Michael S. Tsirkin,
	QEMU, Gerd Hoffmann, Jagannathan Raman, Juan Quintela,
	Markus Armbruster, Kanth Ghatraju, Felipe Franciosi, Thomas Huth,
	Eduardo Habkost, Konrad Rzeszutek Wilk, Dr. David Alan Gilbert,
	Alex Williamson, Stefan Hajnoczi, Paolo Bonzini, Kevin Wolf,
	Daniel P. Berrange, Max Reitz, Ross Lagerwall, Thanos Makatos

[-- Attachment #1: Type: text/plain, Size: 5980 bytes --]

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?
 (13/40)
tests/acceptance/multiprocess.py:Multiprocess.test_multiprocess_x86_64:
ERROR: timed out (211.81 s)


-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 8347 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU
  2020-12-23 11:01 ` Marc-André Lureau
@ 2020-12-23 18:49   ` Elena Ufimtseva
  2020-12-29 16:17     ` Jag Raman
  2020-12-23 18:51   ` Wainer dos Santos Moschetta
  1 sibling, 1 reply; 9+ messages in thread
From: Elena Ufimtseva @ 2020-12-23 18:49 UTC (permalink / raw)
  To: Marc-André Lureau
  Cc: Fam Zheng, John G Johnson, Swapnil Ingle, Michael S. Tsirkin,
	QEMU, Gerd Hoffmann, Jagannathan Raman, Juan Quintela,
	Markus Armbruster, Kanth Ghatraju, Felipe Franciosi, Thomas Huth,
	Eduardo Habkost, Konrad Rzeszutek Wilk, Dr. David Alan Gilbert,
	Alex Williamson, Stefan Hajnoczi, Paolo Bonzini, Kevin Wolf,
	Daniel P. Berrange, Max Reitz, Ross Lagerwall, Thanos Makatos

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.

Thank you!

Elena
> 
> 
> -- 
> Marc-André Lureau


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU
  2020-12-23 11:01 ` Marc-André Lureau
  2020-12-23 18:49   ` Elena Ufimtseva
@ 2020-12-23 18:51   ` Wainer dos Santos Moschetta
  1 sibling, 0 replies; 9+ messages in thread
From: Wainer dos Santos Moschetta @ 2020-12-23 18:51 UTC (permalink / raw)
  To: Marc-André Lureau, Elena Ufimtseva
  Cc: Fam Zheng, John G Johnson, Swapnil Ingle, Michael S. Tsirkin,
	QEMU, Gerd Hoffmann, Jagannathan Raman, Juan Quintela,
	Markus Armbruster, Kanth Ghatraju, Felipe Franciosi, Thomas Huth,
	Eduardo Habkost, Konrad Rzeszutek Wilk, Dr. David Alan Gilbert,
	Alex Williamson, Stefan Hajnoczi, Thanos Makatos, Kevin Wolf,
	Daniel P. Berrange, Max Reitz, Ross Lagerwall, Paolo Bonzini

[-- Attachment #1: Type: text/plain, Size: 8148 bytes --]

Hi,

On 12/23/20 8:01 AM, Marc-André Lureau wrote:
> Hi
>
> On Wed, Dec 23, 2020 at 10:45 AM <elena.ufimtseva@oracle.com 
> <mailto:elena.ufimtseva@oracle.com>> wrote:
>
>     From: Jagannathan Raman <jag.raman@oracle.com
>     <mailto: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
>     <mailto:elena.ufimtseva@oracle.com>>
>     Signed-off-by: John G Johnson <john.g.johnson@oracle.com
>     <mailto:john.g.johnson@oracle.com>>
>     Signed-off-by: Jagannathan Raman <jag.raman@oracle.com
>     <mailto: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
>     <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
>     <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
>     <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
>     <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?
>  (13/40) 
> tests/acceptance/multiprocess.py:Multiprocess.test_multiprocess_x86_64: 
> ERROR: timed out (211.81 s)

Perhaps the test is stuck somewhere and it hits the default Avocado 
timeout. You can look at the test logs at:

<BUILD_DIR>/tests/results/latest/test-results/13-tests_acceptance_multiprocess.py_Multiprocess.test_multiprocess_x86_64/debug.log

If you feel that the test needs more time to finish then you can 
increase the timeout in the code:

$ git diff
diff --git a/tests/acceptance/multiprocess.py 
b/tests/acceptance/multiprocess.py
index d10b4d2c05..83d97079af 100644
--- a/tests/acceptance/multiprocess.py
+++ b/tests/acceptance/multiprocess.py
@@ -22,6 +22,8 @@ class Multiprocess(Test):
      """
      KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '

+    timeout = 300
+
      def wait_for_console_pattern(self, success_message, vm=None):
          wait_for_console_pattern(self, success_message,
                                   failure_message='Kernel panic - not 
syncing',


For the records, it raw successful on my machine:

(13/40) 
tests/acceptance/multiprocess.py:Multiprocess.test_multiprocess_x86_64: 
PASS (58.87 s)


>
>
> -- 
> Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 12242 bytes --]

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU
  2020-12-23  6:44 [PATCH] multi-process: Acceptance test for multiprocess QEMU elena.ufimtseva
  2020-12-23 11:01 ` Marc-André Lureau
@ 2020-12-23 19:16 ` Wainer dos Santos Moschetta
  2021-02-22 14:32 ` Philippe Mathieu-Daudé
  2 siblings, 0 replies; 9+ messages in thread
From: Wainer dos Santos Moschetta @ 2020-12-23 19:16 UTC (permalink / raw)
  To: elena.ufimtseva, qemu-devel
  Cc: fam, john.g.johnson, swapnil.ingle, mst, kraxel, jag.raman,
	quintela, armbru, kanth.ghatraju, felipe, thuth, ehabkost,
	konrad.wilk, dgilbert, alex.williamson, stefanha, pbonzini,
	kwolf, berrange, mreitz, ross.lagerwall, marcandre.lureau,
	thanos.makatos


On 12/23/20 3:44 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

The test looks good. Thanks for contributing it!

Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>

>
> 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)



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU
  2020-12-23 18:49   ` Elena Ufimtseva
@ 2020-12-29 16:17     ` Jag Raman
  2021-01-06 13:51       ` Marc-André Lureau
  0 siblings, 1 reply; 9+ messages in thread
From: Jag Raman @ 2020-12-29 16:17 UTC (permalink / raw)
  To: Elena Ufimtseva
  Cc: Fam Zheng, John G Johnson, Swapnil Ingle, Michael S. Tsirkin,
	QEMU, Gerd Hoffmann, Juan Quintela, Markus Armbruster,
	Kanth Ghatraju, Felipe Franciosi, Thomas Huth, Eduardo Habkost,
	Konrad Rzeszutek Wilk, Dr. David Alan Gilbert, Alex Williamson,
	Stefan Hajnoczi, Thanos Makatos, Kevin Wolf, Daniel P. Berrange,
	Max Reitz, Ross Lagerwall, Marc-André Lureau, Paolo Bonzini



> 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.

—
Jag

> 
> Thank you!
> 
> Elena
>> 
>> 
>> -- 
>> Marc-André Lureau
> 



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU
  2020-12-29 16:17     ` Jag Raman
@ 2021-01-06 13:51       ` Marc-André Lureau
  2021-01-07 17:23         ` Jag Raman
  0 siblings, 1 reply; 9+ messages in thread
From: Marc-André Lureau @ 2021-01-06 13:51 UTC (permalink / raw)
  To: Jag Raman
  Cc: Elena Ufimtseva, Fam Zheng, Swapnil Ingle, John G Johnson, QEMU,
	Gerd Hoffmann, Juan Quintela, Michael S. Tsirkin,
	Markus Armbruster, Kanth Ghatraju, Felipe Franciosi, Thomas Huth,
	Eduardo Habkost, Konrad Rzeszutek Wilk, Dr. David Alan Gilbert,
	Alex Williamson, Stefan Hajnoczi, Thanos Makatos, Kevin Wolf,
	Daniel P. Berrange, Max Reitz, Ross Lagerwall, Paolo Bonzini

[-- Attachment #1: Type: text/plain, Size: 7243 bytes --]

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>

[-- Attachment #2: Type: text/html, Size: 11263 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU
  2021-01-06 13:51       ` Marc-André Lureau
@ 2021-01-07 17:23         ` Jag Raman
  0 siblings, 0 replies; 9+ messages in thread
From: Jag Raman @ 2021-01-07 17:23 UTC (permalink / raw)
  To: Marc-André Lureau
  Cc: Elena Ufimtseva, Fam Zheng, Swapnil Ingle, John G Johnson, QEMU,
	Gerd Hoffmann, Juan Quintela, Michael S. Tsirkin,
	Markus Armbruster, Kanth Ghatraju, Felipe Franciosi, Thomas Huth,
	Eduardo Habkost, Konrad Rzeszutek Wilk, Dr. David Alan Gilbert,
	Alex Williamson, Stefan Hajnoczi, Thanos Makatos, Kevin Wolf,
	Daniel P. Berrange, Max Reitz, Ross Lagerwall, Paolo Bonzini



> 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!
> 



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU
  2020-12-23  6:44 [PATCH] multi-process: Acceptance test for multiprocess QEMU elena.ufimtseva
  2020-12-23 11:01 ` Marc-André Lureau
  2020-12-23 19:16 ` Wainer dos Santos Moschetta
@ 2021-02-22 14:32 ` Philippe Mathieu-Daudé
  2 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-02-22 14:32 UTC (permalink / raw)
  To: qemu-devel, Cleber Rosa
  Cc: fam, elena.ufimtseva, swapnil.ingle, john.g.johnson, kraxel,
	jag.raman, quintela, mst, armbru, kanth.ghatraju, felipe, thuth,
	ehabkost, konrad.wilk, dgilbert, alex.williamson, stefanha,
	pbonzini, kwolf, berrange, mreitz, ross.lagerwall,
	marcandre.lureau, thanos.makatos

Cc'ing Cleber too:

$ ./scripts/get_maintainer.pl -f tests/acceptance/multiprocess.py
Cleber Rosa <crosa@redhat.com> (reviewer:Acceptance (Integ...)
Wainer dos Santos Moschetta <wainersm@redhat.com> (reviewer:Acceptance
(Integ...)

On 12/23/20 7:44 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)
> 



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-02-22 14:34 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-23  6:44 [PATCH] multi-process: Acceptance test for multiprocess QEMU elena.ufimtseva
2020-12-23 11:01 ` Marc-André Lureau
2020-12-23 18:49   ` Elena Ufimtseva
2020-12-29 16:17     ` Jag Raman
2021-01-06 13:51       ` Marc-André Lureau
2021-01-07 17:23         ` Jag Raman
2020-12-23 18:51   ` Wainer dos Santos Moschetta
2020-12-23 19:16 ` Wainer dos Santos Moschetta
2021-02-22 14:32 ` Philippe Mathieu-Daudé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.