From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id A0E5D1381FA for ; Mon, 31 Dec 2012 01:18:21 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id C9170E031D; Mon, 31 Dec 2012 01:18:13 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 48220E031D for ; Mon, 31 Dec 2012 01:18:13 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 435EB33D7A7 for ; Mon, 31 Dec 2012 01:18:12 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id D1C97E543D for ; Mon, 31 Dec 2012 01:18:10 +0000 (UTC) From: "Mike Frysinger" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Frysinger" Message-ID: <1356916745.fdeeafe1f410a94c5bca1b245e3c4c39b7518ada.vapier@gentoo> Subject: [gentoo-commits] proj/gcc-config:master commit in: tests/ X-VCS-Repository: proj/gcc-config X-VCS-Files: tests/run_tests X-VCS-Directories: tests/ X-VCS-Committer: vapier X-VCS-Committer-Name: Mike Frysinger X-VCS-Revision: fdeeafe1f410a94c5bca1b245e3c4c39b7518ada X-VCS-Branch: master Date: Mon, 31 Dec 2012 01:18:10 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 3c4e18de-56ab-4411-856f-5473d378838b X-Archives-Hash: a1c3cb009c9643cc43a2a3818ceea0e0 commit: fdeeafe1f410a94c5bca1b245e3c4c39b7518ada Author: Mike Frysinger gentoo org> AuthorDate: Mon Dec 31 00:35:20 2012 +0000 Commit: Mike Frysinger gentoo org> CommitDate: Mon Dec 31 01:19:05 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gcc-config.git;a=commit;h=fdeeafe1 tests: run in parallel Signed-off-by: Mike Frysinger gentoo.org> --- tests/run_tests | 60 +++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 41 insertions(+), 19 deletions(-) diff --git a/tests/run_tests b/tests/run_tests index caca986..b0a45c0 100755 --- a/tests/run_tests +++ b/tests/run_tests @@ -3,20 +3,20 @@ # Avoid bash localization of error messages export LC_ALL=C -if ! . /etc/init.d/functions.sh 2>/dev/null ; then - ebegin() { printf '%s ... ' "$*" ; } - eend() { - local r=${1:-0} - shift - if [[ $r -eq 0 ]] ; then - echo "[ ok ]" - else - echo "$* [ !! ]" - fi - return $r - } - die() { echo "$*"; exit 1; } -fi +. /etc/init.d/functions.sh 2>/dev/null +ebegin() { printf '%s*%s %s ... ' "${GOOD}" "${NORMAL}" "$*" ; } +eend() { + local r=${1:-0} + shift + if [[ $r -eq 0 ]] ; then + printf '[ %sok%s ]\n' "${GOOD}" "${NORMAL}" + else + printf '%s [ %s!!%s ]\n' "$*" "${BAD}" "${NORMAL}" + fi + return $r +} +die() { echo "$*" 1>&2; exit 1; } +eval $(eval_ecolors) vars=( CHOST GCC_CONFIG ROOT TROOT NOCOLOR RC_NOCOLOR ) unset ${vars[@]} @@ -38,7 +38,7 @@ CHOST="x86_64-pc-linux-gnu" cmp_log() { local ret log=$1 exp=$2 local v args=() - for v in ${vars[@]} ; do + for v in "${vars[@]}" ; do args+=( -e "s:@${v}@:${!v}:g" ) done args+=( -e "s|: line [0-9]*: |: |g" ) @@ -50,20 +50,25 @@ cmp_log() { return ${ret} } -rm -f */*.log* +rm -f */*.log* */*.runit rm -rf TMP-*-rw-* if [[ $# -eq 0 ]] ; then set -- */test* else - set -- ${@/%//test*} - set -- ${@//\/\///} + set -- "${@/%//test*}" + set -- "${@//\/\///}" fi +max_jobs=$(getconf _NPROCESSORS_ONLN) +jobs=() tret=0 for t in "$@" ; do [[ ${t} == *.exp ]] && continue + ( + out=$( + ( ebegin "Running ${t}" test=${t##*/} @@ -75,7 +80,7 @@ for t in "$@" ; do ROOT=${TROOT}/${tdir} - r="${ROOT}/runit" + r="${ROOT}/${test}.runit" cat <<-EOF > "${r}" #!/bin/bash cd "${ROOT}" @@ -101,5 +106,22 @@ for t in "$@" ; do else : $(( tret += $? )) fi + + ) 2>&1 + ) + echo "${out}" + ) & + + # Run all the tests in parallel. + jobs+=( $! ) + if [[ ${#jobs[@]} -ge ${max_jobs} ]] ; then + wait ${jobs[0]} + : $(( tret += $? )) + jobs=( ${jobs[@]:1} ) + fi +done +for j in ${jobs[@]} ; do + wait ${j} + : $(( tret += $? )) done exit ${tret}