mirror of https://gitee.com/openkylin/qemu.git
tests: allow qemu-iotests to be run against nbd backend
To do this, we start a qemu-nbd process at _make_test_img and kill it in _cleanup_test_img. $TEST_IMG is changed to point at the TCP server. We also remove the checks for existence of binaries from common.config - they're duplicated in common, and we can make the qemu-nbd check conditional on $IMGPROTO being "nbd" if we do it there. Signed-off-by: Nick Thomas <nick@bytemark.co.uk> Acked-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
cee40d2d2d
commit
a9660664fd
|
@ -136,6 +136,7 @@ check options
|
||||||
-vmdk test vmdk
|
-vmdk test vmdk
|
||||||
-rbd test rbd
|
-rbd test rbd
|
||||||
-sheepdog test sheepdog
|
-sheepdog test sheepdog
|
||||||
|
-nbd test nbd
|
||||||
-xdiff graphical mode diff
|
-xdiff graphical mode diff
|
||||||
-nocache use O_DIRECT on backing file
|
-nocache use O_DIRECT on backing file
|
||||||
-misalign misalign memory allocations
|
-misalign misalign memory allocations
|
||||||
|
@ -197,12 +198,14 @@ testlist options
|
||||||
IMGPROTO=rbd
|
IMGPROTO=rbd
|
||||||
xpand=false
|
xpand=false
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-sheepdog)
|
-sheepdog)
|
||||||
IMGPROTO=sheepdog
|
IMGPROTO=sheepdog
|
||||||
xpand=false
|
xpand=false
|
||||||
;;
|
;;
|
||||||
|
-nbd)
|
||||||
|
IMGPROTO=nbd
|
||||||
|
xpand=false
|
||||||
|
;;
|
||||||
-nocache)
|
-nocache)
|
||||||
QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS --nocache"
|
QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS --nocache"
|
||||||
xpand=false
|
xpand=false
|
||||||
|
@ -350,7 +353,11 @@ fi
|
||||||
|
|
||||||
[ "$QEMU" = "" ] && _fatal "qemu not found"
|
[ "$QEMU" = "" ] && _fatal "qemu not found"
|
||||||
[ "$QEMU_IMG" = "" ] && _fatal "qemu-img not found"
|
[ "$QEMU_IMG" = "" ] && _fatal "qemu-img not found"
|
||||||
[ "$QEMU_IO" = "" ] && _fatal "qemu-img not found"
|
[ "$QEMU_IO" = "" ] && _fatal "qemu-io not found"
|
||||||
|
|
||||||
|
if [ "$IMGPROTO" = "nbd" ] ; then
|
||||||
|
[ "$QEMU_NBD" = "" ] && _fatal "qemu-nbd not found"
|
||||||
|
fi
|
||||||
|
|
||||||
if $valgrind; then
|
if $valgrind; then
|
||||||
export REAL_QEMU_IO="$QEMU_IO_PROG"
|
export REAL_QEMU_IO="$QEMU_IO_PROG"
|
||||||
|
|
|
@ -90,21 +90,23 @@ export PS_ALL_FLAGS="-ef"
|
||||||
if [ -z "$QEMU_PROG" ]; then
|
if [ -z "$QEMU_PROG" ]; then
|
||||||
export QEMU_PROG="`set_prog_path qemu`"
|
export QEMU_PROG="`set_prog_path qemu`"
|
||||||
fi
|
fi
|
||||||
[ "$QEMU_PROG" = "" ] && _fatal "qemu not found"
|
|
||||||
|
|
||||||
if [ -z "$QEMU_IMG_PROG" ]; then
|
if [ -z "$QEMU_IMG_PROG" ]; then
|
||||||
export QEMU_IMG_PROG="`set_prog_path qemu-img`"
|
export QEMU_IMG_PROG="`set_prog_path qemu-img`"
|
||||||
fi
|
fi
|
||||||
[ "$QEMU_IMG_PROG" = "" ] && _fatal "qemu-img not found"
|
|
||||||
|
|
||||||
if [ -z "$QEMU_IO_PROG" ]; then
|
if [ -z "$QEMU_IO_PROG" ]; then
|
||||||
export QEMU_IO_PROG="`set_prog_path qemu-io`"
|
export QEMU_IO_PROG="`set_prog_path qemu-io`"
|
||||||
fi
|
fi
|
||||||
[ "$QEMU_IO_PROG" = "" ] && _fatal "qemu-io not found"
|
|
||||||
|
if [ -z "$QEMU_NBD_PROG" ]; then
|
||||||
|
export QEMU_NBD_PROG="`set_prog_path qemu-nbd`"
|
||||||
|
fi
|
||||||
|
|
||||||
export QEMU=$QEMU_PROG
|
export QEMU=$QEMU_PROG
|
||||||
export QEMU_IMG=$QEMU_IMG_PROG
|
export QEMU_IMG=$QEMU_IMG_PROG
|
||||||
export QEMU_IO="$QEMU_IO_PROG $QEMU_IO_OPTIONS"
|
export QEMU_IO="$QEMU_IO_PROG $QEMU_IO_OPTIONS"
|
||||||
|
export QEMU_NBD=$QEMU_NBD_PROG
|
||||||
|
|
||||||
[ -f /etc/qemu-iotest.config ] && . /etc/qemu-iotest.config
|
[ -f /etc/qemu-iotest.config ] && . /etc/qemu-iotest.config
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,9 @@ umask 022
|
||||||
|
|
||||||
if [ "$IMGPROTO" = "file" ]; then
|
if [ "$IMGPROTO" = "file" ]; then
|
||||||
TEST_IMG=$TEST_DIR/t.$IMGFMT
|
TEST_IMG=$TEST_DIR/t.$IMGFMT
|
||||||
|
elif [ "$IMGPROTO" = "nbd" ]; then
|
||||||
|
TEST_IMG_FILE=$TEST_DIR/t.$IMGFMT
|
||||||
|
TEST_IMG="nbd:127.0.0.1:10810"
|
||||||
else
|
else
|
||||||
TEST_IMG=$IMGPROTO:$TEST_DIR/t.$IMGFMT
|
TEST_IMG=$IMGPROTO:$TEST_DIR/t.$IMGFMT
|
||||||
fi
|
fi
|
||||||
|
@ -86,6 +89,13 @@ _make_test_img()
|
||||||
local extra_img_options=""
|
local extra_img_options=""
|
||||||
local image_size=$*
|
local image_size=$*
|
||||||
local optstr=""
|
local optstr=""
|
||||||
|
local img_name=""
|
||||||
|
|
||||||
|
if [ -n "$TEST_IMG_FILE" ]; then
|
||||||
|
img_name=$TEST_IMG_FILE
|
||||||
|
else
|
||||||
|
img_name=$TEST_IMG
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "$IMGOPTS" ]; then
|
if [ -n "$IMGOPTS" ]; then
|
||||||
optstr=$(_optstr_add "$optstr" "$IMGOPTS")
|
optstr=$(_optstr_add "$optstr" "$IMGOPTS")
|
||||||
|
@ -104,7 +114,7 @@ _make_test_img()
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# XXX(hch): have global image options?
|
# XXX(hch): have global image options?
|
||||||
$QEMU_IMG create -f $IMGFMT $extra_img_options $TEST_IMG $image_size | \
|
$QEMU_IMG create -f $IMGFMT $extra_img_options $img_name $image_size | \
|
||||||
sed -e "s#$IMGPROTO:$TEST_DIR#TEST_DIR#g" \
|
sed -e "s#$IMGPROTO:$TEST_DIR#TEST_DIR#g" \
|
||||||
-e "s#$TEST_DIR#TEST_DIR#g" \
|
-e "s#$TEST_DIR#TEST_DIR#g" \
|
||||||
-e "s#$IMGFMT#IMGFMT#g" \
|
-e "s#$IMGFMT#IMGFMT#g" \
|
||||||
|
@ -115,12 +125,23 @@ _make_test_img()
|
||||||
-e "s# compat6=\\(on\\|off\\)##g" \
|
-e "s# compat6=\\(on\\|off\\)##g" \
|
||||||
-e "s# static=\\(on\\|off\\)##g" \
|
-e "s# static=\\(on\\|off\\)##g" \
|
||||||
-e "s# lazy_refcounts=\\(on\\|off\\)##g"
|
-e "s# lazy_refcounts=\\(on\\|off\\)##g"
|
||||||
|
|
||||||
|
# Start an NBD server on the image file, which is what we'll be talking to
|
||||||
|
if [ $IMGPROTO = "nbd" ]; then
|
||||||
|
eval "$QEMU_NBD -v -t -b 127.0.0.1 -p 10810 $TEST_IMG_FILE &"
|
||||||
|
QEMU_NBD_PID=$!
|
||||||
|
sleep 1 # FIXME: qemu-nbd needs to be listening before we continue
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
_cleanup_test_img()
|
_cleanup_test_img()
|
||||||
{
|
{
|
||||||
case "$IMGPROTO" in
|
case "$IMGPROTO" in
|
||||||
|
|
||||||
|
nbd)
|
||||||
|
kill $QEMU_NBD_PID
|
||||||
|
rm -f $TEST_IMG_FILE
|
||||||
|
;;
|
||||||
file)
|
file)
|
||||||
rm -f $TEST_DIR/t.$IMGFMT
|
rm -f $TEST_DIR/t.$IMGFMT
|
||||||
rm -f $TEST_DIR/t.$IMGFMT.orig
|
rm -f $TEST_DIR/t.$IMGFMT.orig
|
||||||
|
|
Loading…
Reference in New Issue