diff options
-rw-r--r-- | tests/acceptance/avocado_qemu/__init__.py | 24 | ||||
-rw-r--r-- | tests/acceptance/boot_linux.py | 34 | ||||
-rw-r--r-- | tests/acceptance/virtiofs_submounts.py | 5 |
3 files changed, 34 insertions, 29 deletions
diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py index b06692a59d..687c5dc0cf 100644 --- a/tests/acceptance/avocado_qemu/__init__.py +++ b/tests/acceptance/avocado_qemu/__init__.py @@ -39,6 +39,8 @@ else: sys.path.append(os.path.join(SOURCE_DIR, 'python')) +from qemu.accel import kvm_available +from qemu.accel import tcg_available from qemu.machine import QEMUMachine def is_readable_executable_file(path): @@ -162,6 +164,28 @@ class Test(avocado.Test): return vals.pop() return None + def require_accelerator(self, accelerator): + """ + Requires an accelerator to be available for the test to continue + + It takes into account the currently set qemu binary. + + If the check fails, the test is canceled. If the check itself + for the given accelerator is not available, the test is also + canceled. + + :param accelerator: name of the accelerator, such as "kvm" or "tcg" + :type accelerator: str + """ + checker = {'tcg': tcg_available, + 'kvm': kvm_available}.get(accelerator) + if checker is None: + self.cancel("Don't know how to check for the presence " + "of accelerator %s" % accelerator) + if not checker(qemu_bin=self.qemu_bin): + self.cancel("%s accelerator does not seem to be " + "available" % accelerator) + def setUp(self): self._vms = {} diff --git a/tests/acceptance/boot_linux.py b/tests/acceptance/boot_linux.py index 14e89d020d..0d178038a0 100644 --- a/tests/acceptance/boot_linux.py +++ b/tests/acceptance/boot_linux.py @@ -12,15 +12,8 @@ import os from avocado_qemu import LinuxTest, BUILD_DIR -from qemu.accel import kvm_available -from qemu.accel import tcg_available - from avocado import skipIf -ACCEL_NOT_AVAILABLE_FMT = "%s accelerator does not seem to be available" -KVM_NOT_AVAILABLE = ACCEL_NOT_AVAILABLE_FMT % "KVM" -TCG_NOT_AVAILABLE = ACCEL_NOT_AVAILABLE_FMT % "TCG" - class BootLinuxX8664(LinuxTest): """ @@ -34,8 +27,7 @@ class BootLinuxX8664(LinuxTest): :avocado: tags=machine:pc :avocado: tags=accel:tcg """ - if not tcg_available(self.qemu_bin): - self.cancel(TCG_NOT_AVAILABLE) + self.require_accelerator("tcg") self.vm.add_args("-accel", "tcg") self.launch_and_wait() @@ -44,8 +36,7 @@ class BootLinuxX8664(LinuxTest): :avocado: tags=machine:pc :avocado: tags=accel:kvm """ - if not kvm_available(self.arch, self.qemu_bin): - self.cancel(KVM_NOT_AVAILABLE) + self.require_accelerator("kvm") self.vm.add_args("-accel", "kvm") self.launch_and_wait() @@ -54,8 +45,7 @@ class BootLinuxX8664(LinuxTest): :avocado: tags=machine:q35 :avocado: tags=accel:tcg """ - if not tcg_available(self.qemu_bin): - self.cancel(TCG_NOT_AVAILABLE) + self.require_accelerator("tcg") self.vm.add_args("-accel", "tcg") self.launch_and_wait() @@ -64,8 +54,7 @@ class BootLinuxX8664(LinuxTest): :avocado: tags=machine:q35 :avocado: tags=accel:kvm """ - if not kvm_available(self.arch, self.qemu_bin): - self.cancel(KVM_NOT_AVAILABLE) + self.require_accelerator("kvm") self.vm.add_args("-accel", "kvm") self.launch_and_wait() @@ -91,8 +80,7 @@ class BootLinuxAarch64(LinuxTest): :avocado: tags=accel:tcg :avocado: tags=cpu:max """ - if not tcg_available(self.qemu_bin): - self.cancel(TCG_NOT_AVAILABLE) + self.require_accelerator("tcg") self.vm.add_args("-accel", "tcg") self.vm.add_args("-cpu", "max") self.vm.add_args("-machine", "virt,gic-version=2") @@ -105,8 +93,7 @@ class BootLinuxAarch64(LinuxTest): :avocado: tags=cpu:host :avocado: tags=device:gicv2 """ - if not kvm_available(self.arch, self.qemu_bin): - self.cancel(KVM_NOT_AVAILABLE) + self.require_accelerator("kvm") self.vm.add_args("-accel", "kvm") self.vm.add_args("-cpu", "host") self.vm.add_args("-machine", "virt,gic-version=2") @@ -119,8 +106,7 @@ class BootLinuxAarch64(LinuxTest): :avocado: tags=cpu:host :avocado: tags=device:gicv3 """ - if not kvm_available(self.arch, self.qemu_bin): - self.cancel(KVM_NOT_AVAILABLE) + self.require_accelerator("kvm") self.vm.add_args("-accel", "kvm") self.vm.add_args("-cpu", "host") self.vm.add_args("-machine", "virt,gic-version=3") @@ -140,8 +126,7 @@ class BootLinuxPPC64(LinuxTest): :avocado: tags=machine:pseries :avocado: tags=accel:tcg """ - if not tcg_available(self.qemu_bin): - self.cancel(TCG_NOT_AVAILABLE) + self.require_accelerator("tcg") self.vm.add_args("-accel", "tcg") self.launch_and_wait() @@ -159,7 +144,6 @@ class BootLinuxS390X(LinuxTest): :avocado: tags=machine:s390-ccw-virtio :avocado: tags=accel:tcg """ - if not tcg_available(self.qemu_bin): - self.cancel(TCG_NOT_AVAILABLE) + self.require_accelerator("tcg") self.vm.add_args("-accel", "tcg") self.launch_and_wait() diff --git a/tests/acceptance/virtiofs_submounts.py b/tests/acceptance/virtiofs_submounts.py index fc2b4fd666..46fa65392a 100644 --- a/tests/acceptance/virtiofs_submounts.py +++ b/tests/acceptance/virtiofs_submounts.py @@ -9,8 +9,6 @@ from avocado_qemu import LinuxTest, BUILD_DIR from avocado_qemu import wait_for_console_pattern from avocado.utils import ssh -from qemu.accel import kvm_available - def run_cmd(args): subp = subprocess.Popen(args, @@ -260,8 +258,7 @@ class VirtiofsSubmountsTest(LinuxTest): self.vm.add_args('-netdev', 'user,id=vnet,hostfwd=:127.0.0.1:0-:22', '-device', 'virtio-net,netdev=vnet') - if not kvm_available(self.arch, self.qemu_bin): - self.cancel(KVM_NOT_AVAILABLE) + self.require_accelerator("kvm") self.vm.add_args('-accel', 'kvm') def tearDown(self): |