[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 06/23] Acceptance Tests: support choosing specific distro and vers
From: |
Cleber Rosa |
Subject: |
[PULL 06/23] Acceptance Tests: support choosing specific distro and version |
Date: |
Tue, 13 Jul 2021 17:19:06 -0400 |
The tests based on the LinuxTest class give the test writer a ready to
use guest operating system, currently pinned to Fedora 31.
With this change, it's now possible to choose different distros and
versions, similar to how other tags and parameter can be set for the
target arch, accelerator, etc.
One of the reasons for this work, is that some development features
depend on updates on the guest side. For instance the tests on
virtiofs_submounts.py, require newer kernels, and may benefit from
running, say on Fedora 34, without the need for a custom kernel.
Please notice that the pre-caching of the Fedora 31 images done during
the early stages of `make check-acceptance` (before the tests are
actually executed) are not expanded here to cover every new image
added. But, the tests will download other needed images (and cache
them) during the first execution.
Signed-off-by: Cleber Rosa <crosa@redhat.com>
Message-Id: <20210414221457.1653745-4-crosa@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Willian Rampazzo <willianr@redhat.com>
Signed-off-by: Cleber Rosa <crosa@redhat.com>
---
docs/devel/testing.rst | 65 +++++++++++++++++++++++
tests/acceptance/avocado_qemu/__init__.py | 47 ++++++++++++----
2 files changed, 102 insertions(+), 10 deletions(-)
diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
index 4e42392810..19cbf532ae 100644
--- a/docs/devel/testing.rst
+++ b/docs/devel/testing.rst
@@ -922,6 +922,39 @@ The preserved value of the ``qemu_bin`` parameter or the
result of the
dynamic probe for a QEMU binary in the current working directory or
source tree.
+LinuxTest
+~~~~~~~~~
+
+Besides the attributes present on the ``avocado_qemu.Test`` base
+class, the ``avocado_qemu.LinuxTest`` adds the following attributes:
+
+distro
+......
+
+The name of the Linux distribution used as the guest image for the
+test. The name should match the **Provider** column on the list
+of images supported by the avocado.utils.vmimage library:
+
+https://avocado-framework.readthedocs.io/en/latest/guides/writer/libs/vmimage.html#supported-images
+
+distro_version
+..............
+
+The version of the Linux distribution as the guest image for the
+test. The name should match the **Version** column on the list
+of images supported by the avocado.utils.vmimage library:
+
+https://avocado-framework.readthedocs.io/en/latest/guides/writer/libs/vmimage.html#supported-images
+
+distro_checksum
+...............
+
+The sha256 hash of the guest image file used for the test.
+
+If this value is not set in the code or by a test parameter (with the
+same name), no validation on the integrity of the image will be
+performed.
+
Parameter reference
-------------------
@@ -962,6 +995,38 @@ qemu_bin
The exact QEMU binary to be used on QEMUMachine.
+LinuxTest
+~~~~~~~~~
+
+Besides the parameters present on the ``avocado_qemu.Test`` base
+class, the ``avocado_qemu.LinuxTest`` adds the following parameters:
+
+distro
+......
+
+The name of the Linux distribution used as the guest image for the
+test. The name should match the **Provider** column on the list
+of images supported by the avocado.utils.vmimage library:
+
+https://avocado-framework.readthedocs.io/en/latest/guides/writer/libs/vmimage.html#supported-images
+
+distro_version
+..............
+
+The version of the Linux distribution as the guest image for the
+test. The name should match the **Version** column on the list
+of images supported by the avocado.utils.vmimage library:
+
+https://avocado-framework.readthedocs.io/en/latest/guides/writer/libs/vmimage.html#supported-images
+
+distro_checksum
+...............
+
+The sha256 hash of the guest image file used for the test.
+
+If this value is not set in the code or by this parameter no
+validation on the integrity of the image will be performed.
+
Skipping tests
--------------
The Avocado framework provides Python decorators which allow for easily skip
diff --git a/tests/acceptance/avocado_qemu/__init__.py
b/tests/acceptance/avocado_qemu/__init__.py
index 3a144cded4..1f1728ab83 100644
--- a/tests/acceptance/avocado_qemu/__init__.py
+++ b/tests/acceptance/avocado_qemu/__init__.py
@@ -345,8 +345,39 @@ class LinuxTest(Test, LinuxSSHMixIn):
username = 'root'
password = 'password'
+ def _set_distro(self):
+ distro = self.params.get(
+ 'distro',
+ default=self._get_unique_tag_val('distro'))
+ if not distro:
+ distro = 'fedora'
+ self.distro = distro
+
+ distro_version = self.params.get(
+ 'distro_version',
+ default=self._get_unique_tag_val('distro_version'))
+ if not distro_version:
+ distro_version = '31'
+ self.distro_version = distro_version
+
+ # The distro checksum behaves differently than distro name and
+ # version. First, it does not respect a tag with the same
+ # name, given that it's not expected to be used for filtering
+ # (distro name versions are the natural choice). Second, the
+ # order of precedence is: parameter, attribute and then value
+ # from KNOWN_DISTROS.
+ distro_checksum = self.params.get('distro_checksum',
+ default=self.distro_checksum)
+ if not distro_checksum:
+ distro_checksum = get_known_distro_checksum(self.distro,
+ self.distro_version,
+ self.arch)
+ if distro_checksum:
+ self.distro_checksum = distro_checksum
+
def setUp(self, ssh_pubkey=None, network_device_type='virtio-net'):
super(LinuxTest, self).setUp()
+ self._set_distro()
self.vm.add_args('-smp', '2')
self.vm.add_args('-m', '1024')
# The following network device allows for SSH connections
@@ -382,20 +413,16 @@ def download_boot(self):
vmimage.QEMU_IMG = qemu_img
self.log.info('Downloading/preparing boot image')
- distro = 'fedora'
- distro_version = '31'
- known_distro_checksum = get_known_distro_checksum(distro,
- distro_version,
- self.arch)
- distro_checksum = self.distro_checksum or known_distro_checksum
# Fedora 31 only provides ppc64le images
image_arch = self.arch
- if image_arch == 'ppc64':
- image_arch = 'ppc64le'
+ if self.distro == 'fedora':
+ if image_arch == 'ppc64':
+ image_arch = 'ppc64le'
+
try:
boot = vmimage.get(
- distro, arch=image_arch, version=distro_version,
- checksum=distro_checksum,
+ self.distro, arch=image_arch, version=self.distro_version,
+ checksum=self.distro_checksum,
algorithm='sha256',
cache_dir=self.cache_dirs[0],
snapshot_dir=self.workdir)
--
2.31.1
- [PULL 00/23] Python and Acceptance Tests, Cleber Rosa, 2021/07/13
- [PULL 01/23] Acceptance Tests: use the job work directory for created VMs, Cleber Rosa, 2021/07/13
- [PULL 02/23] Acceptance Tests: log information when creating QEMUMachine, Cleber Rosa, 2021/07/13
- [PULL 04/23] Acceptance Tests: rename attribute holding the distro image checksum, Cleber Rosa, 2021/07/13
- [PULL 03/23] Acceptance Tests: distinguish between temp and logs dir, Cleber Rosa, 2021/07/13
- [PULL 05/23] Acceptance Tests: move definition of distro checksums to the framework, Cleber Rosa, 2021/07/13
- [PULL 06/23] Acceptance Tests: support choosing specific distro and version,
Cleber Rosa <=
- [PULL 07/23] tests/acceptance: Ignore binary data sent on serial console, Cleber Rosa, 2021/07/13
- [PULL 09/23] Acceptance Tests: Add default kernel params and pxeboot url to the KNOWN_DISTROS collection, Cleber Rosa, 2021/07/13
- [PULL 08/23] avocado_qemu: Fix KNOWN_DISTROS map into the LinuxDistro class, Cleber Rosa, 2021/07/13
- [PULL 10/23] avocado_qemu: Add SMMUv3 tests, Cleber Rosa, 2021/07/13
- [PULL 11/23] avocado_qemu: Add Intel iommu tests, Cleber Rosa, 2021/07/13
- [PULL 12/23] tests/acceptance: Tag NetBSD tests as 'os:netbsd', Cleber Rosa, 2021/07/13
- [PULL 13/23] tests/acceptance: Automatic set -cpu to the test vm, Cleber Rosa, 2021/07/13
- [PULL 14/23] tests/acceptance: Fix mismatch on cpu tagged tests, Cleber Rosa, 2021/07/13
- [PULL 16/23] tests/acceptance: Tagging tests with "cpu:VALUE", Cleber Rosa, 2021/07/13
- [PULL 15/23] tests/acceptance: Let the framework handle "cpu:VALUE" tagged tests, Cleber Rosa, 2021/07/13