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 00:34:21
Message-Id: 1356914120.f856383b4f3dc563127bf8df83a05adb6327498f.vapier@gentoo
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}