root / tests / qemu-iotests / 023 @ 908eaf68
History | View | Annotate | Download (2.8 kB)
1 |
#!/bin/bash |
---|---|
2 |
# |
3 |
# qcow2 pattern test with various cluster sizes |
4 |
# |
5 |
# Copyright (C) 2009 Red Hat, Inc. |
6 |
# |
7 |
# This program is free software; you can redistribute it and/or modify |
8 |
# it under the terms of the GNU General Public License as published by |
9 |
# the Free Software Foundation; either version 2 of the License, or |
10 |
# (at your option) any later version. |
11 |
# |
12 |
# This program is distributed in the hope that it will be useful, |
13 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 |
# GNU General Public License for more details. |
16 |
# |
17 |
# You should have received a copy of the GNU General Public License |
18 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 |
# |
20 |
|
21 |
# creator |
22 |
owner=kwolf@redhat.com |
23 |
|
24 |
seq=`basename $0` |
25 |
echo "QA output created by $seq" |
26 |
|
27 |
here=`pwd` |
28 |
tmp=/tmp/$$ |
29 |
status=1 # failure is the default! |
30 |
|
31 |
_cleanup() |
32 |
{ |
33 |
_cleanup_test_img |
34 |
} |
35 |
trap "_cleanup; exit \$status" 0 1 2 3 15 |
36 |
|
37 |
# get standard environment, filters and checks |
38 |
. ./common.rc |
39 |
. ./common.filter |
40 |
. ./common.pattern |
41 |
|
42 |
# much of this could be generic for any format supporting compression. |
43 |
_supported_fmt qcow qcow2 |
44 |
_supported_os Linux |
45 |
|
46 |
TEST_OFFSETS="0 4294967296" |
47 |
TEST_OPS="writev read write readv" |
48 |
|
49 |
# Can't use 512 byte clusters, the tests use cluster halves |
50 |
CLUSTER_SIZES="1024 4096 16384 65536" |
51 |
|
52 |
for CLUSTER_SIZE in $CLUSTER_SIZES; do |
53 |
|
54 |
echo "Creating new image; cluster size: $CLUSTER_SIZE" |
55 |
echo |
56 |
|
57 |
_make_test_img 8G |
58 |
|
59 |
echo "Testing empty image" |
60 |
echo |
61 |
|
62 |
for offset in $TEST_OFFSETS; do |
63 |
echo "At offset $offset:" |
64 |
for op in $TEST_OPS; do |
65 |
io_test $op $offset $CLUSTER_SIZE 3 |
66 |
done |
67 |
_check_test_img |
68 |
done |
69 |
|
70 |
echo "Compressing image" |
71 |
echo |
72 |
|
73 |
mv $TEST_IMG $TEST_IMG.orig |
74 |
$QEMU_IMG convert -f $IMGFMT -O $IMGFMT -c $TEST_IMG.orig $TEST_IMG |
75 |
|
76 |
echo "Testing compressed image" |
77 |
echo |
78 |
|
79 |
for offset in $TEST_OFFSETS; do |
80 |
echo "With offset $offset:" |
81 |
for op in read readv; do |
82 |
io_test $op $offset $CLUSTER_SIZE 3 |
83 |
done |
84 |
_check_test_img |
85 |
done |
86 |
|
87 |
echo "Testing compressed image with odd offsets" |
88 |
echo |
89 |
for offset in $TEST_OFFSETS; do |
90 |
# Some odd offset (1 sector), so tests will write to areas occupied partly |
91 |
# by old (compressed) data and empty clusters |
92 |
offset=$((offset + 512)) |
93 |
echo "With offset $offset:" |
94 |
for op in $TEST_OPS; do |
95 |
io_test $op $offset $CLUSTER_SIZE 3 |
96 |
done |
97 |
_check_test_img |
98 |
done |
99 |
|
100 |
echo "Creating another new image" |
101 |
echo |
102 |
|
103 |
_make_test_img 8G |
104 |
|
105 |
echo "More complex patterns" |
106 |
echo |
107 |
|
108 |
for offset in $TEST_OFFSETS; do |
109 |
echo test2: With offset $offset |
110 |
io_test2 $offset $CLUSTER_SIZE 4 |
111 |
_check_test_img |
112 |
done |
113 |
|
114 |
done |
115 |
|
116 |
# success, all done |
117 |
echo "*** done" |
118 |
rm -f $seq.full |
119 |
status=0 |