tests/avocado: probe for multi-process support before running test
authorAlex Bennée <alex.bennee@linaro.org>
Tue, 21 Mar 2023 11:15:35 +0000 (11:15 +0000)
committerAlex Bennée <alex.bennee@linaro.org>
Wed, 22 Mar 2023 15:06:28 +0000 (15:06 +0000)
A recent attempt to let avocado run more tests on the CentOS stream
build failed because there was no gating on the multiprocess feature.
Like missing accelerators avocado should gracefully skip when the
feature is not enabled.

In this case we use the existence of the proxy device as a proxy for
multi-process support.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Cc: Elena Ufimtseva <elena.ufimtseva@oracle.com>
Cc: Jagannathan Raman <jag.raman@oracle.com>
Cc: John G Johnson <john.g.johnson@oracle.com>
Message-Id: <20230321111752.2681128-1-alex.bennee@linaro.org>

tests/avocado/avocado_qemu/__init__.py
tests/avocado/multiprocess.py

index a313e88c07e3ccf8bf027e98f8097c671b520a5f..cb71f50db91cebccb8faea7218195231126c9fb2 100644 (file)
@@ -309,6 +309,16 @@ class QemuSystemTest(QemuBaseTest):
         if netdevhelp.find('\n' + netdevname + '\n') < 0:
             self.cancel('no support for user networking')
 
+    def require_multiprocess(self):
+        """
+        Test for the presence of the x-pci-proxy-dev which is required
+        to support multiprocess.
+        """
+        devhelp = run_cmd([self.qemu_bin,
+                           '-M', 'none', '-device', 'help'])[0];
+        if devhelp.find('x-pci-proxy-dev') < 0:
+            self.cancel('no support for multiprocess device emulation')
+
     def _new_vm(self, name, *args):
         self._sd = tempfile.TemporaryDirectory(prefix="qemu_")
         vm = QEMUMachine(self.qemu_bin, base_temp_dir=self.workdir,
index 80a3b8f442b9c9e54778ad432ea08d3b0a46787c..9112a4cacc6e3cd351f8d07df9e197ef3b6a09c8 100644 (file)
@@ -22,6 +22,7 @@ class Multiprocess(QemuSystemTest):
                 machine_type):
         """Main test method"""
         self.require_accelerator('kvm')
+        self.require_multiprocess()
 
         # Create socketpair to connect proxy and remote processes
         proxy_sock, remote_sock = socket.socketpair(socket.AF_UNIX,