summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/psim/tools/runtest
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1998-04-14 19:49:13 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1998-04-14 19:49:13 +0000
commit89611889fe6e255dec90a5157a4f25c0f65057b4 (patch)
tree2facca64edc8503b3149c8157a43fb6674e4523f /c/src/lib/libbsp/powerpc/psim/tools/runtest
parentChanged arc to archive. (diff)
downloadrtems-89611889fe6e255dec90a5157a4f25c0f65057b4.tar.bz2
new files
Diffstat (limited to 'c/src/lib/libbsp/powerpc/psim/tools/runtest')
-rwxr-xr-xc/src/lib/libbsp/powerpc/psim/tools/runtest278
1 files changed, 278 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/psim/tools/runtest b/c/src/lib/libbsp/powerpc/psim/tools/runtest
new file mode 100755
index 0000000000..5fb2c92ca2
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/psim/tools/runtest
@@ -0,0 +1,278 @@
+#!/bin/sh -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
+ -d -- generate device tree file (as 'test'.device) 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 ${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=""
+device_and_exit=""
+stdio_setup="yes"
+run_to_completion="yes"
+logdir=log
+update_on_tick="no"
+max_run_time=$((5 * 60))
+using_print_buffer="yes"
+#simulator=/usr1/rtems/work/ada/4.00/ppc_src/b-gdb/sim/ppc/run
+simulator=powerpc-rtems-run
+instruction_limit=1000000000
+sizeof_ram=4194304
+
+while getopts vdl:o:s: OPT
+do
+ case "$OPT" in
+ v)
+ verbose="yes";;
+ d)
+ device_and_exit="yes"
+ run_to_completion="no"
+ stdio_setup="no";;
+ l)
+ logdir="$OPTARG";;
+ o)
+ extra_options="$OPTARG";;
+ r)
+ sizeof_ram="$OPTARG";;
+ s)
+ simulator="$OPTARG";;
+ *)
+ fatal;;
+ esac
+done
+
+let $((shiftcount = $OPTIND - 1))
+shift $shiftcount
+
+args=$*
+
+#
+# Check some parameters
+#
+
+# JRS CHANGE
+# if [ ! -x ${simulator} ] ; then
+# fatal "${simulator} is not executable"
+# fi;
+
+#
+# Run the tests
+#
+
+tests="$args"
+if [ ! "$tests" ]
+then
+ set -- `echo *.exe`
+ tests="$*"
+fi
+
+[ -d $logdir ] ||
+ mkdir $logdir || fatal "could not create log directory ($logdir)"
+
+# where the tmp files go
+trap "test_exit" 1 2 3 13 14 15
+
+for tfile in $tests
+do
+
+ tname=`basename $tfile .exe`
+ cpus="1"
+ TEST_TYPE="single"
+
+ case $tname in
+ # size is no longer interactive.
+ monitor| termios)
+ if [ $run_to_completion = "yes" ]
+ then
+ warn "Skipping $tname; it is interactive"
+ continue
+ fi
+ ;;
+ *-node2*)
+ warn "Skipping $tname; 'runtest' runs both nodes when for *-node1"
+ continue;;
+ *-node1*)
+ warn "Running both nodes associated with $tname"
+ tname=`echo $tname | sed 's/-node.*//'`
+ TEST_TYPE="mp"
+ ;;
+ stackchk*|spfatal*|malloctest*)
+ continue
+ ;;
+ esac
+
+ if [ $TEST_TYPE = "mp" ]
+ then
+ cpus="1 2"
+
+ logfile1=$logdir/${tname}_1
+ logfile2=$logdir/${tname}_2
+ infofile1=$logfile1.info
+ infofile2=$logfile2.info
+
+ rm -f ${logfile1} ${logfile2}
+
+ date=`date`
+ echo "Starting $tname at $date"
+
+ ${simulator} $extra_options -c ${instruction_limit} \
+ -o "/#address-cells 2" \
+ -o "/openprom/options/oea-memory-size ${sizeof_ram}" \
+ -o "/shm@0xc0000000/reg 0xc0000000 0x10000" \
+ -o "/shm@0xc0000000/key 0x1234" \
+ -o "/sem@0xc0010000/reg 0xc0010000 12" \
+ -o "/sem@0xc0010000/key 0x1234" \
+ -o "/sem@0xc0010000/value 1" ${tname}-node1.exe | \
+ sed -e 's/ //' -e '/^$/d' > ${logfile1} &
+
+ ${simulator} $extra_options -c ${instruction_limit} \
+ -o "/#address-cells 2" \
+ -o "/openprom/options/oea-memory-size ${sizeof_ram}" \
+ -o "/shm@0xc0000000/reg 0xc0000000 0x10000" \
+ -o "/shm@0xc0000000/key 0x1234" \
+ -o "/sem@0xc0010000/reg 0xc0010000 12" \
+ -o "/sem@0xc0010000/key 0x1234" \
+ -o "/sem@0xc0010000/value -1" ${tname}-node2.exe | \
+ sed -e 's/ //' -e '/^$/d' > ${logfile2} &
+
+ wait
+
+ fi
+
+ if [ $TEST_TYPE = "single" ]
+ then
+ logfile=$logdir/${tname}_1
+ infofile=$logfile.info
+
+ rm -f ${logfile}.tmp*
+
+ date=`date`
+ echo "Starting $tname at $date"
+
+ # Generate a device file to get the work done.
+ # The device file must do the following:
+ #
+ # arrange for more memory (2 Mb)
+
+ if [ "$device_and_exit" = "yes" ]
+ then
+ fatal "Cannot currently generate device files"
+ fi
+
+ # Spin off the simulator in the background
+ # -c sets an instruction limit
+
+ # Don't need to make sure it won't run forever... since there is
+ # an instruction count limit
+
+ #powerpc-rtems-run $extra_options -c ${instruction_limit} \
+ # -f ${devicefile} $tfile | sed -e 's/ //' -e '/^$/d' > ${logfile}
+
+ ${simulator} $extra_options -c ${instruction_limit} \
+ -o "/#address-cells 2" \
+ -o "/openprom/options/oea-memory-size ${sizeof_ram}" \
+ $tfile | sed -e 's/ //' -e '/^$/d' > ${logfile}
+ fi
+
+ # Create the info files
+ for cpu in $cpus
+ do
+ {
+ echo "$date"
+ echo "Test run on: `uname -n`"
+ echo "Host Information:"
+ echo `uname -a`
+ echo
+
+ #sed -e 's/ //' < ${logdir}/${tname}_${cpu}
+ cat ${logdir}/${tname}_${cpu}
+
+ if [ "$ran_too_long" = "yes" ]
+ then
+ echo "Test did NOT finish normally; killed after $max_run_time seconds"
+ fi
+
+ echo
+ date;
+ } > ${logdir}/${tname}_${cpu}.info
+ done
+
+ if [ "$cpus" = "1" ]
+ then
+ mv ${infofile} $logdir/${tname}.info
+ mv ${logfile} $logdir/${tname}
+ fi
+
+done
+
+echo "Tests completed at " `date`
+test_exit 0
+
+# Local Variables: ***
+# mode:ksh ***
+# End: ***
+