From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3DFA9C433DB for ; Wed, 23 Dec 2020 18:53:15 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AA8E5222BB for ; Wed, 23 Dec 2020 18:53:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AA8E5222BB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:41092 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ks9G5-00008y-IG for qemu-devel@archiver.kernel.org; Wed, 23 Dec 2020 13:53:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38472) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ks9Eh-0007Z7-7Z for qemu-devel@nongnu.org; Wed, 23 Dec 2020 13:51:47 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:50132) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1ks9Ec-0000UT-S8 for qemu-devel@nongnu.org; Wed, 23 Dec 2020 13:51:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608749500; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=SUuvt9MaFk0xlJEdQsf1aFTBa8+wCmXY5hJxIk0e4Cw=; b=OyHy4cdNqOm0hGnJr1Z3L0Ib4wTSg9DUGBADL90pnfB2GohNofPmZkKOrxdXVFO3OPfkGz 3OEH9tnaPL2PwVbOxo0MYkCrka2mdjuydkKGqTFbS1Agds/1QdMzJB7ymDwSJHX2JHJT6N Sq5ukWtExz5ZyKRqw/s+x05f71eGWXc= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-362-i7vV1pjBO--96Hcd9mlY6Q-1; Wed, 23 Dec 2020 13:51:36 -0500 X-MC-Unique: i7vV1pjBO--96Hcd9mlY6Q-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A70EC425C9; Wed, 23 Dec 2020 18:51:34 +0000 (UTC) Received: from wainer-laptop.localdomain (ovpn-116-175.gru2.redhat.com [10.97.116.175]) by smtp.corp.redhat.com (Postfix) with ESMTP id 725DE5F9B8; Wed, 23 Dec 2020 18:51:03 +0000 (UTC) Subject: Re: [PATCH] multi-process: Acceptance test for multiprocess QEMU To: =?UTF-8?Q?Marc-Andr=c3=a9_Lureau?= , Elena Ufimtseva References: <785772783205140e219b8bfe7f793305ee768f03.1608705805.git.elena.ufimtseva@oracle.com> From: Wainer dos Santos Moschetta Message-ID: <984ba705-7de7-350e-ef4f-cd38c47ab6bb@redhat.com> Date: Wed, 23 Dec 2020 15:51:01 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=wainersm@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/alternative; boundary="------------B29880A6049C49C145879F62" Content-Language: en-US Received-SPF: pass client-ip=63.128.21.124; envelope-from=wainersm@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -45 X-Spam_score: -4.6 X-Spam_bar: ---- X-Spam_report: (-4.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, NICE_REPLY_A=-2.521, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" This is a multi-part message in MIME format. --------------B29880A6049C49C145879F62 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Hi, On 12/23/20 8:01 AM, Marc-André Lureau wrote: > Hi > > On Wed, Dec 23, 2020 at 10:45 AM > wrote: > > From: Jagannathan Raman > > > Runs the Avocado acceptance test to check if a > remote lsi53c895a device gets identified by the guest. > > Signed-off-by: Elena Ufimtseva > > Signed-off-by: John G Johnson > > Signed-off-by: Jagannathan Raman > > --- >  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) Perhaps the test is stuck somewhere and it hits the default Avocado timeout. You can look at the test logs at: /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 --------------B29880A6049C49C145879F62 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit

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

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