diff options
Diffstat (limited to 'test/unittest.sh')
-rwxr-xr-x | test/unittest.sh | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/test/unittest.sh b/test/unittest.sh new file mode 100755 index 0000000..f1ac9ab --- /dev/null +++ b/test/unittest.sh @@ -0,0 +1,254 @@ +#!/bin/sh +# unittest.sh [node_ip] +# Basic unit test for ipmiutil functions +# +dosol=0 +doserial=0 +outf=/tmp/unittest.out +# default remote node for SOL test +node=192.168.1.154 +mydir=`pwd` +indir=`dirname $0` +c1=`echo $indir |cut -c1` +if [ "$c1" = "/" ]; then + testdir=$indir +else + testdir=$mydir/$indir +fi +# datadir=/usr/share/ipmiutil +datadir=/var/lib/ipmiutil +# sfil is used only to read from with events -p -s below +# normally, sfil=$datadir/sensor-out.txt +sfil=${testdir}/sensor-TIGW1U.txt +sfil2=${testdir}/sensor-CG2100.txt +tmpc=/tmp/cfg.tmp +tmpin=/tmp/sol.in +# march=`rpmbuild --showrc |grep " _target_cpu" | head -n1 |awk '{print $3}'` +uarch=`uname -m` +LANPARAMS= +os=`uname -s` +if [ "$os" = "SunOS" ];then +TAIL="tail -1" +TAIL2="tail -2" +else +TAIL="tail -n1" +TAIL2="tail -n2" +fi + +if [ $# -ge 1 ];then + node=$1 + # use canned username and password, edit as needed. + LANPARAMS="-N $node -U admin -P password" +fi + +>$outf +cd /tmp +echo "# ipmiutil sel -v $LANPARAMS" |tee -a $outf +ipmiutil sel -v $LANPARAMS >>$outf 2>&1 +if [ $? -ne 0 ]; then + echo "No IPMI support detected" + exit 1 +fi + +echo "# ipmiutil health $LANPARAMS" |tee -a $outf +ipmiutil health $LANPARAMS |tee -a $outf +$TAIL $outf |grep successful >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi +echo "# ipmiutil cmd $LANPARAMS -x 00 20 18 01 " |tee -a $outf +ipmiutil cmd $LANPARAMS -x 00 20 18 01 2>&1 |tee -a $outf +$TAIL $outf |grep successful >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi +echo "# ipmiutil fru $LANPARAMS" |tee -a $outf +ipmiutil fru $LANPARAMS 2>&1 |tee -a $outf +$TAIL $outf |grep successful >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi +MODEL=`grep "Chassis OEM Field" $outf| cut -f2 -d':'| awk '{ print $1 }'` +echo "# ipmiutil config $LANPARAMS -s $tmpc" |tee -a $outf +ipmiutil config $LANPARAMS -s $tmpc 2>&1 |tee -a $outf +$TAIL $outf |grep successful >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi +echo "# ipmiutil lan $LANPARAMS " |tee -a $outf +ipmiutil lan $LANPARAMS 2>&1 |tee -a $outf +$TAIL $outf |grep successful >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi +echo "# ipmiutil sel $LANPARAMS" |tee -a $outf +ipmiutil sel $LANPARAMS 2>&1 |tee -a $outf +$TAIL $outf |grep successful >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi +echo "# ipmiutil sel -e $LANPARAMS" |tee -a $outf +ipmiutil sel -e $LANPARAMS 2>&1 |tee -a $outf +$TAIL $outf |grep successful >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi +echo "# ipmiutil sensor $LANPARAMS" |tee -a $outf +ipmiutil sensor $LANPARAMS 2>&1 |tee -a $outf +$TAIL $outf |grep successful >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi +# ipmiutil discover -a -b 10.243.42.255 |tee -a $outf +echo "# ipmiutil discover -a" |tee -a $outf +ipmiutil discover -a 2>&1 |tee -a $outf +$TAIL2 $outf |grep responses >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi +# Test getevt SEL method +echo "# ipmiutil getevt -s $LANPARAMS -t 3 " |tee -a $outf +ipmiutil getevt -s $LANPARAMS -t 3 2>&1 |tee -a $outf +rv=$? +# $TAIL $outf |grep successful >/dev/null +if [ $rv -ne 0 ]; then + echo "igetevt error $rv" + exit 1 +fi + +if [ "x$LANPARAMS" = "x" ]; then +# if local, also test getevt MessageBuffer method +echo "# ipmiutil getevt $LANPARAMS -t 3 " |tee -a $outf +ipmiutil getevt $LANPARAMS -t 3 2>&1 |tee -a $outf +rv=$? +# $TAIL $outf |grep successful >/dev/null +if [ $rv -ne 0 ]; then + echo "igetevt error $rv" + exit 1 +fi +fi + +if [ "$uarch" = "ia64" ] +then + # Note that ireset -n causes a real reset on ia64 (?) + echo "skipping ia64 ipmiutil reset" |tee -a $outf +else + # Use hwreset -n to send an NMI. + echo "# ipmiutil reset $LANPARAMS -n" |tee -a $outf + ipmiutil reset $LANPARAMS -n 2>&1 |tee -a $outf + $TAIL $outf |grep successful >/dev/null + if [ $? -ne 0 ]; then + exit 1 + fi +fi + +# Might not do SOL test if no remote server is configured for SOL. +if [ $dosol -eq 1 ]; then + echo "# ipmiutil sol -d -N $node " |tee -a $outf + ipmiutil sol -d -N $node 2>&1 |tee -a $outf + cat - <<%%% >$tmpin + +root +password +ls +pwd +echo success +exit +~. +%%% + echo "# ipmiutil sol -a -N $node -i $tmpin " |tee -a $outf + ipmiutil sol -a -N $node -i $tmpin 2>&1 |tee -a $outf + $TAIL $outf |grep successful >/dev/null + if [ $? -ne 0 ]; then + exit 1 + fi +fi + +echo "# ipmiutil events 18 00 02 02 00 00 00 20 00 04 09 01 6f 44 0f ff " |tee -a $outf +ipmiutil events 18 00 02 02 00 00 00 20 00 04 09 01 6f 44 0f ff |tee -a $outf +$TAIL2 $outf |grep "AC Lost" >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi + +echo "# ievents -p -s $sfil B3 E8 00 0E 0C C7 1B A0 11 08 12 7F 10 90 FF FF 20 20 00 20 02 15 01 41 0F FF " |tee -a $outf +ievents -p -s $sfil B3 E8 00 0E 0C C7 1B A0 11 08 12 7F 10 90 FF FF 20 20 00 20 02 15 01 41 0F FF |tee -a $outf +$TAIL2 $outf |grep "Redundancy Lost" >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi + +echo "# ipmiutil events -s $sfil2 -p B5 19 00 15 17 C6 C9 D0 00 02 B2 76 C1 16 FF FF 20 20 10 20 20 00 00 52 1D 20 00 00 00 00 00 00 00 00 00 00 00 00 C1 00 00 00 00 00 00 00 00 00 00" |tee -a $outf +ipmiutil events -s $sfil2 -p B5 19 00 15 17 C6 C9 D0 00 02 B2 76 C1 16 FF FF 20 20 10 20 20 00 00 52 1D 20 00 00 00 00 00 00 00 00 00 00 00 00 C1 00 00 00 00 00 00 00 00 00 00 |tee -a $outf +$TAIL2 $outf |grep "Lo Crit thresh" >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi + +echo "# ievents 40 78 02 37 86 41 4e 20 00 04 0c 08 6f 20 ff 04" |tee -a $outf +ievents 40 78 02 37 86 41 4e 20 00 04 0c 08 6f 20 ff 04 |tee -a $outf +$TAIL2 $outf |grep DIMM >/dev/null +if [ $? -ne 0 ]; then + echo "DIMM event FAIL" + exit 1 +fi + +echo "# ipmiutil events -d 40 78 02 37 86 41 4e 20 00 04 0c 08 6f 20 ff 04" |tee -a $outf +ipmiutil events -d 40 78 02 37 86 41 4e 20 00 04 0c 08 6f 20 ff 04 |tee -a $outf +$TAIL2 $outf |grep DIMM >/dev/null +if [ $? -ne 0 ]; then + echo "DIMM event FAIL" + exit 1 +fi + +echo "# ipmiutil wdt $LANPARAMS" |tee -a $outf +ipmiutil wdt $LANPARAMS 2>&1 |tee -a $outf +$TAIL $outf |grep successful >/dev/null +if [ $? -ne 0 ]; then + exit 1 +fi + +if [ $doserial -eq 1 ]; then + # some platforms do not support IPMI serial channels + echo "# ipmiutil serial $LANPARAMS" |tee -a $outf + ipmiutil serial $LANPARAMS 2>&1 |tee -a $outf + $TAIL $outf |grep successful >/dev/null + if [ $? -ne 0 ]; then + exit 1 + fi +fi + +# The model can be used to detect if the chassis has an alarm panel. +echo "MODEL=$MODEL" |tee -a $outf +case "$MODEL" in + TIGW1U) tamok=1 + ;; + TIGH2U) tamok=1 + ;; + TIGI2U) tamok=1 + ;; + TIGPR2U) tamok=1 + ;; + TIGPT1U) tamok=1 + ;; + TSRLT2) tamok=1 + ;; + TSRMT2) tamok=1 + ;; + CG2100) tamok=1 + ;; + *) tamok=0 + ;; +esac +# Run it anyway, the alarms command has better detection now. +tamok=1 +if [ $tamok -eq 1 ]; then + echo "# ipmiutil alarms $LANPARAMS" |tee -a $outf + ipmiutil alarms $LANPARAMS 2>&1 |tee -a $outf + $TAIL $outf |grep successful >/dev/null + if [ $? -ne 0 ]; then + exit 1 + fi +fi +cd $mydir + |