Message ID | 20210430133414.39905-1-wainersm@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | tests/acceptance: Handle tests with "cpu" tag | expand |
Ping. Only patches 06 and 07 did not get any review. The series touches many files and it was last rebased months ago, so likely I will need to resolve rebase conflicts. But I would like to have the reviews of those patches before. Thanks! - Wainer On 4/30/21 10:34 AM, Wainer dos Santos Moschetta wrote: > Currently the acceptance tests tagged with "machine" have the "-M TYPE" > automatically added to the list of arguments of the QEMUMachine object. > In other words, that option is passed to the launched QEMU. On this > series it is implemented the same feature but instead for tests marked > with "cpu". > > There is a caveat, however, in case the test needs additional arguments to > the CPU type they cannot be passed via tag, because the tags parser split > values by comma (limitation which Avocado plans to address, see > https://github.com/avocado-framework/avocado/issues/45410). For example, in > tests/acceptance/x86_cpu_model_versions.py, there are cases where: > > * -cpu is set to "Cascadelake-Server,x-force-features=on,check=off,enforce=off" > * if it was tagged like "cpu:Cascadelake-Server,x-force-features=on,check=off,enforce=off" > then the parser would break it into 4 tags ("cpu:Cascadelake-Server", > "x-force-features=on", "check=off", "enforce=off") > * resulting on "-cpu Cascadelake-Server" and the remaining arguments are ignored. > > It was introduced the avocado_qemu.Test.set_vm_arg() method to deal with > cases like the example above, so that one can tag it as "cpu:Cascadelake-Server" > AND call self.set_vm_args('-cpu', "Cascadelake-Server,x-force-features=on,check=off,enforce=off"), > and that results on the reset of the initial value of -cpu. > > This series was tested on CI (https://gitlab.com/wainersm/qemu/-/pipelines/294640198) > and with the following code: > > from avocado_qemu import Test > > class CPUTest(Test): > def test_cpu(self): > """ > :avocado: tags=cpu:host > """ > # The cpu property is set to the tag value, or None on its absence > self.assertEqual(self.cpu, "host") > # The created VM has the '-cpu host' option > self.assertIn("-cpu host", " ".join(self.vm._args)) > self.vm.launch() > > def test_cpu_none(self): > self.assertEqual(self.cpu, None) > self.assertNotIn('-cpu', self.vm._args) > > def test_cpu_reset(self): > """ > :avocado: tags=cpu:host > """ > self.assertIn("-cpu host", " ".join(self.vm._args)) > self.set_vm_arg("-cpu", "Cascadelake-Server,x-force-features=on") > self.assertNotIn("-cpu host", " ".join(self.vm._args)) > self.assertIn("-cpu Cascadelake-Server,x-force-features=on", " ".join(self.vm._args)) > > Changes: > - v2 -> v3: > - The arg and value parameters of set_vm_arg() are now mandatories and > fixed an index out of bounds bug [crosa] > - Rebased. Needed to adapt the (new) boot_xen.py test (patch 03) > - v1 -> v2: > - Recognize the cpu value passed via test parameter [crosa] > - Fixed tags (patch 02) on preparation to patch 03 [crosa] > - Added QEMUMachine.args property (patch 04) so that _args could be handled > without pylint complaining (protected property) > - Added Test.set_vm_arg() (patch 05) to handle the corner case [crosa] > > Wainer dos Santos Moschetta (7): > tests/acceptance: Automatic set -cpu to the test vm > tests/acceptance: Fix mismatch on cpu tagged tests > tests/acceptance: Let the framework handle "cpu:VALUE" tagged tests > tests/acceptance: Tagging tests with "cpu:VALUE" > python/qemu: Add args property to the QEMUMachine class > tests/acceptance: Add set_vm_arg() to the Test class > tests/acceptance: Handle cpu tag on x86_cpu_model_versions tests > > docs/devel/testing.rst | 17 +++++++++ > python/qemu/machine.py | 5 +++ > tests/acceptance/avocado_qemu/__init__.py | 26 ++++++++++++++ > tests/acceptance/boot_linux.py | 3 -- > tests/acceptance/boot_linux_console.py | 16 +++++---- > tests/acceptance/boot_xen.py | 1 - > tests/acceptance/machine_mips_malta.py | 7 ++-- > tests/acceptance/pc_cpu_hotplug_props.py | 2 +- > tests/acceptance/replay_kernel.py | 17 ++++----- > tests/acceptance/reverse_debugging.py | 2 +- > tests/acceptance/tcg_plugins.py | 15 ++++---- > tests/acceptance/virtio-gpu.py | 4 +-- > tests/acceptance/x86_cpu_model_versions.py | 40 +++++++++++++++++----- > 13 files changed, 112 insertions(+), 43 deletions(-) >