On Mon, Nov 07, 2016 at 04:59:45PM -0800, Ashish Mittal wrote: > These changes use a vxhs test server that is a part of the following > repository: > https://github.com/MittalAshish/libqnio.git > > Signed-off-by: Ashish Mittal <ashish.mit...@veritas.com> > --- > v6 changelog: > (1) Added iotests for VxHS block device. > > tests/qemu-iotests/common | 6 ++++++ > tests/qemu-iotests/common.config | 13 +++++++++++++ > tests/qemu-iotests/common.filter | 1 + > tests/qemu-iotests/common.rc | 19 +++++++++++++++++++ > 4 files changed, 39 insertions(+) > > diff --git a/tests/qemu-iotests/common b/tests/qemu-iotests/common > index d60ea2c..41430d8 100644 > --- a/tests/qemu-iotests/common > +++ b/tests/qemu-iotests/common
When using raw format, I was able to run the test successfully for all supported test cases (26 of them). With qcow2, they fail - but not the fault of this patch, I think; but rather, the fault of the test server. Can qnio_server be modified so that it does not work on just raw files? > @@ -158,6 +158,7 @@ check options > -nfs test nfs > -archipelago test archipelago > -luks test luks > + -vxhs test vxhs > -xdiff graphical mode diff > -nocache use O_DIRECT on backing file > -misalign misalign memory allocations > @@ -261,6 +262,11 @@ testlist options > xpand=false > ;; > > + -vxhs) > + IMGPROTO=vxhs > + xpand=false > + ;; > + > -ssh) > IMGPROTO=ssh > xpand=false > diff --git a/tests/qemu-iotests/common.config > b/tests/qemu-iotests/common.config > index f6384fb..c7a80c0 100644 > --- a/tests/qemu-iotests/common.config > +++ b/tests/qemu-iotests/common.config > @@ -105,6 +105,10 @@ if [ -z "$QEMU_NBD_PROG" ]; then > export QEMU_NBD_PROG="`set_prog_path qemu-nbd`" > fi > > +if [ -z "$QEMU_VXHS_PROG" ]; then > + export QEMU_VXHS_PROG="`set_prog_path qnio_server /usr/local/bin`" > +fi > + > _qemu_wrapper() > { > ( > @@ -156,10 +160,19 @@ _qemu_nbd_wrapper() > ) > } > > +_qemu_vxhs_wrapper() > +{ > + ( > + echo $BASHPID > "${TEST_DIR}/qemu-vxhs.pid" > + exec "$QEMU_VXHS_PROG" $QEMU_VXHS_OPTIONS "$@" > + ) > +} > + > export QEMU=_qemu_wrapper > export QEMU_IMG=_qemu_img_wrapper > export QEMU_IO=_qemu_io_wrapper > export QEMU_NBD=_qemu_nbd_wrapper > +export QEMU_VXHS=_qemu_vxhs_wrapper > > QEMU_IMG_EXTRA_ARGS= > if [ "$IMGOPTSSYNTAX" = "true" ]; then > diff --git a/tests/qemu-iotests/common.filter > b/tests/qemu-iotests/common.filter > index 240ed06..a8a4d0e 100644 > --- a/tests/qemu-iotests/common.filter > +++ b/tests/qemu-iotests/common.filter > @@ -123,6 +123,7 @@ _filter_img_info() > -e "s#$TEST_DIR#TEST_DIR#g" \ > -e "s#$IMGFMT#IMGFMT#g" \ > -e 's#nbd://127.0.0.1:10810$#TEST_DIR/t.IMGFMT#g' \ > + -e 's#json.*vdisk-id.*vxhs"}}#TEST_DIR/t.IMGFMT#' \ > -e "/encrypted: yes/d" \ > -e "/cluster_size: [0-9]\\+/d" \ > -e "/table_size: [0-9]\\+/d" \ > diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc > index 3213765..06a3164 100644 > --- a/tests/qemu-iotests/common.rc > +++ b/tests/qemu-iotests/common.rc > @@ -89,6 +89,9 @@ else > TEST_IMG=$TEST_DIR/t.$IMGFMT > elif [ "$IMGPROTO" = "archipelago" ]; then > TEST_IMG="archipelago:at.$IMGFMT" > + elif [ "$IMGPROTO" = "vxhs" ]; then > + TEST_IMG_FILE=$TEST_DIR/t.$IMGFMT > + TEST_IMG="vxhs://127.0.0.1:9999/t.$IMGFMT" > else > TEST_IMG=$IMGPROTO:$TEST_DIR/t.$IMGFMT > fi > @@ -175,6 +178,12 @@ _make_test_img() > eval "$QEMU_NBD -v -t -b 127.0.0.1 -p 10810 -f $IMGFMT > $TEST_IMG_FILE &" > sleep 1 # FIXME: qemu-nbd needs to be listening before we continue > fi > + > + # Start QNIO server on image directory for vxhs protocol > + if [ $IMGPROTO = "vxhs" ]; then > + eval "$QEMU_VXHS -d $TEST_DIR &" > + sleep 1 # Wait for server to come up. > + fi > } > > _rm_test_img() > @@ -201,6 +210,16 @@ _cleanup_test_img() > fi > rm -f "$TEST_IMG_FILE" > ;; > + vxhs) > + if [ -f "${TEST_DIR}/qemu-vxhs.pid" ]; then > + local QEMU_VXHS_PID > + read QEMU_VXHS_PID < "${TEST_DIR}/qemu-vxhs.pid" > + kill ${QEMU_VXHS_PID} >/dev/null 2>&1 > + rm -f "${TEST_DIR}/qemu-vxhs.pid" > + fi > + rm -f "$TEST_IMG_FILE" > + ;; > + > file) > _rm_test_img "$TEST_DIR/t.$IMGFMT" > _rm_test_img "$TEST_DIR/t.$IMGFMT.orig" > -- > 1.8.3.1 >