diff mbox series

[v2,07/29] tests/acceptance: Use the 'arch' tag to verify QEMU binary target

Message ID 20200129212345.20547-8-philmd@redhat.com (mailing list archive)
State New, archived
Headers show
Series tests/acceptance/virtio_seg_max_adjust: Restrict it to Linux/X86 | expand

Commit Message

Philippe Mathieu-Daudé Jan. 29, 2020, 9:23 p.m. UTC
We already use the 'arch' tag in Avocado tests. Tests can set
it to restrict their use on a particular target architecture.

If the QEMU binary does not target the required architecture,
the tests will be cancelled (skipped):

  $ avocado --show=app run tests/acceptance/boot_linux_console.py
   ...
   (14/19) BootLinuxConsole.test_arm_cubieboard_initrd: CANCEL: Test expects arch 'arm' while QEMU binary is targetting 'mips' (0.16 s)
   (15/19) BootLinuxConsole.test_arm_cubieboard_sata: CANCEL: Test expects arch 'arm' while QEMU binary is targetting 'mips' (0.18 s)
   (16/19) BootLinuxConsole.test_s390x_s390_ccw_virtio: CANCEL: Test expects arch 's390x' while QEMU binary is targetting 'mips' (0.14 s)
   (17/19) BootLinuxConsole.test_alpha_clipper: CANCEL: Test expects arch 'alpha' while QEMU binary is targetting 'mips' (0.16 s)
   (18/19) BootLinuxConsole.test_ppc64_pseries: CANCEL: Test expects arch 'ppc64' while QEMU binary is targetting 'mips' (0.18 s)
   (19/19) BootLinuxConsole.test_m68k_q800: CANCEL: Test expects arch 'm68k' while QEMU binary is targetting 'mips' (0.17 s)
  RESULTS    : PASS 2 | ERROR 0 | FAIL 0 | SKIP 1 | WARN 0 | INTERRUPT 0 | CANCEL 16
  JOB TIME   : 19.18 s

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 tests/acceptance/avocado_qemu/__init__.py | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Cornelia Huck Jan. 31, 2020, 9:51 a.m. UTC | #1
On Wed, 29 Jan 2020 22:23:23 +0100
Philippe Mathieu-Daudé <philmd@redhat.com> wrote:

> We already use the 'arch' tag in Avocado tests. Tests can set
> it to restrict their use on a particular target architecture.
> 
> If the QEMU binary does not target the required architecture,
> the tests will be cancelled (skipped):
> 
>   $ avocado --show=app run tests/acceptance/boot_linux_console.py
>    ...
>    (14/19) BootLinuxConsole.test_arm_cubieboard_initrd: CANCEL: Test expects arch 'arm' while QEMU binary is targetting 'mips' (0.16 s)
>    (15/19) BootLinuxConsole.test_arm_cubieboard_sata: CANCEL: Test expects arch 'arm' while QEMU binary is targetting 'mips' (0.18 s)
>    (16/19) BootLinuxConsole.test_s390x_s390_ccw_virtio: CANCEL: Test expects arch 's390x' while QEMU binary is targetting 'mips' (0.14 s)
>    (17/19) BootLinuxConsole.test_alpha_clipper: CANCEL: Test expects arch 'alpha' while QEMU binary is targetting 'mips' (0.16 s)
>    (18/19) BootLinuxConsole.test_ppc64_pseries: CANCEL: Test expects arch 'ppc64' while QEMU binary is targetting 'mips' (0.18 s)
>    (19/19) BootLinuxConsole.test_m68k_q800: CANCEL: Test expects arch 'm68k' while QEMU binary is targetting 'mips' (0.17 s)
>   RESULTS    : PASS 2 | ERROR 0 | FAIL 0 | SKIP 1 | WARN 0 | INTERRUPT 0 | CANCEL 16
>   JOB TIME   : 19.18 s
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  tests/acceptance/avocado_qemu/__init__.py | 9 +++++++++
>  1 file changed, 9 insertions(+)

Reviewed-by: Cornelia Huck <cohuck@redhat.com>
diff mbox series

Patch

diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py
index 67c75822d5..e7d5affe24 100644
--- a/tests/acceptance/avocado_qemu/__init__.py
+++ b/tests/acceptance/avocado_qemu/__init__.py
@@ -19,6 +19,7 @@  import avocado
 SRC_ROOT_DIR = os.path.join(os.path.dirname(__file__), '..', '..', '..')
 sys.path.append(os.path.join(SRC_ROOT_DIR, 'python'))
 
+from qemu.binutils import binary_get_arch
 from qemu.binutils import binary_get_version
 from qemu.machine import QEMUMachine
 
@@ -142,6 +143,14 @@  class Test(avocado.Test):
             if bin_v[0] < min_v[0] or bin_v[1] < min_v[1] or bin_v[2] < min_v[2]:
                 self.cancel(fmt.format(min_version, bin_v[0], bin_v[1], bin_v[2]))
 
+        # Verify architecture
+        if self.arch:
+            fmt = "Test expects arch '{}' while QEMU binary is targetting '{}'"
+            bin_arch = binary_get_arch(self.qemu_bin)
+            logger.debug('arch: {}'.format(bin_arch))
+            if bin_arch != self.arch:
+                self.cancel(fmt.format(self.arch, bin_arch))
+
     def _new_vm(self, *args):
         vm = QEMUMachine(self.qemu_bin, sock_dir=tempfile.mkdtemp())
         if args: