From: ian Date: Thu, 31 Mar 2011 22:36:10 +0000 (+0000) Subject: PR go/48242 X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=aa686d7d15e611777da1bd513614aebfbfcdeb61 PR go/48242 libgo: Add timeout for tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171803 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libgo/go/testing/testing.go b/libgo/go/testing/testing.go index d1893907a56..6d303cc6f2c 100644 --- a/libgo/go/testing/testing.go +++ b/libgo/go/testing/testing.go @@ -61,6 +61,7 @@ var ( memProfile = flag.String("test.memprofile", "", "write a memory profile to the named file after execution") memProfileRate = flag.Int("test.memprofilerate", 0, "if >=0, sets runtime.MemProfileRate") cpuProfile = flag.String("test.cpuprofile", "", "write a cpu profile to the named file during execution") + timeout = flag.Int64("test.timeout", 0, "if > 0, sets time limit for tests in seconds") ) // Short reports whether the -test.short flag is set. @@ -158,7 +159,9 @@ func Main(matchString func(pat, str string) (bool, os.Error), tests []InternalTe flag.Parse() before() + startAlarm() RunTests(matchString, tests) + stopAlarm() RunBenchmarks(matchString, benchmarks) after() } @@ -241,3 +244,24 @@ func after() { f.Close() } } + +var timer *time.Timer + +// startAlarm starts an alarm if requested. +func startAlarm() { + if *timeout > 0 { + timer = time.AfterFunc(*timeout*1e9, alarm) + } +} + +// stopAlarm turns off the alarm. +func stopAlarm() { + if *timeout > 0 { + timer.Stop() + } +} + +// alarm is called if the timeout expires. +func alarm() { + panic("test timed out") +} diff --git a/libgo/testsuite/gotest b/libgo/testsuite/gotest index bcd725136b9..517c0e9f23e 100755 --- a/libgo/testsuite/gotest +++ b/libgo/testsuite/gotest @@ -32,6 +32,7 @@ loop=true keep=false prefix= dejagnu=no +timeout=60 while $loop; do case "x$1" in x--srcdir) @@ -83,6 +84,15 @@ while $loop; do dejagnu=`echo $1 | sed -e 's/^--dejagnu=//'` shift ;; + x--timeout) + timeout=$2 + shift + shift + ;; + x--timeout=*) + timeout=`echo $1 | sed -e 's/^--timeout=//'` + shift + ;; x-*) loop=false ;; @@ -357,7 +367,7 @@ case "x$dejagnu" in xno) ${GC} -g -c _testmain.go ${GL} *.o ${GOLIBS} - ./a.out -test.short "$@" + ./a.out -test.short -test.timeout=$timeout "$@" ;; xyes) rm -rf ../testsuite/*.o