[PATCH 00/16] tests: do more testing of block drivers

Daniel P. Berrangé posted 16 patches 1 month ago
Failed in applying to current master (apply log)
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>
There is a newer version of this series
.gitlab-ci.d/buildtest-template.yml           |  30 +++--
.gitlab-ci.d/buildtest.yml                    | 107 ++++++++++++++++--
docs/devel/testing/main.rst                   |  33 +++++-
python/scripts/vendor.py                      |   4 +-
...ny.whl => qemu_qmp-0.0.6-py3-none-any.whl} | Bin 72263 -> 72379 bytes
pythondeps.toml                               |   2 +-
scripts/mtest2make.py                         |  30 +++--
tests/Makefile.include                        |   3 +-
tests/qemu-iotests/128                        |   6 +
tests/qemu-iotests/149                        |  13 ++-
tests/qemu-iotests/meson.build                |  59 ++++++++--
tests/qemu-iotests/testrunner.py              |  18 ++-
12 files changed, 254 insertions(+), 51 deletions(-)
rename python/wheels/{qemu_qmp-0.0.5-py3-none-any.whl => qemu_qmp-0.0.6-py3-none-any.whl} (64%)
[PATCH 00/16] tests: do more testing of block drivers
Posted by Daniel P. Berrangé 1 month ago
 v1: https://lists.nongnu.org/archive/html/qemu-devel/2025-10/msg01650.html
 v2: https://lists.nongnu.org/archive/html/qemu-devel/2026-01/msg02083.html
 v3: https://lists.nongnu.org/archive/html/qemu-devel/2026-01/msg02939.html
 v4: https://lists.nongnu.org/archive/html/qemu-devel/2026-02/msg03245.html
 v5: https://lists.nongnu.org/archive/html/qemu-devel/2026-03/msg01252.html

The recent (at the time of v1) set of regressions identified in the LUKS
block driver re-inforced that despite having a hugely useful set of I/O
tests, our CI coverage is still letting through too many bugs.

The core goals of this series were/are:

 * Add LUKS and NBD to the tested formats/protocols
   integrated into "make check-block SPEED=thorough"

 * Ensure that all qcow2 tests can be run with "SPEED=slow",
   not staying limited to only the 'auto' group used by the
   'make check-block' target in its default 'quick' mode

 * Add  'make check-block-$FORMAT' to expose a standalone
   target for running all tests for a given format (or
   equivalently a protocol)

 * Add GitLab CI jobs for exercising tests for all formats

A sample pipeline for this is

  https://gitlab.com/berrange/qemu/-/pipelines/2258731804/

Showing the 'block-FORMAT' jobs which test the 10 block formats/protocols
currently enabled.

This series fixes a couple of bugs

 * Test 128 check for device mapper usage doesn't work
   sufficiently well to detect gitlab's containe env
   can't do dynamic devfs

 * Test 185 is reliably failing on gitlab

 * Two tests fail when run on CentOS 9 because they trigger
   python deprecation warnings. This will be fixed when the
   python-qemu-qmp module is next released.

Testing of pipelines throughout development of v1-v5 postings does not
exhibit any non-deterministic failures with the shared runners. Hopefully
that will apply to QEMU's private runners used forthe staging tree too.

At this point it is a chicken & egg problem though.

If we don't bite the bullet and enable block I/O tests in GitLab CI for
everyone, we'll never find out if they're truely stable enough to rely
on.

As a mitigation against instability a patch in this series adds a new
QEMU_TEST_IO_SKIP env variable that we are able to set as a GitLab CI
env variable. This lets us skip broken tests dynamically without waiting
for a git commit to disable them in the buildtest.yml config that we
use for disabling the 3 known broken tests currently.

Changed in v6:

  - Drop redundant change from gitlab yml config
  - Pull in rebase for qemu.qmp to 0.6.0 to fix two tests
    by avoiding deprecation warnings

Changed in v5:

  - Adapt for python-qemu-qmp being spun off, by temp disabling
    tests that are broken by it, that we formerly fixed in-tree.

Changed in v4:

  - Remove tests from build-tcg-disabled job

