Hi On Tue, Dec 29, 2020 at 8:19 PM Jag Raman <jag.ra...@oracle.com> wrote:
> > > > On Dec 23, 2020, at 1:49 PM, Elena Ufimtseva <elena.ufimts...@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.ufimts...@oracle.com> wrote: > >> > >>> From: Jagannathan Raman <jag.ra...@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.ufimts...@oracle.com> > >>> Signed-off-by: John G Johnson <john.g.john...@oracle.com> > >>> Signed-off-by: Jagannathan Raman <jag.ra...@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.lur...@redhat.com>