2023-09-30 21:15:23 +03:00
|
|
|
if not have_tools or targetos == 'windows'
|
2022-02-23 12:38:38 +03:00
|
|
|
subdir_done()
|
2021-10-06 12:27:47 +03:00
|
|
|
endif
|
2022-02-23 12:38:38 +03:00
|
|
|
|
2023-01-09 17:31:51 +03:00
|
|
|
foreach cflag: qemu_ldflags
|
2022-02-23 12:38:39 +03:00
|
|
|
if cflag.startswith('-fsanitize') and \
|
|
|
|
not cflag.contains('safe-stack') and not cflag.contains('cfi-icall')
|
|
|
|
message('Sanitizers are enabled ==> Disabled the qemu-iotests.')
|
|
|
|
subdir_done()
|
|
|
|
endif
|
|
|
|
endforeach
|
|
|
|
|
|
|
|
bash = find_program('bash', required: false, version: '>= 4.0')
|
|
|
|
if not bash.found()
|
|
|
|
message('bash >= v4.0 not available ==> Disabled the qemu-iotests.')
|
|
|
|
subdir_done()
|
|
|
|
endif
|
|
|
|
|
2022-02-23 12:38:38 +03:00
|
|
|
qemu_iotests_binaries = [qemu_img, qemu_io, qemu_nbd, qsd]
|
|
|
|
qemu_iotests_env = {'PYTHON': python.full_path()}
|
|
|
|
qemu_iotests_formats = {
|
|
|
|
'qcow2': 'quick',
|
|
|
|
'raw': 'slow',
|
|
|
|
'qed': 'thorough',
|
|
|
|
'vmdk': 'thorough',
|
|
|
|
'vpc': 'thorough'
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach k, v : emulators
|
|
|
|
if k.startswith('qemu-system-')
|
|
|
|
qemu_iotests_binaries += v
|
|
|
|
endif
|
|
|
|
endforeach
|
|
|
|
|
2023-03-15 20:43:23 +03:00
|
|
|
qemu_iotests_check_cmd = files('check')
|
|
|
|
|
2022-02-23 12:38:38 +03:00
|
|
|
foreach format, speed: qemu_iotests_formats
|
|
|
|
if speed == 'quick'
|
|
|
|
suites = 'block'
|
|
|
|
else
|
|
|
|
suites = ['block-' + speed, speed]
|
|
|
|
endif
|
2023-03-15 20:43:23 +03:00
|
|
|
|
|
|
|
args = ['-tap', '-' + format]
|
|
|
|
if speed == 'quick'
|
|
|
|
args += ['-g', 'auto']
|
|
|
|
endif
|
|
|
|
|
|
|
|
rc = run_command(
|
2023-04-03 16:49:17 +03:00
|
|
|
[python, qemu_iotests_check_cmd] + args + ['-n'],
|
2023-03-15 20:43:23 +03:00
|
|
|
check: true,
|
|
|
|
)
|
|
|
|
|
|
|
|
foreach item: rc.stdout().strip().split()
|
2023-04-03 16:49:17 +03:00
|
|
|
args = [qemu_iotests_check_cmd,
|
|
|
|
'-tap', '-' + format, item,
|
2023-03-15 20:43:23 +03:00
|
|
|
'--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,
|
2023-04-03 16:49:17 +03:00
|
|
|
python,
|
2023-03-15 20:43:23 +03:00
|
|
|
args: args,
|
|
|
|
depends: qemu_iotests_binaries,
|
|
|
|
env: qemu_iotests_env,
|
|
|
|
protocol: 'tap',
|
|
|
|
timeout: 180,
|
|
|
|
suite: suites)
|
|
|
|
endforeach
|
2022-02-23 12:38:38 +03:00
|
|
|
endforeach
|