iotests.py: implement unsupported_imgopts

We are going to support some addition IMGOPTS in python iotests like
in bash iotests. Similarly to bash iotests, we want a way to skip some
tests which can't work with specific IMGOPTS.

Globally for python iotests we will not support things like
'data_file=$TEST_IMG.ext_data_file' in IMGOPTS, so, forbid this
globally in iotests.py.

Suggested-by: Hanna Reitz <hreitz@redhat.com>
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Hanna Reitz <hreitz@redhat.com>
Message-Id: <20211223160144.1097696-3-vsementsov@virtuozzo.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2021-12-23 17:01:27 +01:00 committed by Hanna Reitz
parent 3bd2b942d9
commit 7c15400cdd

View File

@ -1226,6 +1226,17 @@ def _verify_virtio_scsi_pci_or_ccw() -> None:
notrun('Missing virtio-scsi-pci or virtio-scsi-ccw in QEMU binary')
def _verify_imgopts(unsupported: Sequence[str] = ()) -> None:
imgopts = os.environ.get('IMGOPTS')
# One of usage examples for IMGOPTS is "data_file=$TEST_IMG.ext_data_file"
# but it supported only for bash tests. We don't have a concept of global
# TEST_IMG in iotests.py, not saying about somehow parsing $variables.
# So, for simplicity let's just not support any IMGOPTS with '$' inside.
unsup = list(unsupported) + ['$']
if imgopts and any(x in imgopts for x in unsup):
notrun(f'not suitable for this imgopts: {imgopts}')
def supports_quorum():
return 'quorum' in qemu_img_pipe('--help')
@ -1402,7 +1413,8 @@ def execute_setup_common(supported_fmts: Sequence[str] = (),
unsupported_fmts: Sequence[str] = (),
supported_protocols: Sequence[str] = (),
unsupported_protocols: Sequence[str] = (),
required_fmts: Sequence[str] = ()) -> bool:
required_fmts: Sequence[str] = (),
unsupported_imgopts: Sequence[str] = ()) -> bool:
"""
Perform necessary setup for either script-style or unittest-style tests.
@ -1422,6 +1434,7 @@ def execute_setup_common(supported_fmts: Sequence[str] = (),
_verify_aio_mode(supported_aio_modes)
_verify_formats(required_fmts)
_verify_virtio_blk()
_verify_imgopts(unsupported_imgopts)
return debug