Add support for saving log files in test script

--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>
This commit is contained in:
Jes Sorensen 2012-05-28 10:50:38 +10:00 committed by NeilBrown
parent ffec313014
commit 6038155520
1 changed files with 35 additions and 5 deletions

40
test
View File

@ -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