16.07.2021 16:17, Max Reitz wrote:
On 05.07.21 11:15, Vladimir Sementsov-Ogievskiy wrote:
We want iotests pass with both the default zlib compression and with
IMGOPTS='compression_type=zstd'.

Actually the only test that is interested in real compression type in
test output is 287 (test for qcow2 compression type), so implement
specific option for it.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com>
---
  tests/qemu-iotests/060.out       |  2 +-
  tests/qemu-iotests/061.out       | 12 ++++++------
  tests/qemu-iotests/082.out       | 14 +++++++-------
  tests/qemu-iotests/198.out       |  4 ++--
  tests/qemu-iotests/287           |  8 ++++----
  tests/qemu-iotests/common.filter |  7 +++++++
  tests/qemu-iotests/common.rc     | 14 +++++++++++++-
  7 files changed, 40 insertions(+), 21 deletions(-)

[...]

diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter
index 268b749e2f..78efe3e4dd 100644
--- a/tests/qemu-iotests/common.filter
+++ b/tests/qemu-iotests/common.filter
@@ -247,6 +247,7 @@ _filter_img_info()
          -e "/block_state_zero: \\(on\\|off\\)/d" \
          -e "/log_size: [0-9]\\+/d" \
          -e "s/iters: [0-9]\\+/iters: 1024/" \
+        -e 's/\(compression type: \)\(zlib\|zstd\)/\1COMPRESSION_TYPE/' \
          -e "s/uuid: [-a-f0-9]\\+/uuid: 00000000-0000-0000-0000-000000000000/" 
| \
      while IFS='' read -r line; do
          if [[ $format_specific == 1 ]]; then
@@ -332,5 +333,11 @@ for fname in fnames:
  sys.stdout.write(result)'
  }
+_filter_qcow2_compression_type_bit()
+{
+    $SED -e 's/\(incompatible_features\s\+\)\[3\(, \)\?/\1[/' \
+         -e 's/\(incompatible_features.*\), 3\]/\1]/'

What about “incompatble_features   [2, 3, 4]”?

Will add.


I’d like to propose adding some form of filtering parameter to qcow2.py which 
allows filtering a specific bit from the qcow2_format.Flags64 representation, 
but that seems rather difficult, actually...

+}
+
  # make sure this script returns success
  true
diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
index ee4b9d795e..813b51ee03 100644
--- a/tests/qemu-iotests/common.rc
+++ b/tests/qemu-iotests/common.rc
@@ -697,6 +697,7 @@ _img_info()
              -e "s#$TEST_DIR#TEST_DIR#g" \
              -e "s#$SOCK_DIR/fuse-#TEST_DIR/#g" \
              -e "s#$IMGFMT#IMGFMT#g" \
+            -e 's/\(compression type: \)\(zlib\|zstd\)/\1COMPRESSION_TYPE/' \
              -e "/^disk size:/ D" \
              -e "/actual-size/ D" | \
          while IFS='' read -r line; do
@@ -996,12 +997,23 @@ _require_one_device_of()
  _qcow2_dump_header()
  {
+    if [[ "$1" == "--no-filter-compression" ]]; then
+        local filter_compression=0
+        shift
+    else
+        local filter_compression=1
+    fi
+
      img="$1"
      if [ -z "$img" ]; then
          img="$TEST_IMG"
      fi
-    $PYTHON qcow2.py "$img" dump-header
+    if [[ $filter_compression == 0 ]]; then
+        $PYTHON qcow2.py "$img" dump-header
+    else
+        $PYTHON qcow2.py "$img" dump-header | 
_filter_qcow2_compression_type_bit
+    fi
  }
  # make sure this script returns success

Could have been done more extensibly for the future (i.e. a loop over the 
parameters, and a variable to invoke all applicable filters), but, well.  Not 
much reason to think about a future that we’re not sure will ever happen.

Max



--
Best regards,
Vladimir

Reply via email to