[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/3] tests/acceptance: avocado_qemu: Introduce the 'accel'
From: |
Thomas Huth |
Subject: |
Re: [PATCH v2 1/3] tests/acceptance: avocado_qemu: Introduce the 'accel' test parameter |
Date: |
Wed, 18 Dec 2019 19:48:09 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 |
On 18/12/2019 18.00, Wainer dos Santos Moschetta wrote:
> The test case may need to boot the VM with an accelerator that
> isn't actually enabled on the QEMU binary and/or present in the host. In
> this case the test behavior is undefined, and the best course of
> action is to skip its execution.
>
> This change introduced the 'accel' parameter (and the handler of
> tag with same name) used to indicate the test case requires a
> given accelerator available. It was implemented a mechanism to
> skip the test case if the accelerator is not available. Moreover,
> the QEMU --accel argument is set automatically to any VM
> launched if the parameter is present.
>
> Signed-off-by: Wainer dos Santos Moschetta <address@hidden>
> ---
> docs/devel/testing.rst | 16 ++++++++++++++++
> tests/acceptance/avocado_qemu/__init__.py | 23 +++++++++++++++++++++++
> 2 files changed, 39 insertions(+)
>
> diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
> index 27f286858a..6c2e0718e1 100644
> --- a/docs/devel/testing.rst
> +++ b/docs/devel/testing.rst
> @@ -757,6 +757,17 @@ name. If one is not given explicitly, it will either be
> set to
> ``None``, or, if the test is tagged with one (and only one)
> ``:avocado: tags=machine:VALUE`` tag, it will be set to ``VALUE``.
>
> +accel
> +~~~~~
> +The accelerator that will be set to all QEMUMachine instances created
> +by the test.
> +
> +The ``accel`` attribute will be set to the test parameter of the same
> +name. If one is not given explicitly, it will either be set to
> +``None``, or, if the test is tagged with one (and only one)
> +``:avocado: tags=accel:VALUE`` tag, it will be set to ``VALUE``. Currently
> +``VALUE`` should be either ``kvm`` or ``tcg``.
> +
> qemu_bin
> ~~~~~~~~
>
> @@ -798,6 +809,11 @@ machine
> The machine type that will be set to all QEMUMachine instances created
> by the test.
>
> +accel
> +~~~~~
> +The accelerator that will be set to all QEMUMachine instances created
> +by the test. In case the accelerator is not available (both QEMU
> +binary and the host system are checked) then the test is canceled.
>
> qemu_bin
> ~~~~~~~~
> diff --git a/tests/acceptance/avocado_qemu/__init__.py
> b/tests/acceptance/avocado_qemu/__init__.py
> index 6618ea67c1..aff32668d9 100644
> --- a/tests/acceptance/avocado_qemu/__init__.py
> +++ b/tests/acceptance/avocado_qemu/__init__.py
> @@ -20,6 +20,7 @@ SRC_ROOT_DIR = os.path.join(os.path.dirname(__file__),
> '..', '..', '..')
> sys.path.append(os.path.join(SRC_ROOT_DIR, 'python'))
>
> from qemu.machine import QEMUMachine
> +from qemu.accel import kvm_available, tcg_available
>
> def is_readable_executable_file(path):
> return os.path.isfile(path) and os.access(path, os.R_OK | os.X_OK)
> @@ -111,6 +112,8 @@ class Test(avocado.Test):
>
> def setUp(self):
> self._vms = {}
> + # VM argumments that are mapped from parameters
> + self._param_to_vm_args = []
>
> self.arch = self.params.get('arch',
> default=self._get_unique_tag_val('arch'))
> @@ -124,10 +127,30 @@ class Test(avocado.Test):
> if self.qemu_bin is None:
> self.cancel("No QEMU binary defined or found in the source tree")
>
> + self.accel = self.params.get('accel',
> +
> default=self._get_unique_tag_val('accel'))
> + if self.accel:
> + avail = False
> + if self.accel == 'kvm':
> + if kvm_available(self.arch, self.qemu_bin):
> + self._param_to_vm_args.append('-enable-kvm')
Could you please use "-accel kvm" instead? "-accel" is now our official
way to configure an accelerator ... so we should not use the old
wrappers in new code anymore if possible.
Thanks,
Thomas
PS: Travis supports KVM now, too (with some tweaking of the permissions)
... maybe we should now try to get some QEMU tests running with KVM
there, too...