From 419d1e91a2413a2eb7564b34a781b2f6016dba43 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 25 Apr 2018 16:06:34 +0200 Subject: bsp/mcf5206elite: Do not install runtest script Provide the runtest script only as a part of the sources. This simplifies the build system. Test support should be included in the RTEMS Tester. --- bsps/m68k/mcf5206elite/runtest | 351 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 351 insertions(+) create mode 100644 bsps/m68k/mcf5206elite/runtest (limited to 'bsps') diff --git a/bsps/m68k/mcf5206elite/runtest b/bsps/m68k/mcf5206elite/runtest new file mode 100644 index 0000000000..0e814b2c1b --- /dev/null +++ b/bsps/m68k/mcf5206elite/runtest @@ -0,0 +1,351 @@ +#! /bin/sh -p +# +# Run rtems tests on the Motorola MCF5206eLITE Coldfire Evaluation board +# using gdb configured with P&E Micro Background Debug Mode debugging +# interface. +# +# This program generates a gdb script to run each test, intercept +# serial port output and put log into output file. +# +# Author: Victor V. Vengerov +# Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia +# +# Partially based on runtest script for powerpc psim. +# +# COPYRIGHT (c) 1989-1999. +# On-Line Applications Research Corporation (OAR). +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.org/license/LICENSE. +# + +# progname=`basename $0` +progname=${0##*/} # fast basename hack for ksh, bash + +USAGE=\ +"usage: $progname [ -opts ] test [ test ... ] + -s ttydevice -- specify serial device to be used to capture test + output + -r baud -- set serial port baud rate (19200 by default) + -b bdmdevice -- specify BDM device to be used to control the target + -g gdbname -- specify name of gdb program to be used + -v -- verbose output + -d -- don't remove temporary files (for debugging only) + -i -- use interrupt driven console I/O when test is running + (many tests failed when interrupt driven console + input/output is used due undetermenistic tests + behaviour) + -p -- use termios poll console I/O + -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 $* +} + +# run at normal and signalled exit +test_exit() +{ + exit_code=$1 + + rm -f ${logfile}.tmp* + [ "$gdb_pid" ] && kill -9 $gdb_pid + [ "$serial_pid" ] && kill -9 $serial_pid + + exit $exit_code +} + +# +# process the options +# +# defaults for getopt vars +# +# max_run_time is defaulted to 5 minutes +# + +verbose="" +serial_device=/dev/ttyS0 +bdm_device=/dev/bdmcf0 +gdbprog=true +for i in rtems bdm-rtems bdm bdm-elf bdm-coff ; do + if m68k-$i-gdb --version > /dev/null 2>&1 ; then + gdbprog=m68k-$i-gdb ; + break ; + fi +done +logdir=log +max_run_time=$((5 * 60)) +sizeof_ram=$((1 * 1024 * 1024)) +debugging="no" +baudrate="19200" +console_mode=0 + +while getopts vdips:r:b:l: OPT +do + case "$OPT" in + v) + verbose="yes";; + d) + debugging="yes";; + s) + serial_device="$OPTARG";; + r) + baudrate="$OPTARG";; + b) + bdm_device="$OPTARG";; + l) + logdir="$OPTARG";; + s) + gdbprog="$OPTARG";; + p) + console_mode=1;; + i) + console_mode=2;; + *) + 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)" + +# 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. + capture* | monitor* | termios* | fileio* | pppd*) + warn "Skipping $tname; it is interactive" + continue + ;; + *-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" + ;; + minimum*|stackchk*|*fatal*|malloctest*) + continue + ;; + esac + + if [ "$TEST_TYPE" = "mp" ] ; then + fatal "MP tests not supported for this board" + fi + + if [ $TEST_TYPE = "single" ] ; then + logfile=$logdir/${tname} + infofile=${logfile}.info + scriptfile=${logfile}.ss + gdblogfile=${logfile}.gdb + + rm -f ${logfile}.tmp* + + date=`date` + echo "Starting $tname at $date" + + # Set serial port parameters + if ! stty -F ${serial_device} raw cs8 -cstopb cread crtscts \ + ispeed ${baudrate} ospeed ${baudrate} \ + > /dev/null 2> /dev/null ; then + fatal "Serial port couldn't be configured" + fi + + # Flush serial port + cat ${serial_device} > /dev/null & + serial_pid=$! + sleep 1s + kill ${serial_pid} + + # Capture serial port + cat ${serial_device} > $logfile & + serial_pid=$! + + cat > "${scriptfile}" < "${gdblogfile}" 2>&1 & + gdb_pid=$! + { + time_run=0 + while [ $time_run -lt $max_run_time ] ; do + sleep 10s + if kill -0 $gdb_pid 2> /dev/null ; then + time_run=$((time_run+10)) ; + else + exit 0 + fi + done + kill -2 $serial_pid 2> /dev/null + kill -2 $gdb_pid 2> /dev/null + { + sleep 5s ; + if kill -0 $gdb_pid 2> /dev/null ; then + kill -9 $gdb_pid 2> /dev/null ; + fi + if kill -0 $serial_pid 2> /dev/null ; then + kill -9 $serial_pid 2> /dev/null ; + fi + } & + } & + wait $gdb_pid + gdb_status=$? + { + if kill -0 $serial_pid 2> /dev/null ; then + kill $serial_pid 2> /dev/null ; + fi + sleep 5s ; + if kill -0 $serial_pid 2> /dev/null ; then + kill -9 $serial_pid 2> /dev/null ; + fi + } & + if [ $gdb_status -ge 128 ] ; then + ran_too_long="yes" ; + else + ran_too_long="no" + fi + if [ $gdb_status -ne 0 ] ; then + test_failed="yes" ; + else + test_failed="no" + fi + gdb_pid="" + serial_pid="" + fi + + # Create the info files + { + echo "$date" + echo "Test run on: `uname -n`" + echo "Host Information:" + echo `uname -a` + echo + echo "Serial port: ${serial_device}" + echo "Baud rate: ${baudrate}" + echo "BDM port: ${bdm_device}" + echo "gdb: `type -path ${gdbprog}`" + + cat ${logfile} + + if [ "$test_failed" = "yes" ] ; then + echo -e "\\n\\nTest did not finish normally" + if [ "$ran_too_long" = "yes" ] ; then + echo "Test killed after $max_run_time seconds" + fi + fi + + echo + date; + } > ${infofile} + if [ "${debugging}" = "no" ] ; then + rm -f ${scriptfile} + rm -f ${gdblogfile} + fi +done + +echo "Tests completed at " `date` +test_exit 0 -- cgit v1.2.3