mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-10-14 15:02:54 +00:00
iotests: register each I/O test separately with meson
Currently meson registers a single test that invokes an entire group of I/O tests, hiding the test granularity from meson. There are various downsides of doing this * You cannot ask 'meson test' to invoke a single I/O test * The meson test timeout can't be applied to the individual tests * Meson only gets a pass/fail for the overall I/O test group not individual tests * If a CI job gets killed by the GitLab timeout, we don't get visibility into how far through the I/O tests execution got. This switches meson to perform test discovery by invoking 'check' in dry-run mode. It then registers one meson test case for each I/O test. Parallel execution remains disabled since the I/O tests do not use self contained execution environments and thus conflict with each other. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Acked-by: Hanna Czenczek <hreitz@redhat.com> Tested-by: Thomas Huth <thuth@redhat.com> Message-Id: <20230303160727.3977246-8-berrange@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20230315174331.2959-25-alex.bennee@linaro.org>
This commit is contained in:
parent
5ba7db0938
commit
51ab5f8bd7
|
@ -32,16 +32,39 @@ foreach k, v : emulators
|
||||||
endif
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
qemu_iotests_check_cmd = files('check')
|
||||||
|
|
||||||
foreach format, speed: qemu_iotests_formats
|
foreach format, speed: qemu_iotests_formats
|
||||||
if speed == 'quick'
|
if speed == 'quick'
|
||||||
suites = 'block'
|
suites = 'block'
|
||||||
else
|
else
|
||||||
suites = ['block-' + speed, speed]
|
suites = ['block-' + speed, speed]
|
||||||
endif
|
endif
|
||||||
test('qemu-iotests ' + format, sh, args: [files('../check-block.sh'), format],
|
|
||||||
depends: qemu_iotests_binaries, env: qemu_iotests_env,
|
args = ['-tap', '-' + format]
|
||||||
protocol: 'tap',
|
if speed == 'quick'
|
||||||
suite: suites,
|
args += ['-g', 'auto']
|
||||||
timeout: 0,
|
endif
|
||||||
is_parallel: false)
|
|
||||||
|
rc = run_command(
|
||||||
|
[qemu_iotests_check_cmd] + args + ['-n'],
|
||||||
|
check: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach item: rc.stdout().strip().split()
|
||||||
|
args = ['-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,
|
||||||
|
qemu_iotests_check_cmd,
|
||||||
|
args: args,
|
||||||
|
depends: qemu_iotests_binaries,
|
||||||
|
env: qemu_iotests_env,
|
||||||
|
protocol: 'tap',
|
||||||
|
timeout: 180,
|
||||||
|
suite: suites)
|
||||||
|
endforeach
|
||||||
endforeach
|
endforeach
|
||||||
|
|
Loading…
Reference in a new issue