This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] sim: bfin: tweak run-tests for parallel usage
- From: Mike Frysinger <vapier at gentoo dot org>
- To: gdb-patches at sourceware dot org
- Date: Mon, 17 Jun 2013 00:58:44 -0400
- Subject: [PATCH] sim: bfin: tweak run-tests for parallel usage
Update the hacky script to support running in parallel for faster
turn around.
Committed.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-06-17 Mike Frysinger <vapier@gentoo.org>
* run-tests.sh: Add support for running in parallel.
---
sim/testsuite/sim/bfin/run-tests.sh | 36 ++++++++++++++++++++++++++++++------
1 file changed, 30 insertions(+), 6 deletions(-)
mode change 100644 => 100755 sim/testsuite/sim/bfin/run-tests.sh
diff --git a/sim/testsuite/sim/bfin/run-tests.sh b/sim/testsuite/sim/bfin/run-tests.sh
old mode 100644
new mode 100755
index 2b6181b..34a490c
--- a/sim/testsuite/sim/bfin/run-tests.sh
+++ b/sim/testsuite/sim/bfin/run-tests.sh
@@ -10,6 +10,7 @@ usage() {
-rs Run on simulator
-rj <board> Run on board via JTAG
-rh <ip> Run on board ip
+ -j <num> Num jobs to run
EOF
exit ${0:-1}
}
@@ -20,11 +21,14 @@ boardjtag=
run_sim=false
run_jtag=false
run_host=false
+jobs=`getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`
+: $(( jobs += 1 ))
while [ -n "$1" ] ; do
case $1 in
-rs) run_sim=true;;
-rj) boardjtag=$2; shift; run_jtag=true;;
-rh) boardip=$2; shift; run_host=true;;
+ -j) jobs=$2; shift;;
-*) usage;;
*) break;;
esac
@@ -36,6 +40,8 @@ if ${run_host} && [ -z "${boardip}" ] ; then
usage
fi
+cd "${0%/*}" || exit 1
+
dorsh() {
# rsh sucks and does not pass up its exit status, so we have to:
# on board:
@@ -85,7 +91,6 @@ dojtag() {
}
testit() {
-
local name=$1 x=$2 y=`echo $2 | sed 's:\.[xX]$::'` out rsh_out addr
shift; shift
local fail=`grep xfail ${y}`
@@ -145,8 +150,7 @@ pf() {
[ $# -eq 0 ] && set -- *.[Ss]
bins_hw=$( (${run_sim} || ${run_jtag}) && printf '%s.x ' "$@")
if ${run_host} ; then
- for files in $@
- do
+ for files in "$@" ; do
tmp=`grep -e CYCLES -e TESTSET -e CLI -e STI -e RTX -e RTI -e SEQSTAT $files -l`
if [ -z "${tmp}" ] ; then
bins_host=`echo "${bins_host} ${files}.X"`
@@ -194,20 +198,41 @@ if ${run_host} ; then
rsh -l root $boardip '/bin/dmesg -c' > /dev/null
fi
+SIM="../../../bfin/run"
+if [ ! -x ${SIM} ] ; then
+ SIM="bfin-elf-run"
+fi
+echo "Using sim: ${SIM}"
+
ret=0
unexpected_fail=0
unexpected_pass=0
expected_pass=0
+pids=()
for s in "$@" ; do
- ${run_sim} && testit SIM ${s}.x bfin-elf-run `sed -n '/^# sim:/s|^[^:]*:||p' ${s}`
+ (
+ out=$(
+ ${run_sim} && testit SIM ${s}.x ${SIM} `sed -n '/^# sim:/s|^[^:]*:||p' ${s}`
${run_jtag} && testit JTAG ${s}.x dojtag
${run_host} && testit HOST ${s}.X dorsh
+ )
+ case $out in
+ *PASS*) ;;
+ *) echo "$out" ;;
+ esac
+ ) &
+ pids+=( $! )
+ if [[ ${#pids[@]} -gt ${jobs} ]] ; then
+ wait ${pids[0]}
+ pids=( ${pids[@]:1} )
+ fi
done
+wait
killall -q bfin-gdbproxy
if [ ${ret} -eq 0 ] ; then
rm -f gdbproxy.log
- ${MAKE} -s clean &
+# ${MAKE} -s clean &
exit 0
else
echo number of failures ${ret}
@@ -222,4 +247,3 @@ else
fi
exit 1
fi
-
--
1.8.2.1