Message ID | 20190924194501.9303-4-crosa@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Acceptance tests: make better use of machine tags | expand |
Hello, On 9/24/19 4:45 PM, Cleber Rosa wrote: > The same way the arch tag is being used as a fallback for the arch > parameter, let's do the same for QEMU's machine and avoid some boiler > plate code. > > This requires a bump in the Avocado version, as starting with 72.0, > the characters supported in tags are less strict. > > Signed-off-by: Cleber Rosa <crosa@redhat.com> > --- > docs/devel/testing.rst | 18 ++++++++ > tests/acceptance/avocado_qemu/__init__.py | 5 ++ > tests/acceptance/boot_linux_console.py | 15 +----- > tests/acceptance/cpu_queries.py | 2 +- > tests/acceptance/linux_initrd.py | 2 +- > tests/acceptance/linux_ssh_mips_malta.py | 5 -- > tests/acceptance/machine_m68k_nextcube.py | 21 ++------- > tests/acceptance/x86_cpu_model_versions.py | 53 ++++++++++++++++------ > 8 files changed, 71 insertions(+), 50 deletions(-) Reviewed-by: Wainer dos Santos Moschetta <wainersm@redhat.com> > > diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst > index bf75675fb0..1816ada919 100644 > --- a/docs/devel/testing.rst > +++ b/docs/devel/testing.rst > @@ -744,6 +744,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=arch:VALUE`` tag, it will be set to ``VALUE``. > > +machine > +~~~~~~~ > + > +The machine type that will be set to all QEMUMachine instances created > +by the test. > + > +The ``machine`` 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=machine:VALUE`` tag, it will be set to ``VALUE``. > + > qemu_bin > ~~~~~~~~ > > @@ -779,6 +790,13 @@ architecture of a kernel or disk image to boot a VM with. > This parameter has a direct relation with the ``arch`` attribute. If > not given, it will default to None. > > +machine > +~~~~~~~ > + > +The machine type that will be set to all QEMUMachine instances created > +by the test. > + > + > qemu_bin > ~~~~~~~~ > > diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py > index 02775bafcf..fb5d6616bc 100644 > --- a/tests/acceptance/avocado_qemu/__init__.py > +++ b/tests/acceptance/avocado_qemu/__init__.py > @@ -69,6 +69,9 @@ class Test(avocado.Test): > self.arch = self.params.get('arch', > default=self._get_unique_tag_val('arch')) > > + self.machine = self.params.get('machine', > + default=self._get_unique_tag_val('machine')) > + > default_qemu_bin = pick_default_qemu_bin(arch=self.arch) > self.qemu_bin = self.params.get('qemu_bin', > default=default_qemu_bin) > @@ -90,6 +93,8 @@ class Test(avocado.Test): > name = str(uuid.uuid4()) > if self._vms.get(name) is None: > self._vms[name] = self._new_vm(*args) > + if self.machine is not None: > + self._vms[name].set_machine(self.machine) > return self._vms[name] > > def tearDown(self): > diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py > index 8a9a314ab4..3d2a53d4c8 100644 > --- a/tests/acceptance/boot_linux_console.py > +++ b/tests/acceptance/boot_linux_console.py > @@ -82,7 +82,6 @@ class BootLinuxConsole(Test): > kernel_hash = '23bebd2680757891cf7adedb033532163a792495' > kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) > > - self.vm.set_machine('pc') > self.vm.set_console() > kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' > self.vm.add_args('-kernel', kernel_path, > @@ -105,7 +104,6 @@ class BootLinuxConsole(Test): > kernel_path = self.extract_from_deb(deb_path, > '/boot/vmlinux-2.6.32-5-4kc-malta') > > - self.vm.set_machine('malta') > self.vm.set_console() > kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' > self.vm.add_args('-kernel', kernel_path, > @@ -138,7 +136,6 @@ class BootLinuxConsole(Test): > kernel_path = self.extract_from_deb(deb_path, > '/boot/vmlinux-2.6.32-5-5kc-malta') > > - self.vm.set_machine('malta') > self.vm.set_console() > kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' > self.vm.add_args('-kernel', kernel_path, > @@ -171,7 +168,6 @@ class BootLinuxConsole(Test): > with open(initrd_path, 'wb') as f_out: > shutil.copyfileobj(f_in, f_out) > > - self.vm.set_machine('malta') > self.vm.set_console() > kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE > + 'console=ttyS0 console=tty ' > @@ -197,7 +193,6 @@ class BootLinuxConsole(Test): > with open(kernel_path, 'wb') as f_out: > shutil.copyfileobj(f_in, f_out) > > - self.vm.set_machine('malta') > self.vm.set_console() > kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE > + 'mem=256m@@0x0 ' > @@ -257,7 +252,6 @@ class BootLinuxConsole(Test): > kernel_hash = '8c73e469fc6ea06a58dc83a628fc695b693b8493' > kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) > > - self.vm.set_machine('virt') > self.vm.set_console() > kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + > 'console=ttyAMA0') > @@ -279,7 +273,6 @@ class BootLinuxConsole(Test): > kernel_hash = 'e9826d741b4fb04cadba8d4824d1ed3b7fb8b4d4' > kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) > > - self.vm.set_machine('virt') > self.vm.set_console() > kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + > 'console=ttyAMA0') > @@ -292,7 +285,7 @@ class BootLinuxConsole(Test): > def test_arm_emcraft_sf2(self): > """ > :avocado: tags=arch:arm > - :avocado: tags=machine:emcraft_sf2 > + :avocado: tags=machine:emcraft-sf2 > :avocado: tags=endian:little > """ > uboot_url = ('https://raw.githubusercontent.com/' > @@ -306,7 +299,6 @@ class BootLinuxConsole(Test): > spi_hash = '85f698329d38de63aea6e884a86fbde70890a78a' > spi_path = self.fetch_asset(spi_url, asset_hash=spi_hash) > > - self.vm.set_machine('emcraft-sf2') > self.vm.set_console() > kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE > self.vm.add_args('-kernel', uboot_path, > @@ -319,7 +311,7 @@ class BootLinuxConsole(Test): > def test_s390x_s390_ccw_virtio(self): > """ > :avocado: tags=arch:s390x > - :avocado: tags=machine:s390_ccw_virtio > + :avocado: tags=machine:s390-ccw-virtio > """ > kernel_url = ('https://archives.fedoraproject.org/pub/archive' > '/fedora-secondary/releases/29/Everything/s390x/os/images' > @@ -327,7 +319,6 @@ class BootLinuxConsole(Test): > kernel_hash = 'e8e8439103ef8053418ef062644ffd46a7919313' > kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) > > - self.vm.set_machine('s390-ccw-virtio') > self.vm.set_console() > kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=sclp0' > self.vm.add_args('-nodefaults', > @@ -349,7 +340,6 @@ class BootLinuxConsole(Test): > > uncompressed_kernel = archive.uncompress(kernel_path, self.workdir) > > - self.vm.set_machine('clipper') > self.vm.set_console() > kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' > self.vm.add_args('-vga', 'std', > @@ -370,7 +360,6 @@ class BootLinuxConsole(Test): > kernel_hash = '3fe04abfc852b66653b8c3c897a59a689270bc77' > kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) > > - self.vm.set_machine('pseries') > self.vm.set_console() > kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=hvc0' > self.vm.add_args('-kernel', kernel_path, > diff --git a/tests/acceptance/cpu_queries.py b/tests/acceptance/cpu_queries.py > index af47d2795a..293dccb89a 100644 > --- a/tests/acceptance/cpu_queries.py > +++ b/tests/acceptance/cpu_queries.py > @@ -20,8 +20,8 @@ class QueryCPUModelExpansion(Test): > def test(self): > """ > :avocado: tags=arch:x86_64 > + :avocado: tags=machine:none > """ > - self.vm.set_machine('none') > self.vm.add_args('-S') > self.vm.launch() > > diff --git a/tests/acceptance/linux_initrd.py b/tests/acceptance/linux_initrd.py > index c61d9826a4..3a0ff7b098 100644 > --- a/tests/acceptance/linux_initrd.py > +++ b/tests/acceptance/linux_initrd.py > @@ -20,6 +20,7 @@ class LinuxInitrd(Test): > Checks QEMU evaluates correctly the initrd file passed as -initrd option. > > :avocado: tags=arch:x86_64 > + :avocado: tags=machine:pc > """ > > timeout = 300 > @@ -66,7 +67,6 @@ class LinuxInitrd(Test): > initrd.write(b'\0') > initrd.flush() > > - self.vm.set_machine('pc') > self.vm.set_console() > kernel_command_line = 'console=ttyS0' > self.vm.add_args('-kernel', kernel_path, > diff --git a/tests/acceptance/linux_ssh_mips_malta.py b/tests/acceptance/linux_ssh_mips_malta.py > index 25a1df5098..e40a57de51 100644 > --- a/tests/acceptance/linux_ssh_mips_malta.py > +++ b/tests/acceptance/linux_ssh_mips_malta.py > @@ -95,7 +95,6 @@ class LinuxSSH(Test): > image_hash = self.IMAGE_INFO[endianess]['image_hash'] > image_path = self.fetch_asset(image_url, asset_hash=image_hash) > > - self.vm.set_machine('malta') > self.vm.set_console() > kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE > + 'console=ttyS0 root=/dev/sda1') > @@ -199,7 +198,6 @@ class LinuxSSH(Test): > def test_mips_malta32eb_kernel3_2_0(self): > """ > :avocado: tags=arch:mips > - :avocado: tags=machine:malta > :avocado: tags=endian:big > :avocado: tags=device:pcnet32 > """ > @@ -213,7 +211,6 @@ class LinuxSSH(Test): > def test_mips_malta32el_kernel3_2_0(self): > """ > :avocado: tags=arch:mipsel > - :avocado: tags=machine:malta > :avocado: tags=endian:little > :avocado: tags=device:pcnet32 > """ > @@ -227,7 +224,6 @@ class LinuxSSH(Test): > def test_mips_malta64eb_kernel3_2_0(self): > """ > :avocado: tags=arch:mips64 > - :avocado: tags=machine:malta > :avocado: tags=endian:big > :avocado: tags=device:pcnet32 > """ > @@ -240,7 +236,6 @@ class LinuxSSH(Test): > def test_mips_malta64el_kernel3_2_0(self): > """ > :avocado: tags=arch:mips64el > - :avocado: tags=machine:malta > :avocado: tags=endian:little > :avocado: tags=device:pcnet32 > """ > diff --git a/tests/acceptance/machine_m68k_nextcube.py b/tests/acceptance/machine_m68k_nextcube.py > index fcd2c58ee7..32cf571f94 100644 > --- a/tests/acceptance/machine_m68k_nextcube.py > +++ b/tests/acceptance/machine_m68k_nextcube.py > @@ -43,6 +43,11 @@ def tesseract_available(expected_version): > > > class NextCubeMachine(Test): > + """ > + :avocado: tags=arch:m68k > + :avocado: tags=machine:next-cube > + :avocado: tags=device:framebuffer > + """ > > timeout = 15 > > @@ -52,7 +57,6 @@ class NextCubeMachine(Test): > rom_hash = 'b3534796abae238a0111299fc406a9349f7fee24' > rom_path = self.fetch_asset(rom_url, asset_hash=rom_hash) > > - self.vm.set_machine('next-cube') > self.vm.add_args('-bios', rom_path) > self.vm.launch() > > @@ -66,11 +70,6 @@ class NextCubeMachine(Test): > > @skipUnless(PIL_AVAILABLE, 'Python PIL not installed') > def test_bootrom_framebuffer_size(self): > - """ > - :avocado: tags=arch:m68k > - :avocado: tags=machine:next_cube > - :avocado: tags=device:framebuffer > - """ > screenshot_path = os.path.join(self.workdir, "dump.png") > self.check_bootrom_framebuffer(screenshot_path) > > @@ -80,11 +79,6 @@ class NextCubeMachine(Test): > > @skipUnless(tesseract_available(3), 'tesseract v3 OCR tool not available') > def test_bootrom_framebuffer_ocr_with_tesseract_v3(self): > - """ > - :avocado: tags=arch:m68k > - :avocado: tags=machine:next_cube > - :avocado: tags=device:framebuffer > - """ > screenshot_path = os.path.join(self.workdir, "dump.png") > self.check_bootrom_framebuffer(screenshot_path) > > @@ -101,11 +95,6 @@ class NextCubeMachine(Test): > # that it is still alpha-level software. > @skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not available') > def test_bootrom_framebuffer_ocr_with_tesseract_v4(self): > - """ > - :avocado: tags=arch:m68k > - :avocado: tags=machine:next_cube > - :avocado: tags=device:framebuffer > - """ > screenshot_path = os.path.join(self.workdir, "dump.png") > self.check_bootrom_framebuffer(screenshot_path) > > diff --git a/tests/acceptance/x86_cpu_model_versions.py b/tests/acceptance/x86_cpu_model_versions.py > index 6eb977954d..90558d9a71 100644 > --- a/tests/acceptance/x86_cpu_model_versions.py > +++ b/tests/acceptance/x86_cpu_model_versions.py > @@ -75,12 +75,15 @@ class X86CPUModelAliases(avocado_qemu.Test): > "EPYC-IBPB shouldn't be versioned") > > def test_4_0_alias_compatibility(self): > - """Check if pc-*-4.0 unversioned CPU model won't be reported as aliases""" > + """ > + Check if pc-*-4.0 unversioned CPU model won't be reported as aliases > + > + :avocado: tags=machine:pc-i440fx-4.0 > + """ > # pc-*-4.0 won't expose non-versioned CPU models as aliases > # We do this to help management software to keep compatibility > # with older QEMU versions that didn't have the versioned CPU model > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.0') > self.vm.launch() > cpus = dict((m['name'], m) for m in self.vm.command('query-cpu-definitions')) > > @@ -105,9 +108,12 @@ class X86CPUModelAliases(avocado_qemu.Test): > self.assertNotIn('alias-of', c, "%s shouldn't be an alias" % (name)) > > def test_4_1_alias(self): > - """Check if unversioned CPU model is an alias pointing to right version""" > + """ > + Check if unversioned CPU model is an alias pointing to right version > + > + :avocado: tags=machine:pc-i440fx-4.1 > + """ > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.1') > self.vm.launch() > > cpus = dict((m['name'], m) for m in self.vm.command('query-cpu-definitions')) > @@ -207,9 +213,12 @@ class X86CPUModelAliases(avocado_qemu.Test): > self.validate_aliases(cpus) > > def test_none_alias(self): > - """Check if unversioned CPU model is an alias pointing to some version""" > + """ > + Check if unversioned CPU model is an alias pointing to some version > + > + :avocado: tags=machine:none > + """ > self.vm.add_args('-S') > - self.vm.set_machine('none') > self.vm.launch() > > cpus = dict((m['name'], m) for m in self.vm.command('query-cpu-definitions')) > @@ -242,68 +251,84 @@ class CascadelakeArchCapabilities(avocado_qemu.Test): > return self.vm.command('qom-get', path=cpu_path, property=prop) > > def test_4_1(self): > + """ > + :avocado: tags=machine:pc-i440fx-4.1 > + """ > # machine-type only: > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.1') > self.vm.add_args('-cpu', 'Cascadelake-Server,x-force-features=on,check=off,enforce=off') > self.vm.launch() > self.assertFalse(self.get_cpu_prop('arch-capabilities'), > 'pc-i440fx-4.1 + Cascadelake-Server should not have arch-capabilities') > > def test_4_0(self): > + """ > + :avocado: tags=machine:pc-i440fx-4.0 > + """ > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.0') > self.vm.add_args('-cpu', 'Cascadelake-Server,x-force-features=on,check=off,enforce=off') > self.vm.launch() > self.assertFalse(self.get_cpu_prop('arch-capabilities'), > 'pc-i440fx-4.0 + Cascadelake-Server should not have arch-capabilities') > > def test_set_4_0(self): > + """ > + :avocado: tags=machine:pc-i440fx-4.0 > + """ > # command line must override machine-type if CPU model is not versioned: > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.0') > self.vm.add_args('-cpu', 'Cascadelake-Server,x-force-features=on,check=off,enforce=off,+arch-capabilities') > self.vm.launch() > self.assertTrue(self.get_cpu_prop('arch-capabilities'), > 'pc-i440fx-4.0 + Cascadelake-Server,+arch-capabilities should have arch-capabilities') > > def test_unset_4_1(self): > + """ > + :avocado: tags=machine:pc-i440fx-4.1 > + """ > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.1') > self.vm.add_args('-cpu', 'Cascadelake-Server,x-force-features=on,check=off,enforce=off,-arch-capabilities') > self.vm.launch() > self.assertFalse(self.get_cpu_prop('arch-capabilities'), > 'pc-i440fx-4.1 + Cascadelake-Server,-arch-capabilities should not have arch-capabilities') > > def test_v1_4_0(self): > + """ > + :avocado: tags=machine:pc-i440fx-4.0 > + """ > # versioned CPU model overrides machine-type: > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.0') > self.vm.add_args('-cpu', 'Cascadelake-Server-v1,x-force-features=on,check=off,enforce=off') > self.vm.launch() > self.assertFalse(self.get_cpu_prop('arch-capabilities'), > 'pc-i440fx-4.0 + Cascadelake-Server-v1 should not have arch-capabilities') > > def test_v2_4_0(self): > + """ > + :avocado: tags=machine:pc-i440fx-4.0 > + """ > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.0') > self.vm.add_args('-cpu', 'Cascadelake-Server-v2,x-force-features=on,check=off,enforce=off') > self.vm.launch() > self.assertTrue(self.get_cpu_prop('arch-capabilities'), > 'pc-i440fx-4.0 + Cascadelake-Server-v2 should have arch-capabilities') > > def test_v1_set_4_0(self): > + """ > + :avocado: tags=machine:pc-i440fx-4.0 > + """ > # command line must override machine-type and versioned CPU model: > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.0') > self.vm.add_args('-cpu', 'Cascadelake-Server-v1,x-force-features=on,check=off,enforce=off,+arch-capabilities') > self.vm.launch() > self.assertTrue(self.get_cpu_prop('arch-capabilities'), > 'pc-i440fx-4.0 + Cascadelake-Server-v1,+arch-capabilities should have arch-capabilities') > > def test_v2_unset_4_1(self): > + """ > + :avocado: tags=machine:pc-i440fx-4.1 > + """ > self.vm.add_args('-S') > - self.vm.set_machine('pc-i440fx-4.1') > self.vm.add_args('-cpu', 'Cascadelake-Server-v2,x-force-features=on,check=off,enforce=off,-arch-capabilities') > self.vm.launch() > self.assertFalse(self.get_cpu_prop('arch-capabilities'),
diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst index bf75675fb0..1816ada919 100644 --- a/docs/devel/testing.rst +++ b/docs/devel/testing.rst @@ -744,6 +744,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=arch:VALUE`` tag, it will be set to ``VALUE``. +machine +~~~~~~~ + +The machine type that will be set to all QEMUMachine instances created +by the test. + +The ``machine`` 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=machine:VALUE`` tag, it will be set to ``VALUE``. + qemu_bin ~~~~~~~~ @@ -779,6 +790,13 @@ architecture of a kernel or disk image to boot a VM with. This parameter has a direct relation with the ``arch`` attribute. If not given, it will default to None. +machine +~~~~~~~ + +The machine type that will be set to all QEMUMachine instances created +by the test. + + qemu_bin ~~~~~~~~ diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py index 02775bafcf..fb5d6616bc 100644 --- a/tests/acceptance/avocado_qemu/__init__.py +++ b/tests/acceptance/avocado_qemu/__init__.py @@ -69,6 +69,9 @@ class Test(avocado.Test): self.arch = self.params.get('arch', default=self._get_unique_tag_val('arch')) + self.machine = self.params.get('machine', + default=self._get_unique_tag_val('machine')) + default_qemu_bin = pick_default_qemu_bin(arch=self.arch) self.qemu_bin = self.params.get('qemu_bin', default=default_qemu_bin) @@ -90,6 +93,8 @@ class Test(avocado.Test): name = str(uuid.uuid4()) if self._vms.get(name) is None: self._vms[name] = self._new_vm(*args) + if self.machine is not None: + self._vms[name].set_machine(self.machine) return self._vms[name] def tearDown(self): diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py index 8a9a314ab4..3d2a53d4c8 100644 --- a/tests/acceptance/boot_linux_console.py +++ b/tests/acceptance/boot_linux_console.py @@ -82,7 +82,6 @@ class BootLinuxConsole(Test): kernel_hash = '23bebd2680757891cf7adedb033532163a792495' kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) - self.vm.set_machine('pc') self.vm.set_console() kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' self.vm.add_args('-kernel', kernel_path, @@ -105,7 +104,6 @@ class BootLinuxConsole(Test): kernel_path = self.extract_from_deb(deb_path, '/boot/vmlinux-2.6.32-5-4kc-malta') - self.vm.set_machine('malta') self.vm.set_console() kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' self.vm.add_args('-kernel', kernel_path, @@ -138,7 +136,6 @@ class BootLinuxConsole(Test): kernel_path = self.extract_from_deb(deb_path, '/boot/vmlinux-2.6.32-5-5kc-malta') - self.vm.set_machine('malta') self.vm.set_console() kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' self.vm.add_args('-kernel', kernel_path, @@ -171,7 +168,6 @@ class BootLinuxConsole(Test): with open(initrd_path, 'wb') as f_out: shutil.copyfileobj(f_in, f_out) - self.vm.set_machine('malta') self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0 console=tty ' @@ -197,7 +193,6 @@ class BootLinuxConsole(Test): with open(kernel_path, 'wb') as f_out: shutil.copyfileobj(f_in, f_out) - self.vm.set_machine('malta') self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 'mem=256m@@0x0 ' @@ -257,7 +252,6 @@ class BootLinuxConsole(Test): kernel_hash = '8c73e469fc6ea06a58dc83a628fc695b693b8493' kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) - self.vm.set_machine('virt') self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyAMA0') @@ -279,7 +273,6 @@ class BootLinuxConsole(Test): kernel_hash = 'e9826d741b4fb04cadba8d4824d1ed3b7fb8b4d4' kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) - self.vm.set_machine('virt') self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyAMA0') @@ -292,7 +285,7 @@ class BootLinuxConsole(Test): def test_arm_emcraft_sf2(self): """ :avocado: tags=arch:arm - :avocado: tags=machine:emcraft_sf2 + :avocado: tags=machine:emcraft-sf2 :avocado: tags=endian:little """ uboot_url = ('https://raw.githubusercontent.com/' @@ -306,7 +299,6 @@ class BootLinuxConsole(Test): spi_hash = '85f698329d38de63aea6e884a86fbde70890a78a' spi_path = self.fetch_asset(spi_url, asset_hash=spi_hash) - self.vm.set_machine('emcraft-sf2') self.vm.set_console() kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE self.vm.add_args('-kernel', uboot_path, @@ -319,7 +311,7 @@ class BootLinuxConsole(Test): def test_s390x_s390_ccw_virtio(self): """ :avocado: tags=arch:s390x - :avocado: tags=machine:s390_ccw_virtio + :avocado: tags=machine:s390-ccw-virtio """ kernel_url = ('https://archives.fedoraproject.org/pub/archive' '/fedora-secondary/releases/29/Everything/s390x/os/images' @@ -327,7 +319,6 @@ class BootLinuxConsole(Test): kernel_hash = 'e8e8439103ef8053418ef062644ffd46a7919313' kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) - self.vm.set_machine('s390-ccw-virtio') self.vm.set_console() kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=sclp0' self.vm.add_args('-nodefaults', @@ -349,7 +340,6 @@ class BootLinuxConsole(Test): uncompressed_kernel = archive.uncompress(kernel_path, self.workdir) - self.vm.set_machine('clipper') self.vm.set_console() kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' self.vm.add_args('-vga', 'std', @@ -370,7 +360,6 @@ class BootLinuxConsole(Test): kernel_hash = '3fe04abfc852b66653b8c3c897a59a689270bc77' kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) - self.vm.set_machine('pseries') self.vm.set_console() kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=hvc0' self.vm.add_args('-kernel', kernel_path, diff --git a/tests/acceptance/cpu_queries.py b/tests/acceptance/cpu_queries.py index af47d2795a..293dccb89a 100644 --- a/tests/acceptance/cpu_queries.py +++ b/tests/acceptance/cpu_queries.py @@ -20,8 +20,8 @@ class QueryCPUModelExpansion(Test): def test(self): """ :avocado: tags=arch:x86_64 + :avocado: tags=machine:none """ - self.vm.set_machine('none') self.vm.add_args('-S') self.vm.launch() diff --git a/tests/acceptance/linux_initrd.py b/tests/acceptance/linux_initrd.py index c61d9826a4..3a0ff7b098 100644 --- a/tests/acceptance/linux_initrd.py +++ b/tests/acceptance/linux_initrd.py @@ -20,6 +20,7 @@ class LinuxInitrd(Test): Checks QEMU evaluates correctly the initrd file passed as -initrd option. :avocado: tags=arch:x86_64 + :avocado: tags=machine:pc """ timeout = 300 @@ -66,7 +67,6 @@ class LinuxInitrd(Test): initrd.write(b'\0') initrd.flush() - self.vm.set_machine('pc') self.vm.set_console() kernel_command_line = 'console=ttyS0' self.vm.add_args('-kernel', kernel_path, diff --git a/tests/acceptance/linux_ssh_mips_malta.py b/tests/acceptance/linux_ssh_mips_malta.py index 25a1df5098..e40a57de51 100644 --- a/tests/acceptance/linux_ssh_mips_malta.py +++ b/tests/acceptance/linux_ssh_mips_malta.py @@ -95,7 +95,6 @@ class LinuxSSH(Test): image_hash = self.IMAGE_INFO[endianess]['image_hash'] image_path = self.fetch_asset(image_url, asset_hash=image_hash) - self.vm.set_machine('malta') self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0 root=/dev/sda1') @@ -199,7 +198,6 @@ class LinuxSSH(Test): def test_mips_malta32eb_kernel3_2_0(self): """ :avocado: tags=arch:mips - :avocado: tags=machine:malta :avocado: tags=endian:big :avocado: tags=device:pcnet32 """ @@ -213,7 +211,6 @@ class LinuxSSH(Test): def test_mips_malta32el_kernel3_2_0(self): """ :avocado: tags=arch:mipsel - :avocado: tags=machine:malta :avocado: tags=endian:little :avocado: tags=device:pcnet32 """ @@ -227,7 +224,6 @@ class LinuxSSH(Test): def test_mips_malta64eb_kernel3_2_0(self): """ :avocado: tags=arch:mips64 - :avocado: tags=machine:malta :avocado: tags=endian:big :avocado: tags=device:pcnet32 """ @@ -240,7 +236,6 @@ class LinuxSSH(Test): def test_mips_malta64el_kernel3_2_0(self): """ :avocado: tags=arch:mips64el - :avocado: tags=machine:malta :avocado: tags=endian:little :avocado: tags=device:pcnet32 """ diff --git a/tests/acceptance/machine_m68k_nextcube.py b/tests/acceptance/machine_m68k_nextcube.py index fcd2c58ee7..32cf571f94 100644 --- a/tests/acceptance/machine_m68k_nextcube.py +++ b/tests/acceptance/machine_m68k_nextcube.py @@ -43,6 +43,11 @@ def tesseract_available(expected_version): class NextCubeMachine(Test): + """ + :avocado: tags=arch:m68k + :avocado: tags=machine:next-cube + :avocado: tags=device:framebuffer + """ timeout = 15 @@ -52,7 +57,6 @@ class NextCubeMachine(Test): rom_hash = 'b3534796abae238a0111299fc406a9349f7fee24' rom_path = self.fetch_asset(rom_url, asset_hash=rom_hash) - self.vm.set_machine('next-cube') self.vm.add_args('-bios', rom_path) self.vm.launch() @@ -66,11 +70,6 @@ class NextCubeMachine(Test): @skipUnless(PIL_AVAILABLE, 'Python PIL not installed') def test_bootrom_framebuffer_size(self): - """ - :avocado: tags=arch:m68k - :avocado: tags=machine:next_cube - :avocado: tags=device:framebuffer - """ screenshot_path = os.path.join(self.workdir, "dump.png") self.check_bootrom_framebuffer(screenshot_path) @@ -80,11 +79,6 @@ class NextCubeMachine(Test): @skipUnless(tesseract_available(3), 'tesseract v3 OCR tool not available') def test_bootrom_framebuffer_ocr_with_tesseract_v3(self): - """ - :avocado: tags=arch:m68k - :avocado: tags=machine:next_cube - :avocado: tags=device:framebuffer - """ screenshot_path = os.path.join(self.workdir, "dump.png") self.check_bootrom_framebuffer(screenshot_path) @@ -101,11 +95,6 @@ class NextCubeMachine(Test): # that it is still alpha-level software. @skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not available') def test_bootrom_framebuffer_ocr_with_tesseract_v4(self): - """ - :avocado: tags=arch:m68k - :avocado: tags=machine:next_cube - :avocado: tags=device:framebuffer - """ screenshot_path = os.path.join(self.workdir, "dump.png") self.check_bootrom_framebuffer(screenshot_path) diff --git a/tests/acceptance/x86_cpu_model_versions.py b/tests/acceptance/x86_cpu_model_versions.py index 6eb977954d..90558d9a71 100644 --- a/tests/acceptance/x86_cpu_model_versions.py +++ b/tests/acceptance/x86_cpu_model_versions.py @@ -75,12 +75,15 @@ class X86CPUModelAliases(avocado_qemu.Test): "EPYC-IBPB shouldn't be versioned") def test_4_0_alias_compatibility(self): - """Check if pc-*-4.0 unversioned CPU model won't be reported as aliases""" + """ + Check if pc-*-4.0 unversioned CPU model won't be reported as aliases + + :avocado: tags=machine:pc-i440fx-4.0 + """ # pc-*-4.0 won't expose non-versioned CPU models as aliases # We do this to help management software to keep compatibility # with older QEMU versions that didn't have the versioned CPU model self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.0') self.vm.launch() cpus = dict((m['name'], m) for m in self.vm.command('query-cpu-definitions')) @@ -105,9 +108,12 @@ class X86CPUModelAliases(avocado_qemu.Test): self.assertNotIn('alias-of', c, "%s shouldn't be an alias" % (name)) def test_4_1_alias(self): - """Check if unversioned CPU model is an alias pointing to right version""" + """ + Check if unversioned CPU model is an alias pointing to right version + + :avocado: tags=machine:pc-i440fx-4.1 + """ self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.1') self.vm.launch() cpus = dict((m['name'], m) for m in self.vm.command('query-cpu-definitions')) @@ -207,9 +213,12 @@ class X86CPUModelAliases(avocado_qemu.Test): self.validate_aliases(cpus) def test_none_alias(self): - """Check if unversioned CPU model is an alias pointing to some version""" + """ + Check if unversioned CPU model is an alias pointing to some version + + :avocado: tags=machine:none + """ self.vm.add_args('-S') - self.vm.set_machine('none') self.vm.launch() cpus = dict((m['name'], m) for m in self.vm.command('query-cpu-definitions')) @@ -242,68 +251,84 @@ class CascadelakeArchCapabilities(avocado_qemu.Test): return self.vm.command('qom-get', path=cpu_path, property=prop) def test_4_1(self): + """ + :avocado: tags=machine:pc-i440fx-4.1 + """ # machine-type only: self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.1') self.vm.add_args('-cpu', 'Cascadelake-Server,x-force-features=on,check=off,enforce=off') self.vm.launch() self.assertFalse(self.get_cpu_prop('arch-capabilities'), 'pc-i440fx-4.1 + Cascadelake-Server should not have arch-capabilities') def test_4_0(self): + """ + :avocado: tags=machine:pc-i440fx-4.0 + """ self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.0') self.vm.add_args('-cpu', 'Cascadelake-Server,x-force-features=on,check=off,enforce=off') self.vm.launch() self.assertFalse(self.get_cpu_prop('arch-capabilities'), 'pc-i440fx-4.0 + Cascadelake-Server should not have arch-capabilities') def test_set_4_0(self): + """ + :avocado: tags=machine:pc-i440fx-4.0 + """ # command line must override machine-type if CPU model is not versioned: self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.0') self.vm.add_args('-cpu', 'Cascadelake-Server,x-force-features=on,check=off,enforce=off,+arch-capabilities') self.vm.launch() self.assertTrue(self.get_cpu_prop('arch-capabilities'), 'pc-i440fx-4.0 + Cascadelake-Server,+arch-capabilities should have arch-capabilities') def test_unset_4_1(self): + """ + :avocado: tags=machine:pc-i440fx-4.1 + """ self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.1') self.vm.add_args('-cpu', 'Cascadelake-Server,x-force-features=on,check=off,enforce=off,-arch-capabilities') self.vm.launch() self.assertFalse(self.get_cpu_prop('arch-capabilities'), 'pc-i440fx-4.1 + Cascadelake-Server,-arch-capabilities should not have arch-capabilities') def test_v1_4_0(self): + """ + :avocado: tags=machine:pc-i440fx-4.0 + """ # versioned CPU model overrides machine-type: self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.0') self.vm.add_args('-cpu', 'Cascadelake-Server-v1,x-force-features=on,check=off,enforce=off') self.vm.launch() self.assertFalse(self.get_cpu_prop('arch-capabilities'), 'pc-i440fx-4.0 + Cascadelake-Server-v1 should not have arch-capabilities') def test_v2_4_0(self): + """ + :avocado: tags=machine:pc-i440fx-4.0 + """ self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.0') self.vm.add_args('-cpu', 'Cascadelake-Server-v2,x-force-features=on,check=off,enforce=off') self.vm.launch() self.assertTrue(self.get_cpu_prop('arch-capabilities'), 'pc-i440fx-4.0 + Cascadelake-Server-v2 should have arch-capabilities') def test_v1_set_4_0(self): + """ + :avocado: tags=machine:pc-i440fx-4.0 + """ # command line must override machine-type and versioned CPU model: self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.0') self.vm.add_args('-cpu', 'Cascadelake-Server-v1,x-force-features=on,check=off,enforce=off,+arch-capabilities') self.vm.launch() self.assertTrue(self.get_cpu_prop('arch-capabilities'), 'pc-i440fx-4.0 + Cascadelake-Server-v1,+arch-capabilities should have arch-capabilities') def test_v2_unset_4_1(self): + """ + :avocado: tags=machine:pc-i440fx-4.1 + """ self.vm.add_args('-S') - self.vm.set_machine('pc-i440fx-4.1') self.vm.add_args('-cpu', 'Cascadelake-Server-v2,x-force-features=on,check=off,enforce=off,-arch-capabilities') self.vm.launch() self.assertFalse(self.get_cpu_prop('arch-capabilities'),
The same way the arch tag is being used as a fallback for the arch parameter, let's do the same for QEMU's machine and avoid some boiler plate code. This requires a bump in the Avocado version, as starting with 72.0, the characters supported in tags are less strict. Signed-off-by: Cleber Rosa <crosa@redhat.com> --- docs/devel/testing.rst | 18 ++++++++ tests/acceptance/avocado_qemu/__init__.py | 5 ++ tests/acceptance/boot_linux_console.py | 15 +----- tests/acceptance/cpu_queries.py | 2 +- tests/acceptance/linux_initrd.py | 2 +- tests/acceptance/linux_ssh_mips_malta.py | 5 -- tests/acceptance/machine_m68k_nextcube.py | 21 ++------- tests/acceptance/x86_cpu_model_versions.py | 53 ++++++++++++++++------ 8 files changed, 71 insertions(+), 50 deletions(-)