[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 04/29] tests/acceptance: Use 'version-min' tag to verify QEMU
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH v2 04/29] tests/acceptance: Use 'version-min' tag to verify QEMU binary version |
Date: |
Wed, 29 Jan 2020 22:23:20 +0100 |
Introduce the 'version-min' tag.
Tests can set it to the minimum version of QEMU they require.
If QEMU is older, the tests will be cancelled (skipped):
$ python -m avocado --show=app run tests/acceptance/x86_cpu_model_versions.py
(01/11) X86CPUModelAliases.test_4_0_alias_compatibility: CANCEL: Test
expects version '4.1' but QEMU binary is '3.1.1' (0.10 s)
(02/11) X86CPUModelAliases.test_4_1_alias: CANCEL: Test expects version
'4.1' but QEMU binary is '3.1.1' (0.10 s)
(03/11) X86CPUModelAliases.test_none_alias: CANCEL: Test expects version
'4.1' but QEMU binary is '3.1.1' (0.10 s)
...
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
tests/acceptance/avocado_qemu/__init__.py | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/tests/acceptance/avocado_qemu/__init__.py
b/tests/acceptance/avocado_qemu/__init__.py
index 6618ea67c1..67c75822d5 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_version
from qemu.machine import QEMUMachine
def is_readable_executable_file(path):
@@ -111,6 +112,7 @@ class Test(avocado.Test):
def setUp(self):
self._vms = {}
+ logger = logging.getLogger('core')
self.arch = self.params.get('arch',
default=self._get_unique_tag_val('arch'))
@@ -118,12 +120,28 @@ class Test(avocado.Test):
self.machine = self.params.get('machine',
default=self._get_unique_tag_val('machine'))
+ # Verify qemu_bin
default_qemu_bin = pick_default_qemu_bin(arch=self.arch)
self.qemu_bin = self.params.get('qemu_bin',
default=default_qemu_bin)
if self.qemu_bin is None:
self.cancel("No QEMU binary defined or found in the source tree")
+ # Verify version
+ min_version = self._get_unique_tag_val('version-min')
+ logger.debug('version-min: {}'.format(min_version))
+ if min_version:
+ min_v = [int(n) for n in min_version.split('.')]
+ if len(min_v) < 3:
+ min_v.append(0)
+ logger.debug(min_v)
+ bin_v = binary_get_version(self.qemu_bin)
+ bin_v = (bin_v['major'], bin_v['minor'], bin_v['micro'])
+ logger.debug(bin_v)
+ fmt = "Test expects version '{}' but QEMU binary is '{}.{}.{}'"
+ 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]))
+
def _new_vm(self, *args):
vm = QEMUMachine(self.qemu_bin, sock_dir=tempfile.mkdtemp())
if args:
--
2.21.1
[PATCH v2 05/29] tests/acceptance: Restrict X86CPUModelAliases test to QEMU >= 4.1, Philippe Mathieu-Daudé, 2020/01/29
[PATCH v2 06/29] python/qemu: Add binutils::binary_get_arch(), Philippe Mathieu-Daudé, 2020/01/29
[PATCH v2 07/29] tests/acceptance: Use the 'arch' tag to verify QEMU binary target, Philippe Mathieu-Daudé, 2020/01/29