From 4e5ce543f0b2937add3f5c8838e1acc7b19cd115 Mon Sep 17 00:00:00 2001 From: Jes Sorensen Date: Wed, 23 May 2012 13:36:52 +1000 Subject: [PATCH] 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 '' and 'setup' arguments. The new options are --disable-multipath and --tests=,,... Signed-off-by: Jes Sorensen Signed-off-by: NeilBrown --- test | 88 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 65 insertions(+), 23 deletions(-) diff --git a/test b/test index 0679983..7882586 100755 --- a/test +++ b/test @@ -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=] [--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