From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Alex Bennée" <alex.bennee@linaro.org>,
"Thomas Huth" <thuth@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Hanna Reitz" <hreitz@redhat.com>,
"Kevin Wolf" <kwolf@redhat.com>,
qemu-block@nongnu.org, "Daniel P. Berrangé" <berrange@redhat.com>
Subject: [PATCH 2/4] tests: rearrange suites for I/O tests
Date: Wed, 8 Oct 2025 12:35:50 +0100 [thread overview]
Message-ID: <20251008113552.747002-3-berrange@redhat.com> (raw)
In-Reply-To: <20251008113552.747002-1-berrange@redhat.com>
Currently there are 5 block formats, each classified as either quick,
slow or thorough. This classification then determines what tests we
add to meson suites. The suites are as follows
* block
=> tests listed by 'check -g auto -n' for 'quick' formats
* slow, block-slow
=> tests listed by 'check -n' for 'slow' formats or 'check -g auto -n'
for 'quick' formats
* thorough, block-thorough
=> tests listed by 'check -n' for 'thorough' formats
The pairs of suites 'slow' / 'block-slow' and 'thorough' / 'block-thorough'
match in terms of what tests are enabled. The only difference is whether
non-block related tests are also in the suite.
There are two problems with this
* If a format is classified as 'quick', we don't expose any
meson suite for running *all* tests, only the 'auto' tests.
eg there is no suite to run all qcow2 tests, only 'quick'
tests can be run via meson, even if using 'SPEED=slow' we
still filter to only 'auto' tests.
* There is no suite that allows running all tests for a given
format.
eg there is no suite to run only 'raw' tests - you can only
use 'block-slow' which runs both raw and "auto" qcow2 tests.
eg there is no suite to run only 'vpc' tests - you can only
use 'block-thorough' which runs qed, vmdk & vpc tests.
This patch suggests that 'block-slow' and 'block-thorough' are
not actually compelling use cases, and should be dropped. ie it
is not expected that people need to run all VPC, VMDK and QED
tests at the same time. Instead a more useful feature is the
ability to run all tests for a given format. Further the 'auto'
filtering should only apply in the default 'block' target/suite.
IOW, with this patch we get the follows meson suites:
* 'block' - 'auto' tests for any format listed as 'quick'
Currently just qcow2 'auto' tests
* 'block-$FORMAT' - ALL tests for the given $FORMAT, for each
of qcow2, raw, qed, vmdk & vpc
* 'slow' - ALL tests for formats tagged with 'quick' or 'slow'
* 'thorough' - ALL tests formats tagged with 'thorough'
This corresponds to the following make targets.
* 'make check-block'
=> runs only 'auto' qcow2 tests (unchanged)
* 'make check-block SPEED=thorough'
=> runs all 'qed', 'vmdk', 'vpc' tests (unchanged)
* 'make check-block SPEED=slow'
=> runs all 'raw' tests (unchanged)
=> runs all 'qcow2' tests (previously was only 'auto' tests)
* 'make check-block-qcow2'
=> runs all qcow2 tests (new feature)
* 'make check-block-raw'
=> runs all raw tests (new feature)
* 'make check-block-vpc'
=> runs all vpc tests (new feature)
* 'make check-block-qed'
=> runs all qed tests (new feature)
* 'make check-block-vmdk'
=> runs all vmdk tests (new feature)
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
tests/qemu-iotests/meson.build | 48 ++++++++++++++++++++++++++--------
1 file changed, 37 insertions(+), 11 deletions(-)
diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build
index fad340ad59..939a14ffae 100644
--- a/tests/qemu-iotests/meson.build
+++ b/tests/qemu-iotests/meson.build
@@ -35,23 +35,21 @@ endforeach
qemu_iotests_check_cmd = files('check')
foreach format, speed: qemu_iotests_formats
- if speed == 'quick'
- suites = 'block'
- else
- suites = ['block-' + speed, speed]
- endif
-
- args = ['-tap', '-' + format]
- if speed == 'quick'
- args += ['-g', 'auto']
- endif
+ listargs = ['-tap', '-' + format]
rc = run_command(
- [python, qemu_iotests_check_cmd] + args + ['-n'],
+ [python, qemu_iotests_check_cmd] + listargs + ['-n'],
check: true,
)
foreach item: rc.stdout().strip().split()
+ suites = ['block-' + format]
+ if speed == 'quick'
+ suites += ['slow']
+ else
+ suites += [speed]
+ endif
+
args = [qemu_iotests_check_cmd,
'-tap', '-' + format, item,
'--source-dir', meson.current_source_dir(),
@@ -68,4 +66,32 @@ foreach format, speed: qemu_iotests_formats
timeout: 180,
suite: suites)
endforeach
+
+ if speed == 'quick'
+ listargs += ['-g', 'auto']
+ suites = ['block']
+
+ rc = run_command(
+ [python, qemu_iotests_check_cmd] + listargs + ['-n'],
+ check: true,
+ )
+
+ foreach item: rc.stdout().strip().split()
+ args = [qemu_iotests_check_cmd,
+ '-tap', '-' + format, item,
+ '--source-dir', meson.current_source_dir(),
+ '--build-dir', meson.current_build_dir()]
+ # Some individual tests take as long as 45 seconds
+ # Bump the timeout to 3 minutes for some headroom
+ # on slow machines to minimize spurious failures
+ test('io-' + format + '-' + item,
+ python,
+ args: args,
+ depends: qemu_iotests_binaries,
+ env: qemu_iotests_env,
+ protocol: 'tap',
+ timeout: 180,
+ suite: suites)
+ endforeach
+ endif
endforeach
--
2.50.1
next prev parent reply other threads:[~2025-10-08 11:37 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-08 11:35 [PATCH 0/4] tests: do more testing of block drivers in CI Daniel P. Berrangé
2025-10-08 11:35 ` [PATCH 1/4] tests: print reason when I/O test is skipped in TAP mode Daniel P. Berrangé
2025-10-08 11:47 ` Thomas Huth
2025-10-08 11:35 ` Daniel P. Berrangé [this message]
2025-10-14 8:26 ` [PATCH 2/4] tests: rearrange suites for I/O tests Kevin Wolf
2025-10-15 13:44 ` Daniel P. Berrangé
2025-10-15 13:47 ` Thomas Huth
2025-10-15 13:48 ` Daniel P. Berrangé
2025-10-08 11:35 ` [PATCH 3/4] tests: add nbd and luks to the I/O test suites Daniel P. Berrangé
2025-10-08 11:55 ` Thomas Huth
2025-10-08 12:55 ` Daniel P. Berrangé
2025-10-08 13:03 ` Thomas Huth
2025-10-08 15:55 ` Eric Blake
2025-10-14 8:50 ` Kevin Wolf
2025-10-14 20:19 ` Eric Blake
2025-10-08 15:49 ` Eric Blake
2025-10-08 11:35 ` [PATCH RFC/WIP 4/4] gitlab: add jobs for thorough block tests Daniel P. Berrangé
2025-10-08 15:57 ` Eric Blake
2025-10-08 16:23 ` Daniel P. Berrangé
2025-10-13 21:46 ` Eric Blake
2025-10-10 11:55 ` Thomas Huth
2025-10-10 12:11 ` Daniel P. Berrangé
2025-10-08 16:28 ` [PATCH 0/4] tests: do more testing of block drivers in CI Daniel P. Berrangé
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=20251008113552.747002-3-berrange@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.