9ae3a8
From 9fe83d3e480a74024150774c38373122084dfe10 Mon Sep 17 00:00:00 2001
9ae3a8
From: Max Reitz <mreitz@redhat.com>
9ae3a8
Date: Wed, 6 Nov 2013 16:53:38 +0100
9ae3a8
Subject: [PATCH 81/87] qemu-iotests: Discard specific info in _img_info
9ae3a8
9ae3a8
RH-Author: Max Reitz <mreitz@redhat.com>
9ae3a8
Message-id: <1383756824-6921-16-git-send-email-mreitz@redhat.com>
9ae3a8
Patchwork-id: 55570
9ae3a8
O-Subject: [RHEL-7.0 qemu-kvm PATCH v2 15/21] qemu-iotests: Discard specific info in _img_info
9ae3a8
Bugzilla: 980771
9ae3a8
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
9ae3a8
RH-Acked-by: Fam Zheng <famz@redhat.com>
9ae3a8
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
9ae3a8
9ae3a8
BZ: 980771
9ae3a8
9ae3a8
In _img_info, filter out additional information specific to the image
9ae3a8
format provided by qemu-img info, since tests designed for multiple
9ae3a8
image formats would produce different outputs for every image format
9ae3a8
otherwise.
9ae3a8
9ae3a8
In a human-readable dump, that new information will always be last for
9ae3a8
each "image information block" (multiple blocks are emitted when
9ae3a8
inspecting the backing file chain). Every block is separated by an empty
9ae3a8
line. Therefore, in this case, everything starting with the line "Format
9ae3a8
specific information:" up to that empty line (or EOF, if it is the last
9ae3a8
block) has to be stripped.
9ae3a8
9ae3a8
The JSON dump will always emit pretty JSON data. Therefore, the opening
9ae3a8
and closing braces of every object will be on lines which are indented
9ae3a8
by exactly the same amount, and all lines in between will have more
9ae3a8
indentation. Thus, in this case, everything starting with a line
9ae3a8
matching the regular expression /^ *"format-specific": {/ until /^ *},?/
9ae3a8
has to be stripped, where the number of spaces at the beginning of the
9ae3a8
respective lines is equal.
9ae3a8
9ae3a8
Signed-off-by: Max Reitz <mreitz@redhat.com>
9ae3a8
Reviewed-by: Eric Blake <eblake@redhat.com>
9ae3a8
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
9ae3a8
(cherry picked from commit 4c2e946500c45685fdec61b3d929311dc26a2ad5)
9ae3a8
9ae3a8
Signed-off-by: Max Reitz <mreitz@redhat.com>
9ae3a8
---
9ae3a8
 tests/qemu-iotests/common.rc | 20 +++++++++++++++++++-
9ae3a8
 1 file changed, 19 insertions(+), 1 deletion(-)
9ae3a8
9ae3a8
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
9ae3a8
---
9ae3a8
 tests/qemu-iotests/common.rc |   20 +++++++++++++++++++-
9ae3a8
 1 files changed, 19 insertions(+), 1 deletions(-)
9ae3a8
9ae3a8
diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
9ae3a8
index 1b22db0..227c003 100644
9ae3a8
--- a/tests/qemu-iotests/common.rc
9ae3a8
+++ b/tests/qemu-iotests/common.rc
9ae3a8
@@ -197,12 +197,30 @@ _check_test_img()
9ae3a8
 
9ae3a8
 _img_info()
9ae3a8
 {
9ae3a8
+    discard=0
9ae3a8
+    regex_json_spec_start='^ *"format-specific": \{'
9ae3a8
     $QEMU_IMG info "$@" "$TEST_IMG" 2>&1 | \
9ae3a8
         sed -e "s#$IMGPROTO:$TEST_DIR#TEST_DIR#g" \
9ae3a8
             -e "s#$TEST_DIR#TEST_DIR#g" \
9ae3a8
             -e "s#$IMGFMT#IMGFMT#g" \
9ae3a8
             -e "/^disk size:/ D" \
9ae3a8
-            -e "/actual-size/ D"
9ae3a8
+            -e "/actual-size/ D" | \
9ae3a8
+        while IFS='' read line; do
9ae3a8
+            if [[ $line == "Format specific information:" ]]; then
9ae3a8
+                discard=1
9ae3a8
+            elif [[ $line =~ $regex_json_spec_start ]]; then
9ae3a8
+                discard=2
9ae3a8
+                regex_json_spec_end="^${line%%[^ ]*}\\},? *$"
9ae3a8
+            fi
9ae3a8
+            if [[ $discard == 0 ]]; then
9ae3a8
+                echo "$line"
9ae3a8
+            elif [[ $discard == 1 && ! $line ]]; then
9ae3a8
+                echo
9ae3a8
+                discard=0
9ae3a8
+            elif [[ $discard == 2 && $line =~ $regex_json_spec_end ]]; then
9ae3a8
+                discard=0
9ae3a8
+            fi
9ae3a8
+        done
9ae3a8
 }
9ae3a8
 
9ae3a8
 _get_pids_by_name()
9ae3a8
-- 
9ae3a8
1.7.1
9ae3a8