qemu-iotests: add support for rbd and sheepdog protocols
authorMORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Mon, 17 Jan 2011 17:01:17 +0000 (02:01 +0900)
committerKevin Wolf <kwolf@redhat.com>
Thu, 23 Feb 2012 09:29:46 +0000 (10:29 +0100)
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>
31 files changed:
tests/qemu-iotests/001
tests/qemu-iotests/002
tests/qemu-iotests/003
tests/qemu-iotests/004
tests/qemu-iotests/005
tests/qemu-iotests/006
tests/qemu-iotests/007
tests/qemu-iotests/008
tests/qemu-iotests/009
tests/qemu-iotests/010
tests/qemu-iotests/011
tests/qemu-iotests/012
tests/qemu-iotests/013
tests/qemu-iotests/014
tests/qemu-iotests/015
tests/qemu-iotests/016
tests/qemu-iotests/017
tests/qemu-iotests/018
tests/qemu-iotests/019
tests/qemu-iotests/020
tests/qemu-iotests/021
tests/qemu-iotests/022
tests/qemu-iotests/023
tests/qemu-iotests/024
tests/qemu-iotests/025
tests/qemu-iotests/026
tests/qemu-iotests/027
tests/qemu-iotests/028
tests/qemu-iotests/check
tests/qemu-iotests/common
tests/qemu-iotests/common.rc

index fe66a8e5d34ace2747a99b85f072d8f64c2c6571..bd88dde879bb1bec90db697a0f8ce370ddeff74a 100755 (executable)
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt generic
+_supported_proto generic
 _supported_os Linux
 
 
index 57af97416880bd05a6e3ec7b4e67ecb2906e46ba..bebed84fd984ef083382ac07ea24cb414150961e 100755 (executable)
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt generic
+_supported_proto generic
 _supported_os Linux
 
 
index 656da99e69450bc2f785a6036290c32b92cce3f1..ee25fb80781ab50d82eb6eefbb1d89afe22f92a4 100755 (executable)
@@ -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
index 3de7ed859afb25898a155f0ff1338fb27e176839..c76451c5a711b8d55e14ff1e21ab191e3fbe56d8 100755 (executable)
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt generic
+_supported_proto generic
 _supported_os Linux
 
 
index 480276bce54d0d7f16b0222fa54a1099842d2e0d..74537dbabb435372e390ec98aa81f96cbc5bd178 100755 (executable)
@@ -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
index 98ef4ea91d53a18bf65267613c37be9c5744bfd0..0c0cf5d32fd4961ba853c8e2a29d6a4f1e9e4282 100755 (executable)
@@ -40,6 +40,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt vpc
+_supported_proto generic
 _supported_os Linux
 
 
index 2de1aa4977b72eba5937ba7a0e0e97fa85bf8600..0139264c4f1698264d4e1a79e047f0a2f7135e6a 100755 (executable)
@@ -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
index b697deb2e37443653c3c0ef7b52f41f24037e09e..2c53bac925bae5f1bc42dbed9372b4b1e15ae433 100755 (executable)
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt generic
+_supported_proto generic
 _supported_os Linux
 
 
index 1499b77e91e904b3caeea5bdd4e5c0a422064e48..f7262b57bf8f243b8a064c10609957c14526e72c 100755 (executable)
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt generic
+_supported_proto generic
 _supported_os Linux
 
 
index 440e9f68fa99354209071e9c770355022e6cb1e1..e3205aa20603055d39382faa06a8f3c3bbebbb26 100755 (executable)
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt generic
+_supported_proto generic
 _supported_os Linux
 
 
index 87b408248142306ed7e0504d3b1411211f991cf0..59df1ae48e87425499606f5570acbf6bfbbf8c5e 100755 (executable)
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt generic
+_supported_proto generic
 _supported_os Linux
 
 
index 32a264750e48ec597610036925944325b3306db5..4052956cd9b01ea6463eb42fc52a87abce837ba9 100755 (executable)
@@ -41,6 +41,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt generic
+_supported_proto file
 _supported_os Linux
 
 
index 0671bf6ddc1b79cfd627dd51d912567edbb05795..ce40d5c5b684d2b1481b5678e2aae2d1b9c6590b 100755 (executable)
@@ -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"
index f38af439459a92ebbe6742e2305aaa90a77f7160..a6d0aea7c04df0debc35998532fb7057dedf1ddb 100755 (executable)
@@ -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"
index f3b0acc688ed458745f7502f273d8448cbd429c4..bdafd2629341c67d591566f4266934b9fe0a1056 100755 (executable)
@@ -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
index e09ab86425ed47c03c2f95b7a707b362d2097d17..16f151f29d76ceef621a584782f0b9c8b81d73e9 100755 (executable)
@@ -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
 
 
index 29dd53fb29b73f04732fa892afbd7b0c4d805d51..66951eb1a86fc9d40e4675934ca20ad0ce60654f 100755 (executable)
@@ -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"
index f155b4961e36ec6cf04c56c77397fae537c9abdb..bd2db787151f984276262346a2dca8e31ac1c6b1 100755 (executable)
@@ -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"
index a2d67c3269433cefbe79f4a378b5772ad14b07bb..8872b3035088231cc88169b6136727a7e3201a46 100755 (executable)
@@ -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"
index b065a5364091abac70c5fa155ae5c16eec034da5..2fb0ff87f227dbbd0f4fc2021f948b2d3eb3d6d3 100755 (executable)
@@ -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"
index eb6123094459107a783c0d027833c2f9fef2caaa..6da79ebbbefee15ad912b11c9ed7e6016a7088fa 100755 (executable)
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.filter
 
 _supported_fmt generic
+_supported_proto generic
 _supported_os Linux
 
 
index 635ad146a43533e413370a357431a1713d52663e..d35b8162be0fcd77825c10b54f7c9ff864fc46c1 100755 (executable)
@@ -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"
index 55c5be7693ce76a4dac2ad10e483d69b681718de..4f31b56589f4ed635d02fdc99b0f745afd814208 100755 (executable)
@@ -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"
index ff6e9842c93e44cf6224f62f8d1ea3d95aa00cbd..3d6f103b653caff6f475bc02c8e6920c9a1aa41f 100755 (executable)
@@ -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
index 6af1e46a1dbee386a79d404fedb5eef83377ec8a..fba44a47fbebcbfde07ec3e554ad1b4ee15c0f16 100755 (executable)
@@ -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"
index ad109f743e9bab97f1c38b8744e376de97a30424..33e7da6abe375198f6e26456c235ec0dc126a444 100755 (executable)
@@ -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
 
 
index 543c48ffaf72ed39604052f6df851f71dd114328..7d90481832239890e0a295aed65074c9b9d4febe 100755 (executable)
@@ -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
 
 
index cb8b25517a6d76c36bdc1a2bc4c04139c3e1c060..8321c93d4647189f4d9ae63634cfc7e4a6bd2fc0 100755 (executable)
@@ -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
index e0eaa7a06131ba4261441ec77820e3dffc5144da..84ef3e548090cd97103b08cd51a6b544aba2d4da 100755 (executable)
@@ -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
index d95ba4cddcf3d07b595d297c5bd6996ba3faed35..c187f6c57333f0e63ac09a178d40016370e98099 100644 (file)
@@ -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
index f2db92e985034ce8dc573bb8eeee3931b364444b..cdefafc62fa5ed26b5e866a2192661731c17cdc6 100644 (file)
@@ -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`