blob: 640273c83f44f167ae9a80c0baf3ad10b9bf9271 [file] [log] [blame]
#
# eval_tools.sh
#
# Output functions for script tests. Source this from other test scripts
# to establish a standardized repertory of test functions.
#
#
# Except where noted, all functions return:
# 0 On success, (Bourne Shell's ``true'')
# non-0 Otherwise.
#
# Input arguments to each function are documented with each function.
#
#
# XXX Suggestions:
# DEBUG ON|OFF
# dump CAPTURE output to stdout as well as to junkoutputfile.
#
#
# Only allow ourselves to be eval'ed once
#
if [ "x$EVAL_TOOLS_SH_EVALED" != "xyes" ]; then
EVAL_TOOLS_SH_EVALED=yes
. ../TESTCONF.sh
#
# Variables used in global environment of calling script.
#
failcount=0
junkoutputfile="$SNMP_TMPDIR/output-`basename $0`$$"
seperator="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
#
# HEADER: returns a single line when SNMP_HEADERONLY mode and exits.
#
HEADER() {
if [ "x$SNMP_HEADERONLY" != "x" ]; then
echo test $*
exit 0;
else
echo -n "testing $*... "
fi
}
#------------------------------------ -o-
#
OUTPUT() { # <any_arguments>
cat <<GRONK
$*
GRONK
}
#------------------------------------ -o-
#
SUCCESS() { # <any_arguments>
[ "$failcount" -ne 0 ] && return
cat <<GROINK
SUCCESS: $*
GROINK
}
#------------------------------------ -o-
#
FAILED() { # <return_value>, <any_arguments>
[ "$1" -eq 0 ] && return
shift
failcount=`expr $failcount + 1`
cat <<GRONIK
FAILED: $*
GRONIK
}
#------------------------------------ -o-
#
VERIFY() { # <path_to_file(s)>
local missingfiles=
for f in $*; do
[ -e "$f" ] && continue
echo "FAILED: Cannot find file \"$f\"."
missingfiles=true
done
[ "$missingfiles" = true ] && exit 1000
}
#------------------------------------ -o-
#
STARTTEST() {
[ ! -e "$junkoutputfile" ] && {
touch $junkoutputfile
return
}
echo "FAILED: Output file already exists: \"$junkoutputfile\"."
exit 1000
}
#------------------------------------ -o-
#
STOPTEST() {
rm -rf "$junkoutputfile"
}
#------------------------------------ -o-
#
CAPTURE() { # <command_with_arguments_to_execute>
if [ $SNMP_VERBOSE -gt 0 ]; then
cat <<KNORG
EXECUTING: $*
KNORG
fi
( $* 2>&1 ) > $junkoutputfile
if [ $SNMP_VERBOSE -gt 1 ]; then
echo "Command Output: "
echo "$seperator"
cat $junkoutputfile | sed 's/^/ /'
echo "$seperator"
fi
}
#
# Checks the output result against what we expect.
# Sets return_value to 0 or 1.
#
EXPECTRESULT() {
if [ $snmp_last_test_result = $1 ]; then
return_value=0
else
return_value=1
fi
}
#------------------------------------ -o-
# Returns: Count of matched lines.
#
CHECK() { # <pattern_to_match>
if [ $SNMP_VERBOSE -gt 0 ]; then
echo -n "checking output for \"$*\"..."
fi
rval=`grep -c "$*" "$junkoutputfile" 2>/dev/null`
if [ $SNMP_VERBOSE -gt 0 ]; then
echo "$rval matches found"
fi
snmp_last_test_result=$rval
EXPECTRESULT 1 # default
return $rval
}
#------------------------------------ -o-
# Returns: Count of matched lines.
#
CHECKEXACT() { # <pattern_to_match_exactly>
rval=`grep -wc "$*" "$junkoutputfile" 2>/dev/null`
snmp_last_test_result=$rval
EXPECTRESULT 1 # default
return $rval
}
CONFIGAGENT() {
if [ "x$SNMP_CONFIG_FILE" = "x" ]; then
echo "$0: failed because var: SNMP_CONFIG_FILE wasn't set"
exit 1;
fi
echo $* >> $SNMP_CONFIG_FILE
}
STARTAGENT() {
if [ $SNMP_VERBOSE -gt 1 ]; then
echo "agent config: "
cat $SNMP_CONFIG_FILE
fi
COMMANDARGS="$SNMP_FLAGS $SNMP_SNMPD_PORT -P $SNMP_SNMPD_PID_FILE -l $SNMP_SNMPD_LOG_FILE -C -c $SNMP_CONFIG_FILE $AGENT_FLAGS"
# VERBOSE_OUT 2 "starting agent: snmpd $SNMP_SNMPD_PORT -P $SNMP_SNMPD_PID_FILE -l $SNMP_SNMPD_LOG_FILE -C -c $SNMP_CONFIG_FILE"
if [ $SNMP_VERBOSE -gt 0 ]; then
echo "running: snmpd $COMMANDARGS"
fi
snmpd $COMMANDARGS
}
STOPAGENT() {
if [ -f $SNMP_SNMPD_PID_FILE ]; then
kill `cat $SNMP_SNMPD_PID_FILE`
# XXX: kill -9 later (after sleep and ps grok?)?
fi
if [ $SNMP_VERBOSE -gt 1 ]; then
echo "Agent Output:"
echo "$seperator"
cat $SNMP_SNMPD_LOG_FILE
echo "$seperator"
fi
rm $SNMP_SNMPD_PID_FILE
}
FINISHED() {
if [ "x$SNMP_SAVE_TMPDIR" != "xyes" ]; then
rm -rf $SNMP_TMPDIR
fi
if [ "x$return_value" = "x0" ]; then
echo "ok"
else
echo "FAIL"
fi
exit $return_value
}
VERBOSE_OUT() {
if [ $SNMP_VERBOSE > $1 ]; then
shift
echo "$*"
fi
}
fi # Only allow ourselves to be eval'ed once