summaryrefslogtreecommitdiff
path: root/test/unittest.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/unittest.sh')
-rwxr-xr-xtest/unittest.sh254
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
+