summaryrefslogtreecommitdiff
path: root/tests/qemu-iotests/023
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2009-10-01 14:30:19 -0300
committerKevin Wolf <kwolf@redhat.com>2012-02-22 16:17:02 +0100
commitac5e2b201b11e552182b87c34970448e65f23c70 (patch)
treee229a67021efe9f3df2bb4b02f344a94ad3946f2 /tests/qemu-iotests/023
parent3da9c8fb028e48acd4872efb27c5101704563802 (diff)
downloadqemu-ac5e2b201b11e552182b87c34970448e65f23c70.tar.gz
qemu-iotests: test larger clusters sizes on qcow2
This patch adds test case 023 which tests some more cluster sizes. For anythinger larger than 4k clusters we can't use requests that are l2_size or more (128k for 1k clusters, 2 MB for 4k clusters, 512 MB for 64k clusters). Therefore one of the common.pattern cases is changed and needs new expected results for some old test cases. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'tests/qemu-iotests/023')
-rwxr-xr-xtests/qemu-iotests/023119
1 files changed, 119 insertions, 0 deletions
diff --git a/tests/qemu-iotests/023 b/tests/qemu-iotests/023
new file mode 100755
index 0000000000..883ca47876
--- /dev/null
+++ b/tests/qemu-iotests/023
@@ -0,0 +1,119 @@
+#!/bin/sh
+#
+# qcow2 pattern test with various cluster sizes
+#
+# Copyright (C) 2009 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# creator
+owner=kwolf@redhat.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1 # failure is the default!
+
+_cleanup()
+{
+ _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.pattern
+
+# much of this could be generic for any format supporting compression.
+_supported_fmt qcow qcow2
+_supported_os Linux
+
+TEST_OFFSETS="0 4294967296"
+TEST_OPS="writev read write readv"
+
+# Can't use 512 byte clusters, the tests use cluster halves
+CLUSTER_SIZES="1024 4096 16384 65536"
+
+for CLUSTER_SIZE in $CLUSTER_SIZES; do
+
+ echo "Creating new image; cluster size: $CLUSTER_SIZE"
+ echo
+
+ _make_test_img 8G
+
+ echo "Testing empty image"
+ echo
+
+ for offset in $TEST_OFFSETS; do
+ echo "At offset $offset:"
+ for op in $TEST_OPS; do
+ io_test $op $offset $CLUSTER_SIZE 3
+ done
+ _check_test_img
+ done
+
+ echo "Compressing image"
+ echo
+
+ mv $TEST_IMG $TEST_IMG.orig
+ $QEMU_IMG convert -f $IMGFMT -O $IMGFMT -c $TEST_IMG.orig $TEST_IMG
+
+ echo "Testing compressed image"
+ echo
+
+ for offset in $TEST_OFFSETS; do
+ echo "With offset $offset:"
+ for op in read readv; do
+ io_test $op $offset $CLUSTER_SIZE 3
+ done
+ _check_test_img
+ done
+
+ echo "Testing compressed image with odd offsets"
+ echo
+ for offset in $TEST_OFFSETS; do
+ # Some odd offset (1 sector), so tests will write to areas occupied partly
+ # by old (compressed) data and empty clusters
+ offset=$((offset + 512))
+ echo "With offset $offset:"
+ for op in $TEST_OPS; do
+ io_test $op $offset $CLUSTER_SIZE 3
+ done
+ _check_test_img
+ done
+
+ echo "Creating another new image"
+ echo
+
+ _make_test_img 8G
+
+ echo "More complex patterns"
+ echo
+
+ for offset in $TEST_OFFSETS; do
+ echo test2: With offset $offset
+ io_test2 $offset $CLUSTER_SIZE 4
+ _check_test_img
+ done
+
+done
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0