aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>2011-01-18 02:01:17 +0900
committerKevin Wolf <kwolf@redhat.com>2012-02-23 10:29:46 +0100
commit9cdfa1b34e22bc09e80042b1ef3e4a5096f260d5 (patch)
tree5e35bba9d58160dc12df1bc3b88e2418f27d834e
parent62284d1776e4e9d1e39e393398becf7c778ca0ce (diff)
qemu-iotests: add support for rbd and sheepdog protocols
This patch introduces tests for protocols other than file, and initially supports rbd and sheepdog. Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp> Signed-off-by: Christoph Hellwig <hch@lst.de>
-rwxr-xr-xtests/qemu-iotests/0011
-rwxr-xr-xtests/qemu-iotests/0021
-rwxr-xr-xtests/qemu-iotests/0031
-rwxr-xr-xtests/qemu-iotests/0041
-rwxr-xr-xtests/qemu-iotests/0056
-rwxr-xr-xtests/qemu-iotests/0061
-rwxr-xr-xtests/qemu-iotests/0071
-rwxr-xr-xtests/qemu-iotests/0081
-rwxr-xr-xtests/qemu-iotests/0091
-rwxr-xr-xtests/qemu-iotests/0101
-rwxr-xr-xtests/qemu-iotests/0111
-rwxr-xr-xtests/qemu-iotests/0121
-rwxr-xr-xtests/qemu-iotests/0131
-rwxr-xr-xtests/qemu-iotests/0141
-rwxr-xr-xtests/qemu-iotests/0151
-rwxr-xr-xtests/qemu-iotests/0161
-rwxr-xr-xtests/qemu-iotests/0171
-rwxr-xr-xtests/qemu-iotests/0181
-rwxr-xr-xtests/qemu-iotests/0191
-rwxr-xr-xtests/qemu-iotests/0201
-rwxr-xr-xtests/qemu-iotests/0211
-rwxr-xr-xtests/qemu-iotests/0221
-rwxr-xr-xtests/qemu-iotests/0231
-rwxr-xr-xtests/qemu-iotests/0241
-rwxr-xr-xtests/qemu-iotests/0251
-rwxr-xr-xtests/qemu-iotests/0261
-rwxr-xr-xtests/qemu-iotests/0271
-rwxr-xr-xtests/qemu-iotests/0281
-rwxr-xr-xtests/qemu-iotests/check2
-rw-r--r--tests/qemu-iotests/common13
-rw-r--r--tests/qemu-iotests/common.rc45
31 files changed, 89 insertions, 4 deletions
diff --git a/tests/qemu-iotests/001 b/tests/qemu-iotests/001
index fe66a8e5d3..bd88dde879 100755
--- a/tests/qemu-iotests/001
+++ b/tests/qemu-iotests/001
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/002 b/tests/qemu-iotests/002
index 57af974168..bebed84fd9 100755
--- a/tests/qemu-iotests/002
+++ b/tests/qemu-iotests/002
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/003 b/tests/qemu-iotests/003
index 656da99e69..ee25fb8078 100755
--- a/tests/qemu-iotests/003
+++ b/tests/qemu-iotests/003
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
size=128M
diff --git a/tests/qemu-iotests/004 b/tests/qemu-iotests/004
index 3de7ed859a..c76451c5a7 100755
--- a/tests/qemu-iotests/004
+++ b/tests/qemu-iotests/004
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/005 b/tests/qemu-iotests/005
index 480276bce5..74537dbabb 100755
--- a/tests/qemu-iotests/005
+++ b/tests/qemu-iotests/005
@@ -42,6 +42,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
# vpc is limited to 127GB, so we can't test it here
@@ -49,6 +50,11 @@ if [ "$IMGFMT" = "vpc" ]; then
_notrun "image format $IMGFMT does not support large image sizes"
fi
+# sheepdog image is limited to 4TB, so we can't test it here
+if [ "$IMGPROTO" = "sheepdog" ]; then
+ _notrun "image protocol $IMGPROTO does not support large image sizes"
+fi
+
echo
echo "creating large image"
_make_test_img 5000G
diff --git a/tests/qemu-iotests/006 b/tests/qemu-iotests/006
index 98ef4ea91d..0c0cf5d32f 100755
--- a/tests/qemu-iotests/006
+++ b/tests/qemu-iotests/006
@@ -40,6 +40,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt vpc
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/007 b/tests/qemu-iotests/007
index 2de1aa4977..0139264c4f 100755
--- a/tests/qemu-iotests/007
+++ b/tests/qemu-iotests/007
@@ -41,6 +41,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# currently only qcow2 allows for consistency checks using qemu-img
_supported_fmt qcow2
+_supported_proto generic
_supported_os Linux
echo
diff --git a/tests/qemu-iotests/008 b/tests/qemu-iotests/008
index b697deb2e3..2c53bac925 100755
--- a/tests/qemu-iotests/008
+++ b/tests/qemu-iotests/008
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/009 b/tests/qemu-iotests/009
index 1499b77e91..f7262b57bf 100755
--- a/tests/qemu-iotests/009
+++ b/tests/qemu-iotests/009
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/010 b/tests/qemu-iotests/010
index 440e9f68fa..e3205aa206 100755
--- a/tests/qemu-iotests/010
+++ b/tests/qemu-iotests/010
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/011 b/tests/qemu-iotests/011
index 87b4082481..59df1ae48e 100755
--- a/tests/qemu-iotests/011
+++ b/tests/qemu-iotests/011
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/012 b/tests/qemu-iotests/012
index 32a264750e..4052956cd9 100755
--- a/tests/qemu-iotests/012
+++ b/tests/qemu-iotests/012
@@ -41,6 +41,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto file
_supported_os Linux
diff --git a/tests/qemu-iotests/013 b/tests/qemu-iotests/013
index 0671bf6ddc..ce40d5c5b6 100755
--- a/tests/qemu-iotests/013
+++ b/tests/qemu-iotests/013
@@ -41,6 +41,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# much of this could be generic for any format supporting compression.
_supported_fmt qcow qcow2
+_supported_proto generic
_supported_os Linux
TEST_OFFSETS="0 4294967296"
diff --git a/tests/qemu-iotests/014 b/tests/qemu-iotests/014
index f38af43945..a6d0aea7c0 100755
--- a/tests/qemu-iotests/014
+++ b/tests/qemu-iotests/014
@@ -43,6 +43,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# much of this could be generic for any format supporting snapshots
_supported_fmt qcow2
+_supported_proto generic
_supported_os Linux
TEST_OFFSETS="0 4294967296"
diff --git a/tests/qemu-iotests/015 b/tests/qemu-iotests/015
index f3b0acc688..bdafd26293 100755
--- a/tests/qemu-iotests/015
+++ b/tests/qemu-iotests/015
@@ -41,6 +41,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# actually any format that supports snapshots
_supported_fmt qcow2
+_supported_proto generic
_supported_os Linux
echo
diff --git a/tests/qemu-iotests/016 b/tests/qemu-iotests/016
index e09ab86425..16f151f29d 100755
--- a/tests/qemu-iotests/016
+++ b/tests/qemu-iotests/016
@@ -40,6 +40,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# currently raw is the only protocol we support
_supported_fmt raw
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/017 b/tests/qemu-iotests/017
index 29dd53fb29..66951eb1a8 100755
--- a/tests/qemu-iotests/017
+++ b/tests/qemu-iotests/017
@@ -41,6 +41,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# Any format supporting backing files
_supported_fmt qcow qcow2 vmdk qed
+_supported_proto generic
_supported_os Linux
TEST_OFFSETS="0 4294967296"
diff --git a/tests/qemu-iotests/018 b/tests/qemu-iotests/018
index f155b4961e..bd2db78715 100755
--- a/tests/qemu-iotests/018
+++ b/tests/qemu-iotests/018
@@ -41,6 +41,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# Any format supporting backing files
_supported_fmt qcow qcow2 vmdk qed
+_supported_proto generic
_supported_os Linux
TEST_OFFSETS="0 4294967296"
diff --git a/tests/qemu-iotests/019 b/tests/qemu-iotests/019
index a2d67c3269..8872b30350 100755
--- a/tests/qemu-iotests/019
+++ b/tests/qemu-iotests/019
@@ -45,6 +45,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# Any format supporting backing files
_supported_fmt qcow qcow2 vmdk qed
+_supported_proto generic
_supported_os Linux
TEST_OFFSETS="0 4294967296"
diff --git a/tests/qemu-iotests/020 b/tests/qemu-iotests/020
index b065a53640..2fb0ff87f2 100755
--- a/tests/qemu-iotests/020
+++ b/tests/qemu-iotests/020
@@ -43,6 +43,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# Any format supporting backing files
_supported_fmt qcow qcow2 vmdk qed
+_supported_proto generic
_supported_os Linux
TEST_OFFSETS="0 4294967296"
diff --git a/tests/qemu-iotests/021 b/tests/qemu-iotests/021
index eb61230944..6da79ebbbe 100755
--- a/tests/qemu-iotests/021
+++ b/tests/qemu-iotests/021
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt generic
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/022 b/tests/qemu-iotests/022
index 635ad146a4..d35b8162be 100755
--- a/tests/qemu-iotests/022
+++ b/tests/qemu-iotests/022
@@ -43,6 +43,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# Any format that supports snapshots
_supported_fmt qcow2
+_supported_proto generic
_supported_os Linux
TEST_OFFSETS="10485760 4294967296"
diff --git a/tests/qemu-iotests/023 b/tests/qemu-iotests/023
index 55c5be7693..4f31b56589 100755
--- a/tests/qemu-iotests/023
+++ b/tests/qemu-iotests/023
@@ -41,6 +41,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# much of this could be generic for any format supporting compression.
_supported_fmt qcow qcow2
+_supported_proto generic
_supported_os Linux
TEST_OFFSETS="0 4294967296"
diff --git a/tests/qemu-iotests/024 b/tests/qemu-iotests/024
index ff6e9842c9..3d6f103b65 100755
--- a/tests/qemu-iotests/024
+++ b/tests/qemu-iotests/024
@@ -43,6 +43,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# Currently only qcow2 and qed support rebasing
_supported_fmt qcow2 qed
+_supported_proto generic
_supported_os Linux
CLUSTER_SIZE=65536
diff --git a/tests/qemu-iotests/025 b/tests/qemu-iotests/025
index 6af1e46a1d..fba44a47fb 100755
--- a/tests/qemu-iotests/025
+++ b/tests/qemu-iotests/025
@@ -40,6 +40,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.pattern
_supported_fmt raw qcow2
+_supported_proto file sheepdog
_supported_os Linux
echo "=== Creating image"
diff --git a/tests/qemu-iotests/026 b/tests/qemu-iotests/026
index ad109f743e..33e7da6abe 100755
--- a/tests/qemu-iotests/026
+++ b/tests/qemu-iotests/026
@@ -42,6 +42,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# Currently only qcow2 supports rebasing
_supported_fmt qcow2
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/027 b/tests/qemu-iotests/027
index 543c48ffaf..7d90481832 100755
--- a/tests/qemu-iotests/027
+++ b/tests/qemu-iotests/027
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
. ./common.filter
_supported_fmt vmdk qcow qcow2 qed
+_supported_proto generic
_supported_os Linux
diff --git a/tests/qemu-iotests/028 b/tests/qemu-iotests/028
index cb8b25517a..8321c93d46 100755
--- a/tests/qemu-iotests/028
+++ b/tests/qemu-iotests/028
@@ -45,6 +45,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# Any format supporting backing files except vmdk and qcow which do not support
# smaller backing files.
_supported_fmt qcow2 qed
+_supported_proto generic
_supported_os Linux
# Choose a size that is not necessarily a cluster size multiple for image
diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
index e0eaa7a061..84ef3e5480 100755
--- a/tests/qemu-iotests/check
+++ b/tests/qemu-iotests/check
@@ -152,12 +152,14 @@ rm -f check.full
[ -f check.time ] || touch check.time
FULL_IMGFMT_DETAILS=`_full_imgfmt_details`
+FULL_IMGPROTO_DETAILS=`_full_imgproto_details`
FULL_HOST_DETAILS=`_full_platform_details`
#FULL_MKFS_OPTIONS=`_scratch_mkfs_options`
#FULL_MOUNT_OPTIONS=`_scratch_mount_options`
cat <<EOF
IMGFMT -- $FULL_IMGFMT_DETAILS
+IMGPROTO -- $FULL_IMGPROTO_DETAILS
PLATFORM -- $FULL_HOST_DETAILS
EOF
diff --git a/tests/qemu-iotests/common b/tests/qemu-iotests/common
index d95ba4cddc..c187f6c573 100644
--- a/tests/qemu-iotests/common
+++ b/tests/qemu-iotests/common
@@ -43,6 +43,7 @@ randomize=false
rm -f $tmp.list $tmp.tmp $tmp.sed
export IMGFMT=raw
+export IMGPROTO=file
export QEMU_IO_OPTIONS=""
for r
@@ -123,6 +124,8 @@ check options
-vdi test vdi
-vpc test vpc
-vmdk test vmdk
+ -rbd test rbd
+ -sheepdog test sheepdog
-xdiff graphical mode diff
-nocache use O_DIRECT on backing file
-misalign misalign memory allocations
@@ -179,6 +182,16 @@ testlist options
xpand=false
;;
+ -rbd)
+ IMGPROTO=rbd
+ xpand=false
+ ;;
+
+ -sheepdog)
+ IMGPROTO=sheepdog
+ xpand=false
+ ;;
+
-nocache)
QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS --nocache"
xpand=false
diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
index f2db92e985..cdefafc62f 100644
--- a/tests/qemu-iotests/common.rc
+++ b/tests/qemu-iotests/common.rc
@@ -47,7 +47,11 @@ fi
# make sure we have a standard umask
umask 022
-TEST_IMG=$TEST_DIR/t.$IMGFMT
+if [ "$IMGPROTO" = "file" ]; then
+ TEST_IMG=$TEST_DIR/t.$IMGFMT
+else
+ TEST_IMG=$IMGPROTO:$TEST_DIR/t.$IMGFMT
+fi
_make_test_img()
{
@@ -61,6 +65,7 @@ _make_test_img()
# XXX(hch): have global image options?
$QEMU_IMG create -f $IMGFMT $TEST_IMG $extra_img_options | \
+ sed -e "s#$IMGPROTO:$TEST_DIR#TEST_DIR#g" | \
sed -e "s#$TEST_DIR#TEST_DIR#g" | \
sed -e "s#$IMGFMT#IMGFMT#g" | \
sed -e "s# encryption=off##g" | \
@@ -72,9 +77,23 @@ _make_test_img()
_cleanup_test_img()
{
- rm -f $TEST_DIR/t.$IMGFMT
- rm -f $TEST_DIR/t.$IMGFMT.orig
- rm -f $TEST_DIR/t.$IMGFMT.base
+ case "$IMGPROTO" in
+
+ file)
+ rm -f $TEST_DIR/t.$IMGFMT
+ rm -f $TEST_DIR/t.$IMGFMT.orig
+ rm -f $TEST_DIR/t.$IMGFMT.base
+ ;;
+
+ rbd)
+ rbd rm $TEST_DIR/t.$IMGFMT > /dev/null
+ ;;
+
+ sheepdog)
+ collie vdi delete $TEST_DIR/t.$IMGFMT
+ ;;
+
+ esac
}
_check_test_img()
@@ -207,6 +226,19 @@ _supported_fmt()
_notrun "not suitable for this image format: $IMGFMT"
}
+# tests whether $IMGPROTO is one of the supported image protocols for a test
+#
+_supported_proto()
+{
+ for f; do
+ if [ "$f" = "$IMGPROTO" -o "$f" = "generic" ]; then
+ return
+ fi
+ done
+
+ _notrun "not suitable for this image protocol: $IMGPROTO"
+}
+
# tests whether the host OS is one of the supported OSes for a test
#
_supported_os()
@@ -234,6 +266,11 @@ _full_imgfmt_details()
echo "$IMGFMT"
}
+_full_imgproto_details()
+{
+ echo "$IMGPROTO"
+}
+
_full_platform_details()
{
os=`uname -s`