Commit cceaf1db authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Kevin Wolf
Browse files

qemu-iotests: cleanup and fix search for programs



Instead of ./check failing when a binary is missing, we try each test
case now and each one fails with tons of test case diffs.  Also, all the
variables were initialized by "check" prior to "common" being sourced,
and then (uselessly) checked for emptiness again in "check".

Centralize the search for programs in "common" (which will soon be
one with "check"), including the "realpath" invocation which can be done
just once in "check" rather than in the tests.

For qnio_server, move the detection to "common", simplifying
set_prog_path to stop handling the unused second argument, and
embedding the "realpath" pass.

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 48259488
Loading
Loading
Loading
Loading
+0 −41
Original line number Diff line number Diff line
@@ -60,47 +60,6 @@ fi

build_root="$build_iotests/../.."

if [ -x "$build_iotests/socket_scm_helper" ]
then
    export SOCKET_SCM_HELPER="$build_iotests/socket_scm_helper"
fi

if [[ -z "$QEMU_PROG" && ! -x './qemu' ]]
then
    arch=$(uname -m 2> /dev/null)

    if [[ -n $arch && -x "$build_root/$arch-softmmu/qemu-system-$arch" ]]
    then
        export QEMU_PROG="$build_root/$arch-softmmu/qemu-system-$arch"
    else
        pushd "$build_root" > /dev/null
        for binary in *-softmmu/qemu-system-*
        do
            if [ -x "$binary" ]
            then
                export QEMU_PROG="$build_root/$binary"
                break
            fi
        done
        popd > /dev/null
    fi
fi

if [[ -z $QEMU_IMG_PROG && -x "$build_root/qemu-img" && ! -x './qemu-img' ]]
then
    export QEMU_IMG_PROG="$build_root/qemu-img"
fi

if [[ -z $QEMU_IO_PROG && -x "$build_root/qemu-io" && ! -x './qemu-io' ]]
then
    export QEMU_IO_PROG="$build_root/qemu-io"
fi

if [[ -z $QEMU_NBD_PROG && -x "$build_root/qemu-nbd" && ! -x './qemu-nbd' ]]
then
    export QEMU_NBD_PROG="$build_root/qemu-nbd"
fi

# we need common.env
if ! . "$build_iotests/common.env"
then
+72 −5
Original line number Diff line number Diff line
@@ -37,6 +37,17 @@ _full_platform_details()
    echo "$os/$platform $host $kernel"
}

# $1 = prog to look for
set_prog_path()
{
    p=`command -v $1 2> /dev/null`
    if [ -n "$p" -a -x "$p" ]; then
        realpath -- "$(type -p "$p")"
    else
        return 1
    fi
}

diff="diff -u"
verbose=false
debug=false
@@ -450,10 +461,66 @@ fi
list=`sort $tmp.list`
rm -f $tmp.list $tmp.tmp $tmp.sed

[ "$QEMU" = "" ] && _fatal "qemu not found"
[ "$QEMU_IMG" = "" ] && _fatal "qemu-img not found"
[ "$QEMU_IO" = "" ] && _fatal "qemu-io not found"
if [ -z "$QEMU_PROG" ]
then
    if [ -x "$build_iotests/qemu" ]; then
        export QEMU_PROG="$build_iotests/qemu"
    elif [ -x "$build_root/$arch-softmmu/qemu-system-$arch" ]; then
        export QEMU_PROG="$build_root/$arch-softmmu/qemu-system-$arch"
    else
        pushd "$build_root" > /dev/null
        for binary in *-softmmu/qemu-system-*
        do
            if [ -x "$binary" ]
            then
                export QEMU_PROG="$build_root/$binary"
                break
            fi
        done
        popd > /dev/null
        [ "$QEMU_PROG" = "" ] && _init_error "qemu not found"
    fi
fi
export QEMU_PROG=$(realpath -- "$(type -p "$QEMU_PROG")")

if [ -z "$QEMU_IMG_PROG" ]; then
    if [ -x "$build_iotests/qemu-img" ]; then
        export QEMU_IMG_PROG="$build_iotests/qemu-img"
    elif [ -x "$build_root/qemu-img" ]; then
        export QEMU_IMG_PROG="$build_root/qemu-img"
    else
        _init_error "qemu-img not found"
    fi
fi
export QEMU_IMG_PROG=$(realpath -- "$(type -p "$QEMU_IMG_PROG")")

if [ -z "$QEMU_IO_PROG" ]; then
    if [ -x "$build_iotests/qemu-io" ]; then
        export QEMU_IO_PROG="$build_iotests/qemu-io"
    elif [ -x "$build_root/qemu-io" ]; then
        export QEMU_IO_PROG="$build_root/qemu-io"
    else
        _init_error "qemu-io not found"
    fi
fi
export QEMU_IO_PROG=$(realpath -- "$(type -p "$QEMU_IO_PROG")")

if [ "$IMGPROTO" = "nbd" ] ; then
    [ "$QEMU_NBD" = "" ] && _fatal "qemu-nbd not found"
if [ -z $QEMU_NBD_PROG ]; then
    if [ -x "$build_iotests/qemu-nbd" ]; then
        export QEMU_NBD_PROG="$build_iotests/qemu-nbd"
    elif [ -x "$build_root/qemu-nbd" ]; then
        export QEMU_NBD_PROG="$build_root/qemu-nbd"
    else
        _init_error "qemu-nbd not found"
    fi
fi
export QEMU_NBD_PROG=$(realpath -- "$(type -p "$QEMU_NBD_PROG")")

if [ -z "$QEMU_VXHS_PROG" ]; then
  export QEMU_VXHS_PROG="`set_prog_path qnio_server`"
fi

if [ -x "$build_iotests/socket_scm_helper" ]
then
    export SOCKET_SCM_HELPER="$build_iotests/socket_scm_helper"
fi
+1 −60
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ export LANG=C
PATH=".:$PATH"

HOSTOS=`uname -s`
arch=`uname -m`

export PWD=`pwd`

@@ -30,28 +31,6 @@ export _QEMU_HANDLE=0
# make sure we have a standard umask
umask 022

# $1 = prog to look for, $2* = default pathnames if not found in $PATH
set_prog_path()
{
    p=`command -v $1 2> /dev/null`
    if [ -n "$p" -a -x "$p" ]; then
        echo $p
        return 0
    fi
    p=$1

    shift
    for f; do
        if [ -x $f ]; then
            echo $f
            return 0
        fi
    done

    echo ""
    return 1
}

_optstr_add()
{
    if [ -n "$1" ]; then
@@ -61,44 +40,6 @@ _optstr_add()
    fi
}

_fatal()
{
    echo "$*"
    status=1
    exit 1
}

if [ -z "$QEMU_PROG" ]; then
    export QEMU_PROG="`set_prog_path qemu`"
fi

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

if [ -z "$QEMU_IO_PROG" ]; then
    export QEMU_IO_PROG="`set_prog_path qemu-io`"
fi

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`"
fi

export QEMU_PROG=$(realpath -- "$(type -p "$QEMU_PROG")")
export QEMU_IMG_PROG=$(realpath -- "$(type -p "$QEMU_IMG_PROG")")
export QEMU_IO_PROG=$(realpath -- "$(type -p "$QEMU_IO_PROG")")
export QEMU_NBD_PROG=$(realpath -- "$(type -p "$QEMU_NBD_PROG")")

# This program is not built as part of qemu but (possibly) provided by the
# system, so it may not be present at all
if [ -n "$QEMU_VXHS_PROG" ]; then
    export QEMU_VXHS_PROG=$(realpath -- "$(type -p "$QEMU_VXHS_PROG")")
fi

_qemu_wrapper()
{
    (