and added files
[bcm963xx.git] / userapps / opensource / net-snmp / testing / eval_oneprogram.sh
diff --git a/userapps/opensource/net-snmp/testing/eval_oneprogram.sh b/userapps/opensource/net-snmp/testing/eval_oneprogram.sh
new file mode 100755 (executable)
index 0000000..45edfc0
--- /dev/null
@@ -0,0 +1,138 @@
+#!/bin/sh
+#
+# eval_oneprogram.sh [-h][-lk] <program> [<program_args>]
+#
+# CALLED BY: eval_suite.sh
+#
+#
+# Runs <program> and reports how many instances of the strings SUCCESS
+# or FAILED occur.
+#
+#
+# FIX  Output from $PROGRAM on stderr is separated out and comes first.
+#
+#
+USAGE_LONG='
+#
+# -h   Help.
+# -k   Save the program output in "__<program_args>__<pid>o".
+# -l   Long form.  (Short form by default.)
+#
+# <program> is the executable to run and collect the output of.
+'
+
+USAGE="Usage: `basename $0` [-h][-lk] <program>"
+
+
+
+
+#------------------------------------ -o- 
+# Globals.
+#
+AWKFILE="_`basename $0`$$.awk"
+SCRIPTFILE=
+
+dolongform=0
+dokeepoutput=
+
+TOTALFAILED=0
+
+
+
+#------------------------------------ -o- 
+# Parse & setup.
+#
+while [ -n "$1" ]; do
+       case "$1" in
+       -k)     dokeepoutput=true
+               ;;
+       -l)     dolongform=1
+               ;;
+       -h)     echo $USAGE
+               cat <<BLIK | sed 's/^#//' | sed '1d'    1>&2
+$USAGE_LONG
+BLIK
+               exit 0
+               ;;
+       *)      PROGRAM="$*"
+               shift `expr $# - 1`
+               ;;
+       esac
+
+       shift
+done
+
+[ -z "$PROGRAM" ] && echo $USAGE && exit 1
+
+
+SCRIPTFILE="__`echo \`basename $PROGRAM\` | sed 's/ /_/g'`__$$o"
+
+
+
+#------------------------------------ -o- 
+# Create awk script.
+#
+
+cat <<GRONK >$AWKFILE
+
+BEGIN {
+       pass = 0
+       passlist[0] = ""
+
+       fail = 0
+       faillist[0] = ""
+
+       longform = $dolongform + 0
+}
+
+/SUCCESS/      {
+       passlist[pass] = \$0
+       pass += 1
+}
+
+/FAILED/       {
+       faillist[fail] = \$0
+       fail += 1
+}
+
+END {
+       printf "$PROGRAM SUCCESS: %d\n", pass
+       printf "$PROGRAM FAILED: %d\n", fail
+
+       if (longform) {
+               printf "\n"
+               for (i=0; i<pass; i++)
+                       print passlist[i]
+
+               for (i=0; i<fail; i++)
+                       print faillist[i]
+       }
+
+       exit fail
+}
+GRONK
+
+
+
+
+#------------------------------------ -o- 
+# Get and print results.
+#
+
+{ $PROGRAM $* 2>&1 ; } >$SCRIPTFILE
+
+awk -f $AWKFILE $SCRIPTFILE
+TOTALFAILED=$?
+
+rm -f $AWKFILE
+[ -z "$dokeepoutput" ] && rm -f $SCRIPTFILE
+
+
+
+
+#------------------------------------ -o- 
+# Exit, cleanup.
+#
+exit $TOTALFAILED
+
+