2013-08-21 00:50:41 -07:00
#!/bin/bash
2014-03-06 16:53:50 +00:00
# Copyright (c) 2013-2014 Red Hat, Inc. <http://www.redhat.com>
2013-08-21 00:50:41 -07:00
#
2014-03-06 16:53:50 +00:00
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( )
2013-08-21 00:50:41 -07:00
{
2013-09-15 19:56:25 -07:00
regression_testsdir = $( dirname $0 ) ;
2013-08-21 00:50:41 -07:00
if [ ! -f ${ regression_testsdir } /tests/include.rc ] ; then
2014-03-06 16:53:50 +00:00
echo "Aborting."
echo
echo "The tests/ subdirectory seems to be missing."
echo
echo "Please correct the problem and try again."
echo
2013-08-21 00:50:41 -07:00
exit 1
fi
}
2014-03-06 16:53:50 +00:00
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
}
2013-08-21 00:50:41 -07:00
function main( )
{
if [ $# -lt 1 ] ; then
echo "Running all the regression test cases"
prove -rf --timer ${ regression_testsdir } /tests;
else
## TODO
echo "Running single regression test.."
echo "WARNING: yet to be implemented.. exiting safely"
exit 0
#export DEBUG=1;
#echo "Automatically setting up DEBUG=1 for this test $1";
fi
}
2014-03-06 16:53:50 +00:00
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 " $@ "