This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]