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

📄 runtest.in

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 IN
字号:
#!@KSH@ -p##  $Id: runtest.in,v 1.1.2.1 2005/10/05 19:25:45 joel Exp $## 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, bashUSAGE=\"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 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 ${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=logupdate_on_tick="no"max_run_time=$((5 * 60))using_print_buffer="yes"while getopts vhr12o:c:sl:t OPTdo    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;;    esacdonelet $((shiftcount = $OPTIND - 1))shift $shiftcountargs=$*## 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 gostatfile=/tmp/stats$$scriptfile=/tmp/script$$trap "test_exit" 1 2 3 13 14 15for tfile in $testsdo   tname=`basename $tfile .exe`   TEST_TYPE="single"   case $tname in       monitor* | termios* | fileio*)           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}   fidonetest_exit 0# Local Variables: ***# mode:ksh ***# End: ***

⌨️ 快捷键说明

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