summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/leon/tools/runtest.in
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-11-13 22:40:29 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-11-13 22:40:29 +0000
commitb21b0ab3e77d91fc32e4324d3dfaf57ce24096ab (patch)
treef20f740d0789c29c4ee5784b1455ef841c14ae36 /c/src/lib/libbsp/sparc/leon/tools/runtest.in
parent2000-11-13 Jiri Gaisler <jgais@ws.estec.esa.nl> (diff)
downloadrtems-b21b0ab3e77d91fc32e4324d3dfaf57ce24096ab.tar.bz2
2000-11-13 Jiri Gaisler <jgais@ws.estec.esa.nl>
* .cvsignore, ChangeLog, Makefile.am, README, bsp_specs, configure.in, times, clock/.cvsignore, clock/Makefile.am, clock/ckinit.c, console/.cvsignore, console/Makefile.am, console/console.c, console/consolereserveresources.c, console/debugputs.c, gnatsupp/.cvsignore, gnatsupp/Makefile.am, gnatsupp/gnatsupp.c, include/.cvsignore, include/Makefile.am, include/bsp.h, include/coverhd.h, include/leon.h, start/.cvsignore, start/Makefile.am, startup/.cvsignore, startup/Makefile.am, startup/boardinit.S, startup/linkcmds, startup/setvec.c, startup/spurious.c, timer/.cvsignore, timer/Makefile.am, timer/timer.c, tools/.cvsignore, tools/Makefile.am, tools/configure.in, tools/runtest.in, wrapup/.cvsignore, wrapup/Makefile.am: New file.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/sparc/leon/tools/runtest.in312
1 files changed, 312 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/sparc/leon/tools/runtest.in b/c/src/lib/libbsp/sparc/leon/tools/runtest.in
new file mode 100644
index 0000000000..b7c6f723c2
--- /dev/null
+++ b/c/src/lib/libbsp/sparc/leon/tools/runtest.in
@@ -0,0 +1,312 @@
+#!@KSH@ -p
+#
+# $Id$
+#
+# Run rtems tests on the hppa simulator
+# This program generates a simulator script to run each test
+# Typically the test is then run, although it can be generated
+# and left as a file using -s
+#
+
+# progname=`basename $0`
+progname=${0##*/} # fast basename hack for ksh, bash
+
+USAGE=\
+"usage: $progname [ -opts ] test [ test ... ]
+ -o options -- specify options to be passed to simulator
+ -v -- verbose
+ -s -- generate script file (as 'test'.ss) and exit
+ -l logdir -- specify log directory (default is 'logdir')
+
+ Specify test as 'test' or 'test.exe'.
+ All multiprocessing tests *must* be specified simply as 'mp01', etc.
+"
+
+# export everything
+set -a
+
+# log an error to stderr
+prerr()
+{
+ echo "$*" >&2
+}
+
+fatal() {
+ [ "$1" ] && prerr $*
+ prerr "$USAGE"
+ exit 1
+}
+
+warn() {
+ [ "$1" ] && prerr $*
+}
+
+# print args, 1 per line
+ml_echo()
+{
+ for l
+ do
+ echo "$l"
+ done
+}
+
+# run at normal and signalled exit
+test_exit()
+{
+ exit_code=$1
+
+ rm -f ${statfile}* ${scriptfile}* ${logfile}.tmp*
+ [ "$sim_pid" ] && kill -9 $sim_pid
+
+ exit $exit_code
+}
+
+#
+# process the options
+#
+# defaults for getopt vars
+#
+# max_run_time is defaulted to 5 minutes
+#
+
+verbose=""
+extra_options=""
+script_and_exit=""
+stdio_setup="yes"
+run_to_completion="yes"
+logdir=log
+update_on_tick="no"
+max_run_time=$((5 * 60))
+using_print_buffer="yes"
+
+while getopts vhr12o:c:sl:t OPT
+do
+ case "$OPT" in
+ v)
+ verbose="yes";;
+ s)
+ script_and_exit="yes"
+ run_to_completion="no"
+ stdio_setup="no";;
+ l)
+ logdir="$OPTARG";;
+ o)
+ extra_options="$OPTARG";;
+ *)
+ fatal;;
+ esac
+done
+
+let $((shiftcount = $OPTIND - 1))
+shift $shiftcount
+
+args=$*
+
+#
+# Run the tests
+#
+
+tests="$args"
+if [ ! "$tests" ]
+then
+ set -- `echo *.exe`
+ tests="$*"
+fi
+
+[ -d $logdir ] ||
+ mkdir $logdir || fatal "could not create log directory ($logdir)"
+
+cpus=1
+
+# where the tmp files go
+statfile=/tmp/stats$$
+scriptfile=/tmp/script$$
+
+trap "test_exit" 1 2 3 13 14 15
+
+for tfile in $tests
+do
+
+ tname=`basename $tfile .exe`
+ TEST_TYPE="single"
+
+ case $tname in
+ monitor)
+ if [ $run_to_completion = "yes" ]
+ then
+ warn "Skipping $tname; it is interactive"
+ continue
+ fi
+ ;;
+ *-node2*)
+ fatal "MP tests not supported"
+ warn "Skipping $tname; 'runtest' runs both nodes when for *-node1"
+ continue;;
+ *-node1*)
+ warn "Running both nodes associated with $tname"
+ variant=`echo $tname | sed 's/.*-node[12]//' | sed 's/\.exe//'`
+ tname=`echo $tname | sed 's/-node.*//'`
+ TEST_TYPE="mp"
+ ;;
+ minimum*|stackchk*|spfatal*|termio*)
+ warn "Skipping $tname; it locks up or takes a VERY long time to run"
+ continue
+ ;;
+ esac
+
+ # Change the title bar to indicate which test we are running
+ # The simulator screen doesn't provide any indication
+
+ logfile=$logdir/$tname
+ infofile=$logfile.info
+
+ rm -f ${statfile}* ${scriptfile}* ${logfile}.tmp*
+
+ date=`date`
+ echo "Starting $tname at $date"
+
+ # Generate a script file to get the work done.
+ # The script file must do the following:
+ #
+ # load the program (programs if MP test)
+ # arrange for capture of output
+ # run the program
+ # produce statistics
+
+ {
+ case $TEST_TYPE in
+ "mp")
+ fatal "MP tests not supported"
+ ;;
+
+ # All other tests (single-processor)
+ *)
+ echo "load $tfile"
+ echo "go 0x02000000"
+ echo ""
+ echo "perf"
+ echo "quit"
+ ;;
+ esac
+
+ } > ${scriptfile}
+
+ if [ "$script_and_exit" = "yes" ]
+ then
+ mv ${scriptfile} $tname.ss
+ warn "script left in $tname.ss"
+ test_exit 0
+ fi
+
+ # Spin off the simulator in the background
+ sparc-rtems-sis $extra_options -c ${scriptfile} >${logfile}.tmp &
+ sim_pid=$!
+
+ # Make sure it won't run forever...
+ {
+ time_run=0
+ while [ $time_run -lt $max_run_time ]
+ do
+ # sleep 10s at a time waiting for job to finish or timer to expire
+ # if job has exited, then we exit, too.
+ sleep 10
+ if kill -0 $sim_pid 2>/dev/null
+ then
+ time_run=$((time_run + 10))
+ else
+ exit 0
+ fi
+ done
+
+ kill -2 $sim_pid 2>/dev/null
+ { sleep 5; kill -9 $sim_pid 2>/dev/null; } &
+ } &
+
+ wait $sim_pid
+ status=$?
+ if [ $status -ne 0 ]
+ then
+ ran_too_long="yes"
+ else
+ ran_too_long="no"
+ fi
+
+ sim_pid=""
+
+ # fix up the printf output from the test
+ case $TEST_TYPE in
+ mp)
+ fatal "MP not supported"
+ ;;
+ *)
+ output_it=1
+ sed -e '1,9d' \
+ -e 's/ //' -e '/^$/d' < ${logfile}.tmp |
+ while read line
+ do
+ if [ $output_it -eq 1 ] ; then
+ if [ "$line" = "sis> perf" ] ; then
+ output_it=0
+ elif [ "$line" = "sis> quit" ] ; then
+ output_it=0
+ elif [ "$line" = "sis>" ] ; then
+ output_it=0
+ else
+ echo "$line"
+ fi
+ fi
+ done > ${logfile}_1
+ ;;
+ esac
+
+ # Create the info files
+ for cpu in $cpus
+ do
+ {
+ echo "$date"
+ echo "Test run on: `uname -n` ( `uname -a` )"
+
+ output_it=0
+ sed -e 's/ //' < ${logfile}.tmp |
+ while read line
+ do
+ if [ $output_it -eq 1 ] ; then
+ if [ "$line" = "sis> quit" ] ; then
+ output_it=0
+ else
+ echo "$line"
+ fi
+ else
+ if [ "$line" = "sis> perf" ] ; then
+ output_it=1
+ fi
+ fi
+ done
+
+
+ if [ "$ran_too_long" = "yes" ]
+ then
+ echo "Test did NOT finish normally; killed after $max_run_time seconds"
+ fi
+
+ echo
+ date;
+ } > ${infofile}_$cpu
+ done
+
+ rm -f ${logfile}.tmp*
+
+ if [ "$cpus" = "1" ]
+ then
+ mv ${infofile}_1 ${infofile}
+ mv ${logfile}_1 ${logfile}
+ fi
+
+done
+
+test_exit 0
+
+# Local Variables: ***
+# mode:ksh ***
+# End: ***
+