source: rtems/c/src/lib/libbsp/powerpc/psim/tools/runtest @ efea3af

4.104.114.9
Last change on this file since efea3af was efea3af, checked in by Joel Sherrill <joel.sherrill@…>, on Aug 5, 2008 at 1:29:43 PM

2008-08-05 Joel Sherrill <joel.sherrill@…>

  • runtest: Strip .exe or .ralf from file names.
  • Property mode set to 100755
File size: 6.5 KB
Line 
1#!/bin/sh -p
2#
3# Run rtems tests on the powerpc simulator
4# This program generates a simulator script to run each test
5# Typically the test is then run, although it can be generated
6# and left as a file using -s
7#
8#  COPYRIGHT (c) 1989-1999.
9#  On-Line Applications Research Corporation (OAR).
10#
11#  The license and distribution terms for this file may be
12#  found in found in the file LICENSE in this distribution or at
13#  http://www.rtems.com/license/LICENSE.
14#
15#  $Id$
16#
17
18# progname=`basename $0`
19progname=${0##*/}        # fast basename hack for ksh, bash
20
21USAGE=\
22"usage: $progname [ -opts ] test [ test ... ]
23        -o options  -- specify options to be passed to simulator
24        -v          -- verbose
25        -d          -- generate device tree file (as 'test'.device) and exit
26        -l logdir   -- specify log directory (default is 'logdir')
27
28  Specify test as 'test' or 'test.exe'.
29  All multiprocessing tests *must* be specified simply as 'mp01', etc.
30"
31
32# export everything
33set -a
34
35#   log an error to stderr
36prerr()
37{
38    echo "$*" >&2
39}
40
41fatal() {
42    [ "$1" ] && prerr $*
43    prerr "$USAGE"
44    exit 1
45}
46
47warn() {
48    [ "$1" ] && prerr $*
49}
50
51# print args, 1 per line
52ml_echo()
53{
54    for l
55    do
56       echo "$l"
57    done
58}
59
60# run at normal and signalled exit
61test_exit()
62{
63    exit_code=$1
64
65    rm -f ${logfile}.tmp*
66    [ "$sim_pid" ] && kill -9 $sim_pid
67
68    exit $exit_code
69}
70
71#
72# process the options
73#
74# defaults for getopt vars
75#
76# max_run_time is defaulted to 5 minutes
77#
78
79verbose=""
80extra_options=""
81device_and_exit=""
82stdio_setup="yes"
83run_to_completion="yes"
84logdir=log
85update_on_tick="no"
86max_run_time=$((5 * 60))
87using_print_buffer="yes"
88#simulator=/usr1/rtems/work/ada/4.00/ppc_src/b-gdb/sim/ppc/run
89simulator=powerpc-rtems4.9-run
90instruction_limit=1000000000
91sizeof_ram=8388608
92
93while getopts vdl:o:s: OPT
94do
95    case "$OPT" in
96        v)
97            verbose="yes";;
98        d)
99            device_and_exit="yes"
100            run_to_completion="no"
101            stdio_setup="no";;
102        l)
103            logdir="$OPTARG";;
104        o)
105            extra_options="$OPTARG";;
106        r)
107            sizeof_ram="$OPTARG";;
108        s)
109            simulator="$OPTARG";;
110        *)
111            fatal;;
112    esac
113done
114
115let $((shiftcount = $OPTIND - 1))
116shift $shiftcount
117
118args=$*
119
120#
121#  Check some parameters
122#
123
124# JRS CHANGE
125# if [ ! -x ${simulator} ] ; then
126#    fatal "${simulator} is not executable"
127# fi;
128
129#
130# Run the tests
131#
132
133tests="$args"
134if [ ! "$tests" ]
135then
136     set -- `echo *.exe`
137     tests="$*"
138fi
139
140[ -d $logdir ] ||
141  mkdir $logdir || fatal "could not create log directory ($logdir)"
142
143# where the tmp files go
144trap "test_exit" 1 2 3 13 14 15
145
146for tfile in $tests
147do
148
149   tname=`basename $tfile .exe`
150   tname=`basename $tname .ralf`
151   cpus="1"
152   TEST_TYPE="single"
153
154   case $tname in
155       # size is no longer interactive.
156       capture* | monitor* | termios* | fileio* | pppd*)
157            if [ $run_to_completion = "yes" ]
158            then
159                 warn "Skipping $tname; it is interactive"
160                 continue
161            fi
162            ;;
163       *-node2*)
164           warn "Skipping $tname; 'runtest' runs both nodes when for *-node1"
165           continue;;
166       *-node1*)
167           warn "Running both nodes associated with $tname"
168           variant=`echo $tname | sed 's/.*-node[12]//' | sed 's/\.exe//'`
169           tname=`echo $tname | sed 's/-node.*//'`
170           TEST_TYPE="mp"
171           ;;
172       minimum*|stackchk*|*fatal*|termio*)
173           continue           ;;
174   esac
175
176   if [ $TEST_TYPE = "mp" ]
177   then
178       cpus="1 2"
179
180       logfile1=$logdir/${tname}_1${variant}
181       logfile2=$logdir/${tname}_2${variant}
182       infofile1=$logfile1.info
183       infofile2=$logfile2.info
184
185       rm -f ${logfile1} ${logfile2}
186
187       date=`date`
188       echo "Starting $tname at $date"
189
190       ${simulator} $extra_options -c ${instruction_limit} \
191           -o "/#address-cells 2" \
192           -o "/openprom/options/oea-memory-size ${sizeof_ram}" \
193           -o "/openprom/init/register/pvr 0xfffe0000" \
194           -o "/shm@0xc0000000/reg 0xc0000000 0x10000" \
195           -o "/shm@0xc0000000/key 0x1234" \
196           -o "/sem@0xc0010000/reg 0xc0010000 12" \
197           -o "/sem@0xc0010000/key 0x1234" \
198           -o "/sem@0xc0010000/value 1" ${tname}-node1${variant}.exe | \
199         sed -e 's/
200//' -e '/^$/d' > ${logfile1} &
201
202       ${simulator} $extra_options -c ${instruction_limit} \
203           -o "/#address-cells 2" \
204           -o "/openprom/options/oea-memory-size ${sizeof_ram}" \
205           -o "/openprom/init/register/pvr 0xfffe0000" \
206           -o "/shm@0xc0000000/reg 0xc0000000 0x10000" \
207           -o "/shm@0xc0000000/key 0x1234" \
208           -o "/sem@0xc0010000/reg 0xc0010000 12" \
209           -o "/sem@0xc0010000/key 0x1234" \
210           -o "/sem@0xc0010000/value -1" ${tname}-node2${variant}.exe | \
211         sed -e 's/
212//' -e '/^$/d' > ${logfile2} &
213
214       wait
215
216   fi
217
218   if [ $TEST_TYPE = "single" ]
219   then
220     logfile=$logdir/${tname}_1
221     infofile=$logfile.info
222
223     rm -f ${logfile}.tmp*
224
225     date=`date`
226     echo "Starting $tname at $date"
227
228     # Generate a device file to get the work done.
229     # The device file must do the following:
230     #
231     #       arrange for more memory (2 Mb)
232
233     if [ "$device_and_exit" = "yes" ]
234     then
235          fatal "Cannot currently generate device files"
236     fi
237
238     # Spin off the simulator in the background
239     #   -c sets an instruction limit
240
241     # Don't need to make sure it won't run forever... since there is
242     # an instruction count limit
243
244     #powerpc-rtems-run $extra_options -c ${instruction_limit} \
245     #     -f ${devicefile} $tfile | sed -e 's/
246//' -e '/^$/d' > ${logfile}
247
248     ${simulator} $extra_options -c ${instruction_limit} \
249           -o "/#address-cells 2" \
250           -o "/openprom/options/oea-memory-size ${sizeof_ram}" \
251           -o "/openprom/init/register/pvr 0xfffe0000" \
252           $tfile | sed -e 's/
253//' -e '/^$/d' > ${logfile}
254   fi
255
256   # Create the info files
257   for cpu in $cpus
258   do
259   {
260       echo "$date"
261       echo "Test run on: `uname -n`"
262       echo "Host Information:"
263       echo `uname -a`
264       echo
265
266       #sed -e 's/
267//' < ${logdir}/${tname}_${cpu}
268       cat ${logdir}/${tname}_${cpu}
269
270       if [ "$ran_too_long" = "yes" ]
271       then
272           echo "Test did NOT finish normally; killed after $max_run_time seconds"
273       fi
274
275       echo
276       date;
277   } > ${logdir}/${tname}_${cpu}.info
278   done
279
280   if [ "$cpus" = "1" ]
281   then
282        mv ${infofile} $logdir/${tname}.info
283        mv ${logfile}  $logdir/${tname}
284   fi
285
286done
287
288echo "Tests completed at " `date`
289test_exit 0
290
291# Local Variables: ***
292# mode:ksh ***
293# End: ***
294
Note: See TracBrowser for help on using the repository browser.