Changed in v3:

  - Test whether dmsetup create device appeared or not, instead
    of unconditionally skipping test 128 in GitLab
  - Use 'driver' term instead of 'format' or 'protocol'
  - Fix misc typos & rephrasing

Daniel P. Berrangé (15):
  gitlab: ensure all meson jobs capture build/meson-logs by default
  tests: print reason when I/O test is skipped in TAP mode
  tests: remove redundant meson suite for iotests
  tests: ensure all qcow2 I/O tests are able to be run via make
  scripts/mtest2make: ensure output has stable sorting
  scripts/mtest2make: support optional tests grouping
  tests: add a meson suite / make target per block I/O tests format
  docs/devel/testing: expand documentation for 'make check-block'
  tests: add nbd and luks to the I/O test suites
  tests: use 'driver' as collective term for either format or protocol
  tests: validate dmsetup result in test 128
  tests: fix check for sudo access in LUKS I/O test
  tests: add QEMU_TEST_IO_SKIP for skipping I/O tests
  gitlab: add jobs for thorough block tests
  gitlab: remove I/O tests from build-tcg-disabled job

John Snow (1):
  python: bump qemu.qmp to v0.0.6

 .gitlab-ci.d/buildtest-template.yml           |  30 +++--
 .gitlab-ci.d/buildtest.yml                    | 107 ++++++++++++++++--
 docs/devel/testing/main.rst                   |  33 +++++-
 python/scripts/vendor.py                      |   4 +-
 ...ny.whl => qemu_qmp-0.0.6-py3-none-any.whl} | Bin 72263 -> 72379 bytes
 pythondeps.toml                               |   2 +-
 scripts/mtest2make.py                         |  30 +++--
 tests/Makefile.include                        |   3 +-
 tests/qemu-iotests/128                        |   6 +
 tests/qemu-iotests/149                        |  13 ++-
 tests/qemu-iotests/meson.build                |  59 ++++++++--
 tests/qemu-iotests/testrunner.py              |  18 ++-
 12 files changed, 254 insertions(+), 51 deletions(-)
 rename python/wheels/{qemu_qmp-0.0.5-py3-none-any.whl => qemu_qmp-0.0.6-py3-none-any.whl} (64%)

-- 
2.53.0


Re: [PATCH 00/16] tests: do more testing of block drivers
Posted by Daniel P. Berrangé 1 week, 5 days ago
ping: is there any more feedback on series ?

I'd really like to get the block driver CI coverage improved
to prevent further regressions in currently untested drivers.

