⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runtest

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻
字号:
#!/bin/sh -p## Run rtems tests on the powerpc 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##  COPYRIGHT (c) 1989-1999.#  On-Line Applications Research Corporation (OAR).##  The license and distribution terms for this file may be#  found in found in the file LICENSE in this distribution or at#  http://www.rtems.com/license/LICENSE.##  $Id: runtest,v 1.2.6.2 2003/09/04 18:44:49 joel Exp $## progname=`basename $0`progname=${0##*/}        # fast basename hack for ksh, bashUSAGE=\"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 everythingset -a#   log an error to stderrprerr(){    echo "$*" >&2}fatal() {    [ "$1" ] && prerr $*    prerr "$USAGE"    exit 1}warn() {    [ "$1" ] && prerr $*}# print args, 1 per lineml_echo(){    for l    do       echo "$l"    done}# run at normal and signalled exittest_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=logupdate_on_tick="no"max_run_time=$((5 * 60))using_print_buffer="yes"simulator=mipstx39-rtems-run while getopts vdl:o:s: OPTdo    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";;        s)            simulator="$OPTARG";;        *)            fatal;;    esacdonelet $((shiftcount = $OPTIND - 1))shift $shiftcountargs=$*##  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 gotrap "test_exit" 1 2 3 13 14 15for tfile in $testsdo   tname=`basename $tfile .exe`   cpus="1"   TEST_TYPE="single"   case $tname in       # size is no longer interactive.       monitor* | termios* | fileio*)            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"           variant=`echo $tname | sed 's/.*-node[12]//' | sed 's/\.exe//'`           tname=`echo $tname | sed 's/-node.*//'`           TEST_TYPE="mp"           ;;       minimum*|stackchk*|spfatal*|termio*)           continue           ;;   esac   if [ $TEST_TYPE = "mp" ]   then       cpus="1 2"       logfile1=$logdir/${tname}_1${variant}       logfile2=$logdir/${tname}_2${variant}       infofile1=$logfile1.info       infofile2=$logfile2.info       rm -f ${logfile1} ${logfile2}       date=`date`       echo "Starting $tname at $date"       ${simulator} --board=jmr3904 ${tname}-node1${variant}.exe | \         sed -e 's/
//' -e '/^$/d' > ${logfile1} &       ${simulator} --board=jmr3904 ${tname}-node2${variant}.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       ${simulator} --board=jmr3904 $tfile | \         sed -e 's/
//' -e '/^$/d' > ${logfile} 2>&1 &       pid=$!       # Make sure it won't run forever...       time_run=0       while [ $time_run -lt $max_run_time ]       do           # sleep 5s at a time waiting for job to finish or timer to expire           # if job has exited, then we exit, too.           sleep 5           kill -0 $pid 2> /dev/null           running=$?           if [ $running -eq 0 ]           then               time_run=$((time_run + 5))               if [ $time_run -ge $max_run_time ]               then                   kill -9 $pid 2> /dev/null                   ran_too_long="yes"               fi           else               ran_too_long="no"               break           fi       done   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}   fidoneecho "Tests completed at " `date`test_exit 0# Local Variables: ***# mode:ksh ***# End: ***

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -