diff options
Diffstat (limited to 'run-tests.sh')
| -rwxr-xr-x | run-tests.sh | 103 | 
1 files changed, 99 insertions, 4 deletions
diff --git a/run-tests.sh b/run-tests.sh index 128404ed5e7..e9897706066 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -1,17 +1,98 @@  #!/bin/bash -# Copyright (c) 2013 Red Hat, Inc. <http://www.redhat.com> +# Copyright (c) 2013-2014 Red Hat, Inc. <http://www.redhat.com>  # -function _init() +function check_dependencies() +{ +    ## Check all dependencies are present +    MISSING="" + +    # Check for dbench +    if [ ! -x /usr/bin/dbench ]; then +        MISSING="$MISSING dbench" +    fi + +    # Check for git +    env git --version > /dev/null 2>&1 +    if [ $? -ne 0 ]; then +        MISSING="$MISSING git" +    fi + +    # Check for mock +    if [ ! -e /usr/bin/mock ]; then +        MISSING="$MISSING mock" +    fi + +    # Check for nfs-utils +    env mount.nfs -V > /dev/null 2>&1 +    if [ $? -ne 0 ]; then +        MISSING="$MISSING nfs-utils" +    fi + +    # Check for the Perl Test Harness +    env prove --version > /dev/null 2>&1 +    if [ $? -ne 0 ]; then +        MISSING="$MISSING perl-Test-Harness" +    fi + +    # Check for XFS programs +    env mkfs.xfs -V > /dev/null 2>&1 +    if [ $? -ne 0 ]; then +        MISSING="$MISSING xfsprogs" +    fi + +    # Check for attr +    env getfattr --version > /dev/null 2>&1 +    if [ $? -ne 0 ]; then +        MISSING="$MISSING attr" +    fi + +    ## If dependencies are missing, warn the user and abort +    if [ "x$MISSING" != "x" ]; then +        echo "Aborting." +        echo +        echo "The following required tools are missing:" +        echo +        for pkg in $MISSING; do +            echo "  * $pkg" +        done +        echo +        echo "Please install them and try again." +        echo +        exit 2 +    fi +} + +function check_location()  {      regression_testsdir=$(dirname $0);      if [ ! -f ${regression_testsdir}/tests/include.rc ]; then -        echo "Seems like GlusterFS quality tests are corrupted..aborting!!" +        echo "Aborting." +        echo +        echo "The tests/ subdirectory seems to be missing." +        echo +        echo "Please correct the problem and try again." +        echo          exit 1      fi  } +function check_user() +{ +    # If we're not running as root, warn the user and abort +    MYUID=`/usr/bin/id -u` +    if [ 0${MYUID} -ne 0 ]; then +        echo "Aborting." +        echo +        echo "The GlusterFS Test Framework must be run as root." +        echo +        echo "Please change to the root user and try again." +        echo +        exit 3 +    fi +} +  function main()  {      if [ $# -lt 1 ]; then @@ -27,4 +108,18 @@ function main()      fi  } -_init "$@" && main "$@" +echo +echo ... GlusterFS Test Framework ... +echo + +# Make sure we're running as the root user +check_user + +# Make sure the needed programs are available +check_dependencies + +# Check we're running from the right location +check_location + +# Run the tests +main "$@"  | 
