qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Wainer dos Santos Moschetta <wainersm@redhat.com>
To: Cleber Rosa <crosa@redhat.com>, qemu-devel@nongnu.org
Cc: "Aleksandar Rikalo" <arikalo@wavecomp.com>,
	"Aurelien Jarno" <aurelien@aurel32.net>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Willian Rampazzo" <wrampazz@redhat.com>
Subject: Re: [PATCH 3/3] Acceptance Tests: use avocado tags for machine type
Date: Thu, 24 Oct 2019 18:24:25 -0300	[thread overview]
Message-ID: <e5d5f39e-dd45-ba24-fd66-ce467bf51237@redhat.com> (raw)
In-Reply-To: <20190924194501.9303-4-crosa@redhat.com>

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'),



  reply	other threads:[~2019-10-24 21:25 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-24 19:44 [PATCH 0/3] Acceptance tests: make better use of machine tags Cleber Rosa
2019-09-24 19:44 ` [PATCH 1/3] Acceptance test x86_cpu_model_versions: use default vm Cleber Rosa
2019-09-24 19:45 ` [PATCH 2/3] Acceptance tests: introduce utility method for tags unique vals Cleber Rosa
2019-10-24 21:12   ` Wainer dos Santos Moschetta
2019-10-28 23:02     ` Cleber Rosa
2019-11-07 18:29       ` Wainer dos Santos Moschetta
2019-09-24 19:45 ` [PATCH 3/3] Acceptance Tests: use avocado tags for machine type Cleber Rosa
2019-10-24 21:24   ` Wainer dos Santos Moschetta [this message]
2019-09-25  8:03 ` [PATCH 0/3] Acceptance tests: make better use of machine tags no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e5d5f39e-dd45-ba24-fd66-ce467bf51237@redhat.com \
    --to=wainersm@redhat.com \
    --cc=arikalo@wavecomp.com \
    --cc=aurelien@aurel32.net \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=wrampazz@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).