* [PATCH v2 0/3] tests/qemu-iotests: Improve test detection for meson
@ 2025-10-14 10:41 Thomas Huth
2025-10-14 10:41 ` [PATCH v2 1/3] tests/qemu-iotests/184: Fix skip message for qemu-img without throttle Thomas Huth
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Thomas Huth @ 2025-10-14 10:41 UTC (permalink / raw)
To: Kevin Wolf, qemu-block; +Cc: Hanna Reitz, qemu-devel
When running the test in thorough mode, we currently try to run a lot of
tests that are only skipped, which is somewhat annoying. This series
fixes the problems (see second patch), and add some more image formats
in the third patch (which should be fine now that the list of tests that
we try to execute is not that big anymore).
v2:
- Improve the detection mechanism in patch 2 by using regex statements
- Extend the comment in patch 2 a little bit, saying that the detection
can fail in certain cases, e.g. when the "unsupported_fmt" and the
"supported_fmt" statement are on the same line (which does not seem to
be a problem with the current test cases right now, fortunately)
Thomas Huth (3):
tests/qemu-iotests/184: Fix skip message for qemu-img without throttle
tests/qemu-iotests: Improve the dry run list to speed up thorough
testing
tests/qemu-iotest: Add more image formats to the thorough testing
tests/qemu-iotests/184 | 2 +-
tests/qemu-iotests/check | 42 +++++++++++++++++++++++++++++++---
tests/qemu-iotests/meson.build | 3 +++
3 files changed, 43 insertions(+), 4 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/3] tests/qemu-iotests/184: Fix skip message for qemu-img without throttle
2025-10-14 10:41 [PATCH v2 0/3] tests/qemu-iotests: Improve test detection for meson Thomas Huth
@ 2025-10-14 10:41 ` Thomas Huth
2025-10-14 10:41 ` [PATCH v2 2/3] tests/qemu-iotests: Improve the dry run list to speed up thorough testing Thomas Huth
2025-10-14 10:41 ` [PATCH v2 3/3] tests/qemu-iotest: Add more image formats to the " Thomas Huth
2 siblings, 0 replies; 4+ messages in thread
From: Thomas Huth @ 2025-10-14 10:41 UTC (permalink / raw)
To: Kevin Wolf, qemu-block; +Cc: Hanna Reitz, qemu-devel
From: Thomas Huth <thuth@redhat.com>
If qemu-img does not support throttling, test 184 currently skips
with the message:
not suitable for this image format: raw
But that's wrong, it's not about the image format, it's about the
throttling not being available in qemu-img. Thus fix this by using
_notrun with a proper message instead.
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/qemu-iotests/184 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/qemu-iotests/184 b/tests/qemu-iotests/184
index e4cbcd86345..f7fcedacfb5 100755
--- a/tests/qemu-iotests/184
+++ b/tests/qemu-iotests/184
@@ -50,7 +50,7 @@ run_qemu()
}
test_throttle=$($QEMU_IMG --help|grep throttle)
-[ "$test_throttle" = "" ] && _supported_fmt throttle
+[ "$test_throttle" = "" ] && _notrun "qemu-img does not support throttle"
echo
echo "== checking interface =="
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/3] tests/qemu-iotests: Improve the dry run list to speed up thorough testing
2025-10-14 10:41 [PATCH v2 0/3] tests/qemu-iotests: Improve test detection for meson Thomas Huth
2025-10-14 10:41 ` [PATCH v2 1/3] tests/qemu-iotests/184: Fix skip message for qemu-img without throttle Thomas Huth
@ 2025-10-14 10:41 ` Thomas Huth
2025-10-14 10:41 ` [PATCH v2 3/3] tests/qemu-iotest: Add more image formats to the " Thomas Huth
2 siblings, 0 replies; 4+ messages in thread
From: Thomas Huth @ 2025-10-14 10:41 UTC (permalink / raw)
To: Kevin Wolf, qemu-block; +Cc: Hanna Reitz, qemu-devel
From: Thomas Huth <thuth@redhat.com>
When running the tests in thorough mode, e.g. with:
make -j$(nproc) check SPEED=thorough
we currently always get a huge amount of total tests that the test
runner tries to execute (2457 in my case), but a big bunch of them are
only skipped (1099 in my case, meaning that only 1358 got executed).
This happens because we try to run the whole set of iotests for multiple
image formats while a lot of the tests can only run with one certain
format only and thus are marked as SKIP during execution. This is quite a
waste of time during each test run, and also unnecessarily blows up the
displayed list of executed tests in the console output.
Thus let's try to be a little bit smarter: If the "check" script is run
with "-n" and an image format switch (like "-qed") at the same time (which
is what we do for discovering the tests for the meson test runner already),
only report the tests that likely support the given format instead of
providing the whole list of all tests. We can determine whether a test
supports a format or not by looking at the lines in the file that contain
a "supported_fmt" or "unsupported_fmt" statement. This is only heuristics,
of course, but it is good enough for running the iotests via "make
check-block" - I double-checked that the list of executed tests does not
get changed by this patch, it's only the tests that are skipped anyway that
are now not run anymore.
This way the amount of total tests drops from 2457 to 1432 for me, and
the amount of skipped tests drops from 1099 to just 74 (meaning that we
still properly run 1432 - 74 = 1358 tests as we did before).
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/qemu-iotests/check | 42 +++++++++++++++++++++++++++++++++++++---
1 file changed, 39 insertions(+), 3 deletions(-)
diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
index d9b7c1d5989..3941eac8e21 100755
--- a/tests/qemu-iotests/check
+++ b/tests/qemu-iotests/check
@@ -17,6 +17,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
+import re
import sys
import argparse
import shutil
@@ -82,7 +83,7 @@ def make_argparser() -> argparse.ArgumentParser:
g_env.add_argument('-i', dest='aiomode', default='threads',
help='sets AIOMODE environment variable')
- p.set_defaults(imgfmt='raw', imgproto='file')
+ p.set_defaults(imgproto='file')
format_list = ['raw', 'bochs', 'cloop', 'parallels', 'qcow', 'qcow2',
'qed', 'vdi', 'vpc', 'vhdx', 'vmdk', 'luks', 'dmg', 'vvfat']
@@ -137,15 +138,50 @@ def make_argparser() -> argparse.ArgumentParser:
return p
+def dry_run_list(test_dir, imgfmt, testlist):
+ for t in testlist:
+ if not imgfmt:
+ print('\n'.join([os.path.basename(t)]))
+ continue
+ # If a format has been given, we look for the "supported_fmt"
+ # and the "unsupported_fmt" lines in the test and try to find out
+ # whether the format is supported or not. This is only heuristics
+ # (it can e.g. fail if the "unsupported_fmts" and "supported_fmts"
+ # statements are in the same line), but it should be good enough
+ # to get a proper list for "make check-block"
+ with open(os.path.join(test_dir, t), 'r', encoding='utf-8') as fh:
+ supported = True
+ check_next_line = False
+ sd = "[ \t'\"]" # Start delimiter
+ ed = "([ \t'\"]|$)" # End delimiter
+ for line in fh:
+ if 'unsupported_fmt' in line:
+ if re.search(sd + imgfmt + ed, line):
+ supported = False
+ break
+ elif 'supported_fmt' in line or check_next_line:
+ if re.search(sd + 'generic' + ed, line):
+ continue # Might be followed by "unsupported" line
+ supported = re.search(sd + imgfmt + ed, line)
+ check_next_line = not ']' in line and \
+ ('supported_fmts=[' in line or check_next_line)
+ if supported or not check_next_line:
+ break
+ if supported:
+ print('\n'.join([os.path.basename(t)]))
+
+
if __name__ == '__main__':
warnings.simplefilter("default")
os.environ["PYTHONWARNINGS"] = "default"
args = make_argparser().parse_args()
+ image_format = args.imgfmt or 'raw'
+
env = TestEnv(source_dir=args.source_dir,
build_dir=args.build_dir,
- imgfmt=args.imgfmt, imgproto=args.imgproto,
+ imgfmt=image_format, imgproto=args.imgproto,
aiomode=args.aiomode, cachemode=args.cachemode,
imgopts=args.imgopts, misalign=args.misalign,
debug=args.debug, valgrind=args.valgrind,
@@ -189,7 +225,7 @@ if __name__ == '__main__':
if args.dry_run:
with env:
- print('\n'.join([os.path.basename(t) for t in tests]))
+ dry_run_list(env.source_iotests, args.imgfmt, tests)
else:
with TestRunner(env, tap=args.tap,
color=args.color) as tr:
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 3/3] tests/qemu-iotest: Add more image formats to the thorough testing
2025-10-14 10:41 [PATCH v2 0/3] tests/qemu-iotests: Improve test detection for meson Thomas Huth
2025-10-14 10:41 ` [PATCH v2 1/3] tests/qemu-iotests/184: Fix skip message for qemu-img without throttle Thomas Huth
2025-10-14 10:41 ` [PATCH v2 2/3] tests/qemu-iotests: Improve the dry run list to speed up thorough testing Thomas Huth
@ 2025-10-14 10:41 ` Thomas Huth
2 siblings, 0 replies; 4+ messages in thread
From: Thomas Huth @ 2025-10-14 10:41 UTC (permalink / raw)
To: Kevin Wolf, qemu-block; +Cc: Hanna Reitz, qemu-devel
From: Thomas Huth <thuth@redhat.com>
Now that the "check" script is a little bit smarter with providing
a list of tests that are supported for an image format, we can also
add more image formats that can be used for generic block layer
testing. (Note: qcow1 and luks are not added because some tests
there currently fail, and other formats like bochs, cloop, dmg and
vvfat do not work with the generic tests and thus would only get
skipped if we'd tried to add them here)
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/qemu-iotests/meson.build | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build
index fad340ad595..35256217a37 100644
--- a/tests/qemu-iotests/meson.build
+++ b/tests/qemu-iotests/meson.build
@@ -21,7 +21,10 @@ qemu_iotests_env = {'PYTHON': python.full_path()}
qemu_iotests_formats = {
'qcow2': 'quick',
'raw': 'slow',
+ 'parallels': 'thorough',
'qed': 'thorough',
+ 'vdi': 'thorough',
+ 'vhdx': 'thorough',
'vmdk': 'thorough',
'vpc': 'thorough'
}
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-10-14 10:43 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-14 10:41 [PATCH v2 0/3] tests/qemu-iotests: Improve test detection for meson Thomas Huth
2025-10-14 10:41 ` [PATCH v2 1/3] tests/qemu-iotests/184: Fix skip message for qemu-img without throttle Thomas Huth
2025-10-14 10:41 ` [PATCH v2 2/3] tests/qemu-iotests: Improve the dry run list to speed up thorough testing Thomas Huth
2025-10-14 10:41 ` [PATCH v2 3/3] tests/qemu-iotest: Add more image formats to the " Thomas Huth
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).