For block formats marked as 'quick', only tests in the 'auto' group are added to the meson test suite.
The result of this is that qcow2 tests not in the 'auto' group cannot be run at all, even if passing SPEED=slow or SPEED=thorough. To fix this we need todo two passes over the I/O test list. First add all tests from 'auto' group into the 'block' suite, so they are run by default. Then on the second pass add any tests which were not in 'auto' into the 'block-slow' suite, so they get run when SPEED=slow or SPEED=thorough. Reviewed-by: Thomas Huth <[email protected]> Signed-off-by: Daniel P. Berrangé <[email protected]> --- tests/qemu-iotests/meson.build | 48 ++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/tests/qemu-iotests/meson.build b/tests/qemu-iotests/meson.build index bf588cc2c9..1a24d801a3 100644 --- a/tests/qemu-iotests/meson.build +++ b/tests/qemu-iotests/meson.build @@ -30,16 +30,48 @@ endforeach qemu_iotests_check_cmd = files('check') foreach format, speed: qemu_iotests_formats + # Formats tagged 'quick' get the subset of tests in the 'auto' + # group, run by default with 'make check' / 'make check-block' + seen = [] if speed == 'quick' - suites = 'block' + args = ['-tap', '-' + format, '-g', 'auto'] + suites = ['block'] + + rc = run_command( + [python, qemu_iotests_check_cmd] + args + ['-n'], + check: true, + ) + + foreach item: rc.stdout().strip().split() + seen += item + 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 + + suites = [] + # Any format tagged quick or slow also gets added to slow + # otherwise its tagged thorough + if speed != 'thorough' + suites += ['block-slow'] else - suites = ['block-' + speed] + suites += ['block-thorough'] endif args = ['-tap', '-' + format] - if speed == 'quick' - args += ['-g', 'auto'] - endif rc = run_command( [python, qemu_iotests_check_cmd] + args + ['-n'], @@ -47,6 +79,12 @@ foreach format, speed: qemu_iotests_formats ) foreach item: rc.stdout().strip().split() + # Skip any tests already added from the 'auto' group + # as they're run in the 'quick' suite already + if item in seen + continue + endif + args = [qemu_iotests_check_cmd, '-tap', '-' + format, item, '--source-dir', meson.current_source_dir(), -- 2.52.0
