1 |
commit: f856383b4f3dc563127bf8df83a05adb6327498f |
2 |
Author: Mike Frysinger <vapier <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Dec 31 00:35:20 2012 +0000 |
4 |
Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Dec 31 00:35:20 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gcc-config.git;a=commit;h=f856383b |
7 |
|
8 |
tests: run in parallel |
9 |
|
10 |
Signed-off-by: Mike Frysinger <vapier <AT> gentoo.org> |
11 |
|
12 |
--- |
13 |
tests/run_tests | 58 +++++++++++++++++++++++++++++++++++++----------------- |
14 |
1 files changed, 40 insertions(+), 18 deletions(-) |
15 |
|
16 |
diff --git a/tests/run_tests b/tests/run_tests |
17 |
index caca986..82c8948 100755 |
18 |
--- a/tests/run_tests |
19 |
+++ b/tests/run_tests |
20 |
@@ -3,20 +3,20 @@ |
21 |
# Avoid bash localization of error messages |
22 |
export LC_ALL=C |
23 |
|
24 |
-if ! . /etc/init.d/functions.sh 2>/dev/null ; then |
25 |
- ebegin() { printf '%s ... ' "$*" ; } |
26 |
- eend() { |
27 |
- local r=${1:-0} |
28 |
- shift |
29 |
- if [[ $r -eq 0 ]] ; then |
30 |
- echo "[ ok ]" |
31 |
- else |
32 |
- echo "$* [ !! ]" |
33 |
- fi |
34 |
- return $r |
35 |
- } |
36 |
- die() { echo "$*"; exit 1; } |
37 |
-fi |
38 |
+. /etc/init.d/functions.sh 2>/dev/null |
39 |
+ebegin() { printf '%s*%s %s ... ' "${GOOD}" "${NORMAL}" "$*" ; } |
40 |
+eend() { |
41 |
+ local r=${1:-0} |
42 |
+ shift |
43 |
+ if [[ $r -eq 0 ]] ; then |
44 |
+ printf '[ %sok%s ]\n' "${GOOD}" "${NORMAL}" |
45 |
+ else |
46 |
+ printf '%s [ %s!!%s ]\n' "$*" "${BAD}" "${NORMAL}" |
47 |
+ fi |
48 |
+ return $r |
49 |
+} |
50 |
+die() { echo "$*" 1>&2; exit 1; } |
51 |
+eval $(eval_ecolors) |
52 |
|
53 |
vars=( CHOST GCC_CONFIG ROOT TROOT NOCOLOR RC_NOCOLOR ) |
54 |
unset ${vars[@]} |
55 |
@@ -38,7 +38,7 @@ CHOST="x86_64-pc-linux-gnu" |
56 |
cmp_log() { |
57 |
local ret log=$1 exp=$2 |
58 |
local v args=() |
59 |
- for v in ${vars[@]} ; do |
60 |
+ for v in "${vars[@]}" ; do |
61 |
args+=( -e "s:@${v}@:${!v}:g" ) |
62 |
done |
63 |
args+=( -e "s|: line [0-9]*: |: |g" ) |
64 |
@@ -56,14 +56,19 @@ rm -rf TMP-*-rw-* |
65 |
if [[ $# -eq 0 ]] ; then |
66 |
set -- */test* |
67 |
else |
68 |
- set -- ${@/%//test*} |
69 |
- set -- ${@//\/\///} |
70 |
+ set -- "${@/%//test*}" |
71 |
+ set -- "${@//\/\///}" |
72 |
fi |
73 |
|
74 |
+max_jobs=$(getconf _NPROCESSORS_ONLN) |
75 |
+jobs=() |
76 |
tret=0 |
77 |
for t in "$@" ; do |
78 |
[[ ${t} == *.exp ]] && continue |
79 |
|
80 |
+ ( |
81 |
+ out=$( |
82 |
+ ( |
83 |
ebegin "Running ${t}" |
84 |
|
85 |
test=${t##*/} |
86 |
@@ -75,7 +80,7 @@ for t in "$@" ; do |
87 |
|
88 |
ROOT=${TROOT}/${tdir} |
89 |
|
90 |
- r="${ROOT}/runit" |
91 |
+ r="${ROOT}/${test}.runit" |
92 |
cat <<-EOF > "${r}" |
93 |
#!/bin/bash |
94 |
cd "${ROOT}" |
95 |
@@ -101,5 +106,22 @@ for t in "$@" ; do |
96 |
else |
97 |
: $(( tret += $? )) |
98 |
fi |
99 |
+ |
100 |
+ ) 2>&1 |
101 |
+ ) |
102 |
+ echo "${out}" |
103 |
+ ) & |
104 |
+ |
105 |
+ # Run all the tests in parallel. |
106 |
+ jobs+=( $! ) |
107 |
+ if [[ ${#jobs[@]} -ge ${max_jobs} ]] ; then |
108 |
+ wait ${jobs[0]} |
109 |
+ : $(( tret += $? )) |
110 |
+ jobs=( ${jobs[@]:1} ) |
111 |
+ fi |
112 |
+done |
113 |
+for j in ${jobs[@]} ; do |
114 |
+ wait ${j} |
115 |
+ : $(( tret += $? )) |
116 |
done |
117 |
exit ${tret} |