On Fri, Apr 24, 2026 at 04:41:48PM +0100, Daniel P. Berrangé wrote:
>  v1: https://lists.nongnu.org/archive/html/qemu-devel/2025-10/msg01650.html
>  v2: https://lists.nongnu.org/archive/html/qemu-devel/2026-01/msg02083.html
>  v3: https://lists.nongnu.org/archive/html/qemu-devel/2026-01/msg02939.html
>  v4: https://lists.nongnu.org/archive/html/qemu-devel/2026-02/msg03245.html
>  v5: https://lists.nongnu.org/archive/html/qemu-devel/2026-03/msg01252.html
> 
> The recent (at the time of v1) set of regressions identified in the LUKS
> block driver re-inforced that despite having a hugely useful set of I/O
> tests, our CI coverage is still letting through too many bugs.
> 
> The core goals of this series were/are:
> 
>  * Add LUKS and NBD to the tested formats/protocols
>    integrated into "make check-block SPEED=thorough"
> 
>  * Ensure that all qcow2 tests can be run with "SPEED=slow",
>    not staying limited to only the 'auto' group used by the
>    'make check-block' target in its default 'quick' mode
> 
>  * Add  'make check-block-$FORMAT' to expose a standalone
>    target for running all tests for a given format (or
>    equivalently a protocol)
> 
>  * Add GitLab CI jobs for exercising tests for all formats
> 
> A sample pipeline for this is
> 
>   https://gitlab.com/berrange/qemu/-/pipelines/2258731804/
> 
> Showing the 'block-FORMAT' jobs which test the 10 block formats/protocols
> currently enabled.
> 
> This series fixes a couple of bugs
> 
>  * Test 128 check for device mapper usage doesn't work
>    sufficiently well to detect gitlab's containe env
>    can't do dynamic devfs
> 
>  * Test 185 is reliably failing on gitlab
> 
>  * Two tests fail when run on CentOS 9 because they trigger
>    python deprecation warnings. This will be fixed when the
>    python-qemu-qmp module is next released.
> 
> Testing of pipelines throughout development of v1-v5 postings does not
> exhibit any non-deterministic failures with the shared runners. Hopefully
> that will apply to QEMU's private runners used forthe staging tree too.
> 
> At this point it is a chicken & egg problem though.
> 
> If we don't bite the bullet and enable block I/O tests in GitLab CI for
> everyone, we'll never find out if they're truely stable enough to rely
> on.
> 
> As a mitigation against instability a patch in this series adds a new
> QEMU_TEST_IO_SKIP env variable that we are able to set as a GitLab CI
> env variable. This lets us skip broken tests dynamically without waiting
> for a git commit to disable them in the buildtest.yml config that we
> use for disabling the 3 known broken tests currently.
> 
> Changed in v6:
> 
>   - Drop redundant change from gitlab yml config
>   - Pull in rebase for qemu.qmp to 0.6.0 to fix two tests
>     by avoiding deprecation warnings
> 
> Changed in v5:
> 
>   - Adapt for python-qemu-qmp being spun off, by temp disabling
>     tests that are broken by it, that we formerly fixed in-tree.
> 
> Changed in v4:
> 
>   - Remove tests from build-tcg-disabled job
> 
> Changed in v3:
> 
>   - Test whether dmsetup create device appeared or not, instead
>     of unconditionally skipping test 128 in GitLab
>   - Use 'driver' term instead of 'format' or 'protocol'
>   - Fix misc typos & rephrasing
> 
> Daniel P. Berrangé (15):
>   gitlab: ensure all meson jobs capture build/meson-logs by default
>   tests: print reason when I/O test is skipped in TAP mode
>   tests: remove redundant meson suite for iotests
>   tests: ensure all qcow2 I/O tests are able to be run via make
>   scripts/mtest2make: ensure output has stable sorting
>   scripts/mtest2make: support optional tests grouping
>   tests: add a meson suite / make target per block I/O tests format
>   docs/devel/testing: expand documentation for 'make check-block'
>   tests: add nbd and luks to the I/O test suites
>   tests: use 'driver' as collective term for either format or protocol
>   tests: validate dmsetup result in test 128
>   tests: fix check for sudo access in LUKS I/O test
>   tests: add QEMU_TEST_IO_SKIP for skipping I/O tests
>   gitlab: add jobs for thorough block tests
>   gitlab: remove I/O tests from build-tcg-disabled job
> 
> John Snow (1):
>   python: bump qemu.qmp to v0.0.6
> 
>  .gitlab-ci.d/buildtest-template.yml           |  30 +++--
>  .gitlab-ci.d/buildtest.yml                    | 107 ++++++++++++++++--
>  docs/devel/testing/main.rst                   |  33 +++++-
>  python/scripts/vendor.py                      |   4 +-
>  ...ny.whl => qemu_qmp-0.0.6-py3-none-any.whl} | Bin 72263 -> 72379 bytes
>  pythondeps.toml                               |   2 +-
>  scripts/mtest2make.py                         |  30 +++--
>  tests/Makefile.include                        |   3 +-
>  tests/qemu-iotests/128                        |   6 +
>  tests/qemu-iotests/149                        |  13 ++-
>  tests/qemu-iotests/meson.build                |  59 ++++++++--
>  tests/qemu-iotests/testrunner.py              |  18 ++-
>  12 files changed, 254 insertions(+), 51 deletions(-)
>  rename python/wheels/{qemu_qmp-0.0.5-py3-none-any.whl => qemu_qmp-0.0.6-py3-none-any.whl} (64%)
> 
> -- 
> 2.53.0
> 

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|