Gentoo Archives: gentoo-commits

From: Mike Frysinger <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gcc-config:master commit in: tests/
Date: Mon, 31 Dec 2012 01:18:21
Message-Id: 1356916745.fdeeafe1f410a94c5bca1b245e3c4c39b7518ada.vapier@gentoo
1 commit: fdeeafe1f410a94c5bca1b245e3c4c39b7518ada
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 01:19:05 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gcc-config.git;a=commit;h=fdeeafe1
7
8 tests: run in parallel
9
10 Signed-off-by: Mike Frysinger <vapier <AT> gentoo.org>
11
12 ---
13 tests/run_tests | 60 +++++++++++++++++++++++++++++++++++++-----------------
14 1 files changed, 41 insertions(+), 19 deletions(-)
15
16 diff --git a/tests/run_tests b/tests/run_tests
17 index caca986..b0a45c0 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 @@ -50,20 +50,25 @@ cmp_log() {
65 return ${ret}
66 }
67
68 -rm -f */*.log*
69 +rm -f */*.log* */*.runit
70 rm -rf TMP-*-rw-*
71
72 if [[ $# -eq 0 ]] ; then
73 set -- */test*
74 else
75 - set -- ${@/%//test*}
76 - set -- ${@//\/\///}
77 + set -- "${@/%//test*}"
78 + set -- "${@//\/\///}"
79 fi
80
81 +max_jobs=$(getconf _NPROCESSORS_ONLN)
82 +jobs=()
83 tret=0
84 for t in "$@" ; do
85 [[ ${t} == *.exp ]] && continue
86
87 + (
88 + out=$(
89 + (
90 ebegin "Running ${t}"
91
92 test=${t##*/}
93 @@ -75,7 +80,7 @@ for t in "$@" ; do
94
95 ROOT=${TROOT}/${tdir}
96
97 - r="${ROOT}/runit"
98 + r="${ROOT}/${test}.runit"
99 cat <<-EOF > "${r}"
100 #!/bin/bash
101 cd "${ROOT}"
102 @@ -101,5 +106,22 @@ for t in "$@" ; do
103 else
104 : $(( tret += $? ))
105 fi
106 +
107 + ) 2>&1
108 + )
109 + echo "${out}"
110 + ) &
111 +
112 + # Run all the tests in parallel.
113 + jobs+=( $! )
114 + if [[ ${#jobs[@]} -ge ${max_jobs} ]] ; then
115 + wait ${jobs[0]}
116 + : $(( tret += $? ))
117 + jobs=( ${jobs[@]:1} )
118 + fi
119 +done
120 +for j in ${jobs[@]} ; do
121 + wait ${j}
122 + : $(( tret += $? ))
123 done
124 exit ${tret}