tests/acceptance/multiprocess.py | 104 +++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 tests/acceptance/multiprocess.py
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
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
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
> 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
>
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>
> 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!
>
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
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)
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)
>
© 2016 - 2025 Red Hat, Inc.