Add command line argument parsing to 'test' sript

This adds more generic command line argument parsing to the test
script. It also introduces a couple of new options, while preserving
the old '<prefix>' and 'setup' arguments. The new options are
--disable-multipath and --tests=<test1>,<test2>,...

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Jes Sorensen 2012-05-23 13:36:52 +10:00 committed by NeilBrown
parent 04c1ca5f29
commit 4e5ce543f0
1 changed files with 65 additions and 23 deletions

88
test
View File

@ -8,9 +8,6 @@ then echo >&2 "test: testing can only be done as 'root'."
fi
prefix='[0-9][0-9]'
if [ -n "$1" ]
then prefix=$1
fi
dir=`pwd`
mdadm=$dir/mdadm
@ -94,10 +91,6 @@ ulimit -c unlimited
echo 2000 > /proc/sys/dev/raid/speed_limit_max
echo 0 > /sys/module/md_mod/parameters/start_ro
if [ " $1" = " setup" ]
then trap 0 ; exit 0
fi
# mdadm always adds --quiet, and we want to see any unexpected messages
mdadm() {
rm -f $targetdir/stderr
@ -209,23 +202,72 @@ rotest() {
fsck -fn $dev >&2
}
for script in tests/$prefix tests/$prefix*[^~]
do
if [ -f "$script" ]
do_test() {
_script=$1
if [ -f "$_script" ]
then
rm -f $targetdir/stderr
# stop all arrays, just incase some script left an array active.
$mdadm -Ssq 2> /dev/null
mdadm --zero $devlist 2> /dev/null
mdadm --zero $devlist 2> /dev/null
# source script in a subshell, so it has access to our
# namespace, but cannot change it.
echo -ne "$script... "
if ( set -ex ; . $script ) 2> $targetdir/log
then echo "succeeded"
else echo "FAILED - see $targetdir/log for details"
exit 1
fi
rm -f $targetdir/stderr
# stop all arrays, just incase some script left an array active.
$mdadm -Ssq 2> /dev/null
mdadm --zero $devlist 2> /dev/null
mdadm --zero $devlist 2> /dev/null
# source script in a subshell, so it has access to our
# namespace, but cannot change it.
echo -ne "$_script... "
if ( set -ex ; . $_script ) 2> $targetdir/log
then echo "succeeded"
else echo "FAILED - see $targetdir/log for details"
exit 1
fi
fi
}
do_help() {
echo "Usage: "
echo " $0 [--tests=<test1,test2,..>] [--disable-multipath] [setup] [prefix]"
}
parse_args() {
for i in $*
do
case $i in
[0-9]*)
prefix=$i
;;
setup)
echo "mdadm test environment setup"
trap 0; exit 0
;;
--tests=*)
TESTLIST=`expr "x$i" : 'x[^=]*=\(.*\)' | sed -e 's/,/ /g'`
;;
--disable-multipath)
unset MULTIPATH
;;
--help)
do_help
exit 0;
;;
-*)
echo " $0: Unknown argument: $i"
do_help
exit 0;
;;
esac
done
}
parse_args $@
if [ "x$TESTLIST" != "x" ]; then
for script in $TESTLIST
do
do_test tests/$script
done
else
for script in tests/$prefix tests/$prefix*[^~]
do
do_test $script
done
fi
exit 0