diff --git a/shell/regression/regression.sh b/shell/regression/regression.sh index 153fd70e00..fd7eb6b2b4 100755 --- a/shell/regression/regression.sh +++ b/shell/regression/regression.sh @@ -1,185 +1,185 @@ #!/bin/sh # Copyright (C) 2007 Dejan Muhamedagic <dmuhamedagic@suse.de> # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # rootdir=`dirname $0` TESTDIR=${TESTDIR:-$rootdir/testcases} DFLT_TESTSET=basicset OUTDIR=${OUTDIR:-crmtestout} CRM_OUTF="$OUTDIR/crm.out" CRM_LOGF="$OUTDIR/crm.log" CRM_DEBUGF="$OUTDIR/crm.debug" OUTF="$OUTDIR/regression.out" LRMD_OPTS="" DIFF_OPTS="--ignore-all-space -U 1" common_filter=$TESTDIR/common.filter common_exclf=$TESTDIR/common.excl export OUTDIR logmsg() { echo "`date`: $*" | tee -a $CRM_DEBUGF | tee -a $CRM_LOGF } abspath() { echo $1 | grep -qs "^/" && echo $1 || echo `pwd`/$1 } usage() { cat<<EOF usage: $0 [-q] [testcase...|set:testset] Test crm shell using supplied testcases. If none are given, set:basicset is used. All testcases and sets are in testcases/. See also README.regression for description. -q: quiet operation (no progress shown) EOF exit 2 } if [ ! -d "$TESTDIR" ]; then echo "$0: $TESTDIR does not exit" usage fi rm -f $CRM_LOGF $CRM_DEBUGF # make tools/lrmd/stonithd log to our files only HA_logfile=`abspath $CRM_LOGF` HA_debugfile=`abspath $CRM_DEBUGF` HA_use_logd=no HA_logfacility="" export HA_logfile HA_debugfile HA_use_logd HA_logfacility mkdir -p $OUTDIR . /etc/ha.d/shellfuncs args=`getopt hqc:p: $*` [ $? -ne 0 ] && usage eval set -- "$args" SILENT="" while [ x"$1" != x ]; do case "$1" in -h) usage;; -q) SILENT=1;; - -c) CRM=$2; export CRM; shift 2;; - -p) PATH="$2:$PATH"; export PATH; shift 2;; + -c) CRM=$2; export CRM; shift 1;; + -p) PATH="$2:$PATH"; export PATH; shift 1;; --) shift 1; break;; *) usage;; esac shift 1 done exec >$OUTF 2>&1 if [ "$SILENT" = 1 ]; then exec 3>/dev/null else exec 3>/dev/tty fi setenvironment() { filterf=$TESTDIR/$testcase.filter exclf=$TESTDIR/$testcase.excl log_filter=$TESTDIR/$testcase.log_filter expf=$TESTDIR/$testcase.exp outf=$OUTDIR/$testcase.out difff=$OUTDIR/$testcase.diff } filter_output() { { [ -x $common_filter ] && $common_filter || cat;} | { [ -f $common_exclf ] && egrep -vf $common_exclf || cat;} | { [ -x $filterf ] && $filterf || cat;} | { [ -f $exclf ] && egrep -vf $exclf || cat;} } dumpcase() { cat<<EOF ---------- testcase $testcase failed output is in $outf diff (from $difff): `cat $difff` ---------- EOF } runtestcase() { setenvironment echo -n "$testcase" >&3 logmsg "BEGIN testcase $testcase" ( cd $rootdir ./evaltest.sh ) < $TESTDIR/$testcase > $outf 2>&1 filter_output < $outf | if [ "$prepare" ]; then echo " saving to expect file" >&3 cat > $expf else echo -n " checking..." >&3 if head -2 $expf | grep -qs '^<cib'; then crm_diff -o $expf -n - else diff $DIFF_OPTS $expf - fi > $difff if [ $? -ne 0 ]; then echo " FAIL" >&3 dumpcase return 1 else echo " PASS" >&3 rm -f $outf $difff fi fi sed -n "/BEGIN testcase $testcase/,\$p" $CRM_LOGF | { [ -x $log_filter ] && $log_filter || cat;} | egrep '(CRIT|ERROR):' logmsg "END testcase $testcase" } [ "$1" = prepare ] && { prepare=1; shift 1;} [ $# -eq 0 ] && set "set:$DFLT_TESTSET" for a; do if [ "$a" -a -f "$TESTDIR/$a" ]; then testcase=$a runtestcase else echo "$a" | grep -q "^set:" && TESTSET=$TESTDIR/`echo $a | sed 's/set://'` while read testcase; do runtestcase done < $TESTSET fi done if egrep -wv '(BEGIN|END) testcase' $OUTF >/dev/null then echo "seems like some tests failed or else something not expected" echo "check $OUTF and diff files in $OUTDIR" echo "in case you wonder what lrmd was doing, read $CRM_LOGF and $CRM_DEBUGF" exit 1 else rm -f $OUTF $CRM_OUTF fi >&3