* [PATCH v3 0/2] tests: Add functional test for out-of-process device emulation
@ 2021-03-03 20:53 Willian Rampazzo
2021-03-03 20:53 ` [PATCH v3 1/2] avocado_qemu: add exec_command function Willian Rampazzo
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Willian Rampazzo @ 2021-03-03 20:53 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Wainer dos Santos Moschetta, Cleber Rosa
This series is a respin to the "multi-process: Acceptance test for
multiprocess QEMU" patch sent in December which, runs an Avocado
functional test to check if a remote lsi53c895a device gets identified
by the guest:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg769188.html
First, we introduce the `exec_command` to the avocado_qemu package,
which sends a command to a console without the need to wait for a
pattern as a result. This is useful when a test needs to execute a
command that does not produce an output, like, for example, a `mount`
command.
Then, the original test is refactored to simplify the code using the
new `exec_command` function, remove the unnecessary change to the
`wait_for_console_pattern` method and normalize the use of single
quotes.
CI Pipeline: https://gitlab.com/willianrampazzo/qemu/-/pipelines/261946622
Supersedes: <785772783205140e219b8bfe7f793305ee768f03.1608705805.git.elena.ufimtseva@oracle.com>
Change from v2:
- Add command type to the `exec_command` docstring
Jagannathan Raman (1):
tests: Add functional test for out-of-process device emulation
Willian Rampazzo (1):
avocado_qemu: add exec_command function
tests/acceptance/avocado_qemu/__init__.py | 14 +++-
tests/acceptance/multiprocess.py | 95 +++++++++++++++++++++++
2 files changed, 108 insertions(+), 1 deletion(-)
create mode 100644 tests/acceptance/multiprocess.py
--
2.29.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 1/2] avocado_qemu: add exec_command function
2021-03-03 20:53 [PATCH v3 0/2] tests: Add functional test for out-of-process device emulation Willian Rampazzo
@ 2021-03-03 20:53 ` Willian Rampazzo
2021-03-08 16:53 ` Cleber Rosa
2021-03-03 20:53 ` [PATCH v3 2/2] tests: Add functional test for out-of-process device emulation Willian Rampazzo
2021-03-10 15:11 ` [PATCH v3 0/2] " Stefan Hajnoczi
2 siblings, 1 reply; 6+ messages in thread
From: Willian Rampazzo @ 2021-03-03 20:53 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Wainer dos Santos Moschetta, Cleber Rosa
Sometimes a test needs to send a command to a console without waiting
for a pattern as a result, or the command issued do not produce any kind
of output, like, for example, a `mount` command.
This introduces the `exec_command` function to the avocado_qemu,
allowing the test to send a command to the console without the need to
match a pattern produced as a result.
Signed-off-by: Willian Rampazzo <willianr@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
---
tests/acceptance/avocado_qemu/__init__.py | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py
index df167b142c..0e6d286403 100644
--- a/tests/acceptance/avocado_qemu/__init__.py
+++ b/tests/acceptance/avocado_qemu/__init__.py
@@ -93,7 +93,7 @@ def _console_interaction(test, success_message, failure_message,
if not msg:
continue
console_logger.debug(msg)
- if success_message in msg:
+ if success_message is None or success_message in msg:
break
if failure_message and failure_message in msg:
console.close()
@@ -139,6 +139,18 @@ def wait_for_console_pattern(test, success_message, failure_message=None,
"""
_console_interaction(test, success_message, failure_message, None, vm=vm)
+def exec_command(test, command):
+ """
+ Send a command to a console (appending CRLF characters), while logging
+ the content.
+
+ :param test: an Avocado test containing a VM.
+ :type test: :class:`avocado_qemu.Test`
+ :param command: the command to send
+ :type command: str
+ """
+ _console_interaction(test, None, None, command + '\r')
+
def exec_command_and_wait_for_pattern(test, command,
success_message, failure_message=None):
"""
--
2.29.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 2/2] tests: Add functional test for out-of-process device emulation
2021-03-03 20:53 [PATCH v3 0/2] tests: Add functional test for out-of-process device emulation Willian Rampazzo
2021-03-03 20:53 ` [PATCH v3 1/2] avocado_qemu: add exec_command function Willian Rampazzo
@ 2021-03-03 20:53 ` Willian Rampazzo
2021-03-09 1:17 ` Cleber Rosa
2021-03-10 15:11 ` [PATCH v3 0/2] " Stefan Hajnoczi
2 siblings, 1 reply; 6+ messages in thread
From: Willian Rampazzo @ 2021-03-03 20:53 UTC (permalink / raw)
To: qemu-devel
Cc: Elena Ufimtseva, John G Johnson, Jagannathan Raman,
Wainer dos Santos Moschetta, Cleber Rosa, Marc-André Lureau,
Philippe Mathieu-Daudé
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>
Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
[WR: Refactored code]
Signed-off-by: Willian Rampazzo <willianr@redhat.com>
Tested-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
---
tests/acceptance/multiprocess.py | 95 ++++++++++++++++++++++++++++++++
1 file changed, 95 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..96627f022a
--- /dev/null
+++ b/tests/acceptance/multiprocess.py
@@ -0,0 +1,95 @@
+# 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.
+
+
+import os
+import socket
+
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+from avocado_qemu import exec_command
+from avocado_qemu import exec_command_and_wait_for_pattern
+
+class Multiprocess(Test):
+ """
+ :avocado: tags=multiprocess
+ """
+ KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '
+
+ def do_test(self, kernel_url, initrd_url, kernel_command_line,
+ machine_type):
+ """Main test method"""
+ self.require_accelerator('kvm')
+
+ # 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()
+ wait_for_console_pattern(self, 'as init process',
+ 'Kernel panic - not syncing')
+ exec_command(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_type = 'pc'
+ self.do_test(kernel_url, initrd_url, kernel_command_line, machine_type)
+
+ 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.29.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v3 1/2] avocado_qemu: add exec_command function
2021-03-03 20:53 ` [PATCH v3 1/2] avocado_qemu: add exec_command function Willian Rampazzo
@ 2021-03-08 16:53 ` Cleber Rosa
0 siblings, 0 replies; 6+ messages in thread
From: Cleber Rosa @ 2021-03-08 16:53 UTC (permalink / raw)
To: Willian Rampazzo
Cc: Philippe Mathieu-Daudé, qemu-devel, Wainer dos Santos Moschetta
[-- Attachment #1: Type: text/plain, Size: 817 bytes --]
On Wed, Mar 03, 2021 at 05:53:19PM -0300, Willian Rampazzo wrote:
> Sometimes a test needs to send a command to a console without waiting
> for a pattern as a result, or the command issued do not produce any kind
> of output, like, for example, a `mount` command.
>
> This introduces the `exec_command` function to the avocado_qemu,
> allowing the test to send a command to the console without the need to
> match a pattern produced as a result.
>
> Signed-off-by: Willian Rampazzo <willianr@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
> ---
> tests/acceptance/avocado_qemu/__init__.py | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3 2/2] tests: Add functional test for out-of-process device emulation
2021-03-03 20:53 ` [PATCH v3 2/2] tests: Add functional test for out-of-process device emulation Willian Rampazzo
@ 2021-03-09 1:17 ` Cleber Rosa
0 siblings, 0 replies; 6+ messages in thread
From: Cleber Rosa @ 2021-03-09 1:17 UTC (permalink / raw)
To: Willian Rampazzo
Cc: Elena Ufimtseva, John G Johnson, Jagannathan Raman, qemu-devel,
Wainer dos Santos Moschetta, Marc-André Lureau,
Philippe Mathieu-Daudé
[-- Attachment #1: Type: text/plain, Size: 1915 bytes --]
On Wed, Mar 03, 2021 at 05:53:20PM -0300, Willian Rampazzo 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>
> Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> [WR: Refactored code]
> Signed-off-by: Willian Rampazzo <willianr@redhat.com>
> Tested-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
> ---
> tests/acceptance/multiprocess.py | 95 ++++++++++++++++++++++++++++++++
> 1 file changed, 95 insertions(+)
> create mode 100644 tests/acceptance/multiprocess.py
>
Because of KVM requirement, tested on x86_64 host:
./tests/venv/bin/avocado run -t arch:x86_64 tests/acceptance/multiprocess.py
JOB ID : bde34ca2168ce031f3fbdbb5091889fb9bc4b977
JOB LOG : /home/cleber/avocado/job-results/job-2021-03-08T20.16-bde34ca/job.log
(1/1) tests/acceptance/multiprocess.py:Multiprocess.test_multiprocess_x86_64: PASS (5.80 s)
RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME : 6.23 s
And on aarch64 host:
$ ./tests/venv/bin/avocado run -t arch:aarch64 tests/acceptance/multiprocess.py
JOB ID : a101a47887322981aae722b9c8e7cb6e6350eed9
JOB LOG : /home/cleber/avocado/job-results/job-2021-03-08T20.17-a101a47/job.log
(1/1) tests/acceptance/multiprocess.py:Multiprocess.test_multiprocess_aarch64: PASS (9.55 s)
RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME : 10.17 s
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Tested-by: Cleber Rosa <crosa@redhat.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3 0/2] tests: Add functional test for out-of-process device emulation
2021-03-03 20:53 [PATCH v3 0/2] tests: Add functional test for out-of-process device emulation Willian Rampazzo
2021-03-03 20:53 ` [PATCH v3 1/2] avocado_qemu: add exec_command function Willian Rampazzo
2021-03-03 20:53 ` [PATCH v3 2/2] tests: Add functional test for out-of-process device emulation Willian Rampazzo
@ 2021-03-10 15:11 ` Stefan Hajnoczi
2 siblings, 0 replies; 6+ messages in thread
From: Stefan Hajnoczi @ 2021-03-10 15:11 UTC (permalink / raw)
To: Willian Rampazzo
Cc: Philippe Mathieu-Daudé,
qemu-devel, Wainer dos Santos Moschetta, Cleber Rosa
[-- Attachment #1: Type: text/plain, Size: 1658 bytes --]
On Wed, Mar 03, 2021 at 05:53:18PM -0300, Willian Rampazzo wrote:
> This series is a respin to the "multi-process: Acceptance test for
> multiprocess QEMU" patch sent in December which, runs an Avocado
> functional test to check if a remote lsi53c895a device gets identified
> by the guest:
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg769188.html
>
> First, we introduce the `exec_command` to the avocado_qemu package,
> which sends a command to a console without the need to wait for a
> pattern as a result. This is useful when a test needs to execute a
> command that does not produce an output, like, for example, a `mount`
> command.
>
> Then, the original test is refactored to simplify the code using the
> new `exec_command` function, remove the unnecessary change to the
> `wait_for_console_pattern` method and normalize the use of single
> quotes.
>
> CI Pipeline: https://gitlab.com/willianrampazzo/qemu/-/pipelines/261946622
>
> Supersedes: <785772783205140e219b8bfe7f793305ee768f03.1608705805.git.elena.ufimtseva@oracle.com>
>
> Change from v2:
> - Add command type to the `exec_command` docstring
>
> Jagannathan Raman (1):
> tests: Add functional test for out-of-process device emulation
>
> Willian Rampazzo (1):
> avocado_qemu: add exec_command function
>
> tests/acceptance/avocado_qemu/__init__.py | 14 +++-
> tests/acceptance/multiprocess.py | 95 +++++++++++++++++++++++
> 2 files changed, 108 insertions(+), 1 deletion(-)
> create mode 100644 tests/acceptance/multiprocess.py
>
> --
> 2.29.2
>
>
>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-03-10 15:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-03 20:53 [PATCH v3 0/2] tests: Add functional test for out-of-process device emulation Willian Rampazzo
2021-03-03 20:53 ` [PATCH v3 1/2] avocado_qemu: add exec_command function Willian Rampazzo
2021-03-08 16:53 ` Cleber Rosa
2021-03-03 20:53 ` [PATCH v3 2/2] tests: Add functional test for out-of-process device emulation Willian Rampazzo
2021-03-09 1:17 ` Cleber Rosa
2021-03-10 15:11 ` [PATCH v3 0/2] " Stefan Hajnoczi
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.