Commit a9660664 authored by Nick Thomas's avatar Nick Thomas Committed by Kevin Wolf
Browse files

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: default avatarNick Thomas <nick@bytemark.co.uk>
Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent cee40d2d
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -136,6 +136,7 @@ check options
    -vmdk               test vmdk
    -rbd                test rbd
    -sheepdog           test sheepdog
    -nbd                test nbd
    -xdiff		graphical mode diff
    -nocache		use O_DIRECT on backing file
    -misalign		misalign memory allocations
@@ -197,12 +198,14 @@ testlist options
	    IMGPROTO=rbd
	    xpand=false
	    ;;

	-sheepdog)
	    IMGPROTO=sheepdog
	    xpand=false
	    ;;

	-nbd)
	    IMGPROTO=nbd
	    xpand=false
	    ;;
	-nocache)
	    QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS --nocache"
	    xpand=false
@@ -350,7 +353,11 @@ fi

[ "$QEMU" = "" ] && _fatal "qemu 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
    export REAL_QEMU_IO="$QEMU_IO_PROG"
+6 −4
Original line number Diff line number Diff line
@@ -90,21 +90,23 @@ export PS_ALL_FLAGS="-ef"
if [ -z "$QEMU_PROG" ]; then
    export QEMU_PROG="`set_prog_path qemu`"
fi
[ "$QEMU_PROG" = "" ] && _fatal "qemu not found"

if [ -z "$QEMU_IMG_PROG" ]; then
    export QEMU_IMG_PROG="`set_prog_path qemu-img`"
fi
[ "$QEMU_IMG_PROG" = "" ] && _fatal "qemu-img not found"

if [ -z "$QEMU_IO_PROG" ]; then
    export QEMU_IO_PROG="`set_prog_path qemu-io`"
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_IMG=$QEMU_IMG_PROG
export QEMU_IO="$QEMU_IO_PROG $QEMU_IO_OPTIONS"
export QEMU_NBD=$QEMU_NBD_PROG

[ -f /etc/qemu-iotest.config ]       && . /etc/qemu-iotest.config

+22 −1
Original line number Diff line number Diff line
@@ -49,6 +49,9 @@ umask 022

if [ "$IMGPROTO" = "file" ]; then
    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
    TEST_IMG=$IMGPROTO:$TEST_DIR/t.$IMGFMT
fi
@@ -86,6 +89,13 @@ _make_test_img()
    local extra_img_options=""
    local image_size=$*
    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
        optstr=$(_optstr_add "$optstr" "$IMGOPTS")
@@ -104,7 +114,7 @@ _make_test_img()
    fi

    # 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" \
            -e "s#$TEST_DIR#TEST_DIR#g" \
            -e "s#$IMGFMT#IMGFMT#g" \
@@ -115,12 +125,23 @@ _make_test_img()
            -e "s# compat6=\\(on\\|off\\)##g" \
            -e "s# static=\\(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()
{
    case "$IMGPROTO" in

        nbd)
            kill $QEMU_NBD_PID
            rm -f $TEST_IMG_FILE
            ;;
        file)
            rm -f $TEST_DIR/t.$IMGFMT
            rm -f $TEST_DIR/t.$IMGFMT.orig