* [PATCH v3 1/3] iotests.py: Add supports_qcow2_zstd_compression()
2022-03-23 10:55 [PATCH v3 0/3] iotests: Check for zstd support Hanna Reitz
@ 2022-03-23 10:55 ` Hanna Reitz
2022-03-23 11:47 ` Vladimir Sementsov-Ogievskiy
2022-03-23 10:55 ` [PATCH v3 2/3] iotests/065: Check for zstd support Hanna Reitz
2022-03-23 10:55 ` [PATCH v3 3/3] iotests/303: " Hanna Reitz
2 siblings, 1 reply; 6+ messages in thread
From: Hanna Reitz @ 2022-03-23 10:55 UTC (permalink / raw)
To: qemu-block
Cc: Thomas Huth, Kevin Wolf, Hanna Reitz,
Vladimir Sementsov-Ogievskiy, qemu-devel
Suggested-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
---
tests/qemu-iotests/iotests.py | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index fcec3e51e5..fe10a6cf05 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -1471,6 +1471,26 @@ def verify_working_luks():
if not working:
notrun(reason)
+def supports_qcow2_zstd_compression() -> bool:
+ img_file = f'{test_dir}/qcow2-zstd-test.qcow2'
+ res = qemu_img('create', '-f', 'qcow2', '-o', 'compression_type=zstd',
+ img_file, '0',
+ check=False)
+ try:
+ os.remove(img_file)
+ except OSError:
+ pass
+
+ if res.returncode == 1 and \
+ "'compression-type' does not accept value 'zstd'" in res.stdout:
+ return False
+ else:
+ return True
+
+def verify_qcow2_zstd_compression():
+ if not supports_qcow2_zstd_compression():
+ notrun('zstd compression not supported')
+
def qemu_pipe(*args: str) -> str:
"""
Run qemu with an option to print something and exit (e.g. a help option).
--
2.35.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 2/3] iotests/065: Check for zstd support
2022-03-23 10:55 [PATCH v3 0/3] iotests: Check for zstd support Hanna Reitz
2022-03-23 10:55 ` [PATCH v3 1/3] iotests.py: Add supports_qcow2_zstd_compression() Hanna Reitz
@ 2022-03-23 10:55 ` Hanna Reitz
2022-03-23 11:48 ` Vladimir Sementsov-Ogievskiy
2022-03-23 10:55 ` [PATCH v3 3/3] iotests/303: " Hanna Reitz
2 siblings, 1 reply; 6+ messages in thread
From: Hanna Reitz @ 2022-03-23 10:55 UTC (permalink / raw)
To: qemu-block
Cc: Thomas Huth, Kevin Wolf, Hanna Reitz,
Vladimir Sementsov-Ogievskiy, qemu-devel
Some test cases run in iotest 065 want to run with zstd compression just
for added coverage. Run them with zlib if there is no zstd support
compiled in.
Reported-by: Thomas Huth <thuth@redhat.com>
Fixes: 12a936171d71f839dc907ff ("iotest 065: explicit compression type")
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
---
tests/qemu-iotests/065 | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/tests/qemu-iotests/065 b/tests/qemu-iotests/065
index ba94e19349..b724c89c7c 100755
--- a/tests/qemu-iotests/065
+++ b/tests/qemu-iotests/065
@@ -24,7 +24,7 @@ import os
import re
import json
import iotests
-from iotests import qemu_img, qemu_img_info
+from iotests import qemu_img, qemu_img_info, supports_qcow2_zstd_compression
import unittest
test_img = os.path.join(iotests.test_dir, 'test.img')
@@ -95,11 +95,17 @@ class TestQCow2(TestQemuImgInfo):
class TestQCow3NotLazy(TestQemuImgInfo):
'''Testing a qcow2 version 3 image with lazy refcounts disabled'''
- img_options = 'compat=1.1,lazy_refcounts=off,compression_type=zstd'
+ if supports_qcow2_zstd_compression():
+ compression_type = 'zstd'
+ else:
+ compression_type = 'zlib'
+
+ img_options = 'compat=1.1,lazy_refcounts=off'
+ img_options += f',compression_type={compression_type}'
json_compare = { 'compat': '1.1', 'lazy-refcounts': False,
'refcount-bits': 16, 'corrupt': False,
- 'compression-type': 'zstd', 'extended-l2': False }
- human_compare = [ 'compat: 1.1', 'compression type: zstd',
+ 'compression-type': compression_type, 'extended-l2': False }
+ human_compare = [ 'compat: 1.1', f'compression type: {compression_type}',
'lazy refcounts: false', 'refcount bits: 16',
'corrupt: false', 'extended l2: false' ]
@@ -126,11 +132,17 @@ class TestQCow3NotLazyQMP(TestQMP):
class TestQCow3LazyQMP(TestQMP):
'''Testing a qcow2 version 3 image with lazy refcounts enabled, opening
with lazy refcounts disabled'''
- img_options = 'compat=1.1,lazy_refcounts=on,compression_type=zstd'
+ if supports_qcow2_zstd_compression():
+ compression_type = 'zstd'
+ else:
+ compression_type = 'zlib'
+
+ img_options = 'compat=1.1,lazy_refcounts=on'
+ img_options += f',compression_type={compression_type}'
qemu_options = 'lazy-refcounts=off'
compare = { 'compat': '1.1', 'lazy-refcounts': True,
'refcount-bits': 16, 'corrupt': False,
- 'compression-type': 'zstd', 'extended-l2': False }
+ 'compression-type': compression_type, 'extended-l2': False }
TestImageInfoSpecific = None
TestQemuImgInfo = None
--
2.35.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 3/3] iotests/303: Check for zstd support
2022-03-23 10:55 [PATCH v3 0/3] iotests: Check for zstd support Hanna Reitz
2022-03-23 10:55 ` [PATCH v3 1/3] iotests.py: Add supports_qcow2_zstd_compression() Hanna Reitz
2022-03-23 10:55 ` [PATCH v3 2/3] iotests/065: Check for zstd support Hanna Reitz
@ 2022-03-23 10:55 ` Hanna Reitz
2 siblings, 0 replies; 6+ messages in thread
From: Hanna Reitz @ 2022-03-23 10:55 UTC (permalink / raw)
To: qemu-block
Cc: Thomas Huth, Kevin Wolf, Hanna Reitz,
Vladimir Sementsov-Ogievskiy, qemu-devel
303 runs two test cases, one of which requires zstd support.
Unfortunately, given that this is not a unittest-style test, we cannot
easily skip that single case, and instead can only skip the whole test.
(Alternatively, we could split this test into a zlib and a zstd part,
but that seems excessive, given that this test is not in auto and thus
likely only run by developers who have zstd support compiled in.)
Fixes: 677e0bae686e7c670a71d1f ("iotest 303: explicit compression type")
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <v.sementsov-og@mail.ru>
---
tests/qemu-iotests/303 | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/tests/qemu-iotests/303 b/tests/qemu-iotests/303
index 93aa5ce9b7..40e947f26c 100755
--- a/tests/qemu-iotests/303
+++ b/tests/qemu-iotests/303
@@ -21,10 +21,12 @@
import iotests
import subprocess
-from iotests import qemu_img_create, qemu_io, file_path, log, filter_qemu_io
+from iotests import qemu_img_create, qemu_io, file_path, log, filter_qemu_io, \
+ verify_qcow2_zstd_compression
iotests.script_initialize(supported_fmts=['qcow2'],
unsupported_imgopts=['refcount_bits', 'compat'])
+verify_qcow2_zstd_compression()
disk = file_path('disk')
chunk = 1024 * 1024
--
2.35.1
^ permalink raw reply related [flat|nested] 6+ messages in thread