]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Add support for saving log files in test script
authorJes Sorensen <Jes.Sorensen@redhat.com>
Mon, 28 May 2012 00:50:38 +0000 (10:50 +1000)
committerNeilBrown <neilb@suse.de>
Mon, 28 May 2012 00:50:38 +0000 (10:50 +1000)
--logdir= specifies where to save, if different from default, and
--save-logs tells test to save all log files.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
test

diff --git a/test b/test
index 788258649256db43189d20e0c2a27e136435a5fc..1abb2590656df67fc377883d6528aa1fbe9efdf5 100755 (executable)
--- a/test
+++ b/test
@@ -16,6 +16,10 @@ then
    echo >&2 "test: $mdadm isn't usable."
 fi
 
+testdir="tests"
+logdir="$testdir/logs"
+logsave=0
+
 # Check whether to run multipath tests
 modprobe multipath 2> /dev/null
 if grep -s 'Personalities : .*multipath' > /dev/null /proc/mdstat ; then
@@ -204,6 +208,7 @@ rotest() {
 
 do_test() {
   _script=$1
+  _basename=`basename $_script`
   if [ -f "$_script" ]
   then
     rm -f $targetdir/stderr
@@ -215,8 +220,17 @@ do_test() {
     # 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"
+    then
+      echo "succeeded"
+      _fail=0
+    else
+      echo "FAILED - see $targetdir/log for details"
+      _fail=1
+    fi
+    if [ "$savelogs" == "1" ]; then
+      cp $targetdir/log $logdir/$_basename.log
+    fi
+    if [ "$_fail" == "1" ]; then
       exit 1
     fi
   fi
@@ -224,7 +238,7 @@ do_test() {
 
 do_help() {
   echo "Usage: "
-  echo " $0 [--tests=<test1,test2,..>] [--disable-multipath] [setup] [prefix]"
+  echo " $0 [--tests=<test1,test2,..>] [--disable-multipath] [--logdir] [--save-logs] [setup] [prefix]"
 }
 
 parse_args() {
@@ -241,6 +255,18 @@ parse_args() {
     --tests=*)
       TESTLIST=`expr "x$i" : 'x[^=]*=\(.*\)' | sed -e 's/,/ /g'`
       ;;
+    --logdir=*)
+      logdir=`expr "x$i" : 'x[^=]*=\(.*\)'`
+      ;;
+    --save-logs)
+      savelogs=1
+      if [ ! -d $logdir ] ; then
+        mkdir $logdir
+        if [ $? -ne 0 ] ; then
+         exit 1;
+       fi
+      fi
+      ;;
     --disable-multipath)
       unset MULTIPATH
       ;;
@@ -259,13 +285,17 @@ done
 
 parse_args $@
 
+if [ "$savelogs" == "1" ]; then
+  echo "Saving logs to $logdir"
+fi
+
 if [ "x$TESTLIST" != "x" ]; then
   for script in $TESTLIST
   do
-    do_test tests/$script
+    do_test $testdir/$script
   done
 else
-  for script in tests/$prefix tests/$prefix*[^~]
+  for script in $testdir/$prefix $testdir/$prefix*[^~]
   do
     do_test $script
   done