26ba25
From 8e5660a0047bcefbab18d5996acb4da2a1c298ae Mon Sep 17 00:00:00 2001
26ba25
From: Max Reitz <mreitz@redhat.com>
26ba25
Date: Mon, 15 Oct 2018 17:44:46 +0100
26ba25
Subject: [PATCH 49/49] iotests: Add test 221 to catch qemu-img map regression
26ba25
26ba25
RH-Author: Max Reitz <mreitz@redhat.com>
26ba25
Message-id: <20181015174446.31974-3-mreitz@redhat.com>
26ba25
Patchwork-id: 82707
26ba25
O-Subject: [RHEL-8 qemu-kvm PATCH v2 2/2] iotests: Add test 221 to catch qemu-img map regression
26ba25
Bugzilla: 1639374
26ba25
RH-Acked-by: John Snow <jsnow@redhat.com>
26ba25
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
26ba25
RH-Acked-by: Thomas Huth <thuth@redhat.com>
26ba25
26ba25
From: Eric Blake <eblake@redhat.com>
26ba25
26ba25
Although qemu-img creates aligned files (by rounding up), it
26ba25
must also gracefully handle files that are not sector-aligned.
26ba25
Test that the bug fixed in the previous patch does not recur.
26ba25
26ba25
It's a bit annoying that we can see the (implicit) hole past
26ba25
the end of the file on to the next sector boundary, so if we
26ba25
ever reach the point where we report a byte-accurate size rather
26ba25
than our current behavior of always rounding up, this test will
26ba25
probably need a slight modification.
26ba25
26ba25
Signed-off-by: Eric Blake <eblake@redhat.com>
26ba25
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
26ba25
(cherry picked from commit c6a9d2f6f9bc0c163b3a3073126464a2446bad5f)
26ba25
Signed-off-by: Max Reitz <mreitz@redhat.com>
26ba25
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
26ba25
---
26ba25
 tests/qemu-iotests/221     | 60 ++++++++++++++++++++++++++++++++++++++++++++++
26ba25
 tests/qemu-iotests/221.out | 16 +++++++++++++
26ba25
 tests/qemu-iotests/group   |  1 +
26ba25
 3 files changed, 77 insertions(+)
26ba25
 create mode 100755 tests/qemu-iotests/221
26ba25
 create mode 100644 tests/qemu-iotests/221.out
26ba25
26ba25
diff --git a/tests/qemu-iotests/221 b/tests/qemu-iotests/221
26ba25
new file mode 100755
26ba25
index 0000000..41c4e4b
26ba25
--- /dev/null
26ba25
+++ b/tests/qemu-iotests/221
26ba25
@@ -0,0 +1,60 @@
26ba25
+#!/bin/bash
26ba25
+#
26ba25
+# Test qemu-img vs. unaligned images
26ba25
+#
26ba25
+# Copyright (C) 2018 Red Hat, Inc.
26ba25
+#
26ba25
+# This program is free software; you can redistribute it and/or modify
26ba25
+# it under the terms of the GNU General Public License as published by
26ba25
+# the Free Software Foundation; either version 2 of the License, or
26ba25
+# (at your option) any later version.
26ba25
+#
26ba25
+# This program is distributed in the hope that it will be useful,
26ba25
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
26ba25
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26ba25
+# GNU General Public License for more details.
26ba25
+#
26ba25
+# You should have received a copy of the GNU General Public License
26ba25
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
26ba25
+#
26ba25
+
26ba25
+seq="$(basename $0)"
26ba25
+echo "QA output created by $seq"
26ba25
+
26ba25
+here="$PWD"
26ba25
+status=1 # failure is the default!
26ba25
+
26ba25
+_cleanup()
26ba25
+{
26ba25
+    _cleanup_test_img
26ba25
+}
26ba25
+trap "_cleanup; exit \$status" 0 1 2 3 15
26ba25
+
26ba25
+# get standard environment, filters and checks
26ba25
+. ./common.rc
26ba25
+. ./common.filter
26ba25
+
26ba25
+_supported_fmt raw
26ba25
+_supported_proto file
26ba25
+_supported_os Linux
26ba25
+
26ba25
+echo
26ba25
+echo "=== Check mapping of unaligned raw image ==="
26ba25
+echo
26ba25
+
26ba25
+_make_test_img 43009 # qemu-img create rounds size up
26ba25
+$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
26ba25
+
26ba25
+truncate --size=43009 "$TEST_IMG" # so we resize it and check again
26ba25
+$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
26ba25
+
26ba25
+$QEMU_IO -c 'w 43008 1' "$TEST_IMG" | _filter_qemu_io # writing also rounds up
26ba25
+$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
26ba25
+
26ba25
+truncate --size=43009 "$TEST_IMG" # so we resize it and check again
26ba25
+$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
26ba25
+
26ba25
+# success, all done
26ba25
+echo '*** done'
26ba25
+rm -f $seq.full
26ba25
+status=0
26ba25
diff --git a/tests/qemu-iotests/221.out b/tests/qemu-iotests/221.out
26ba25
new file mode 100644
26ba25
index 0000000..a9c0190
26ba25
--- /dev/null
26ba25
+++ b/tests/qemu-iotests/221.out
26ba25
@@ -0,0 +1,16 @@
26ba25
+QA output created by 221
26ba25
+
26ba25
+=== Check mapping of unaligned raw image ===
26ba25
+
26ba25
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=43009
26ba25
+[{ "start": 0, "length": 43520, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
26ba25
+[{ "start": 0, "length": 43520, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
26ba25
+wrote 1/1 bytes at offset 43008
26ba25
+1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
26ba25
+[{ "start": 0, "length": 40960, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
26ba25
+{ "start": 40960, "length": 2049, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
26ba25
+{ "start": 43009, "length": 511, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
26ba25
+[{ "start": 0, "length": 40960, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
26ba25
+{ "start": 40960, "length": 2049, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
26ba25
+{ "start": 43009, "length": 511, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
26ba25
+*** done
26ba25
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
26ba25
index 0242b2f..1cb2ccb 100644
26ba25
--- a/tests/qemu-iotests/group
26ba25
+++ b/tests/qemu-iotests/group
26ba25
@@ -218,6 +218,7 @@
26ba25
 217 rw auto quick
26ba25
 218 rw auto quick
26ba25
 219 rw auto
26ba25
+221 rw auto quick
26ba25
 222 rw auto quick
26ba25
 223 rw auto quick
26ba25
 226 auto quick
26ba25
-- 
26ba25
1.8.3.1
26ba25