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 34CB21381FA for ; Mon, 31 Dec 2012 00:34:21 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D6EC521C019; Mon, 31 Dec 2012 00:34: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 61F1D21C019 for ; Mon, 31 Dec 2012 00:34: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 50E4933C1EE for ; Mon, 31 Dec 2012 00:34:12 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id DD33FE543D for ; Mon, 31 Dec 2012 00:34: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: <1356914120.f856383b4f3dc563127bf8df83a05adb6327498f.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: f856383b4f3dc563127bf8df83a05adb6327498f X-VCS-Branch: master Date: Mon, 31 Dec 2012 00:34: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: 4122ccf5-2afc-400a-a4bf-fce1f5ee1eb5 X-Archives-Hash: 2d7bd8948dc5f9db3b8c8a31c08af585 commit: f856383b4f3dc563127bf8df83a05adb6327498f Author: Mike Frysinger gentoo org> AuthorDate: Mon Dec 31 00:35:20 2012 +0000 Commit: Mike Frysinger gentoo org> CommitDate: Mon Dec 31 00:35:20 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gcc-config.git;a=commit;h=f856383b tests: run in parallel Signed-off-by: Mike Frysinger gentoo.org> --- tests/run_tests | 58 +++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 40 insertions(+), 18 deletions(-) diff --git a/tests/run_tests b/tests/run_tests index caca986..82c8948 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" ) @@ -56,14 +56,19 @@ 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}