re PR go/48242 (gotest needs timeout mechanism)
PR go/48242 libgo: Add timeout for tests. From-SVN: r171803
This commit is contained in:
parent
c9103dde96
commit
4bce572db2
@ -61,6 +61,7 @@ var (
|
|||||||
memProfile = flag.String("test.memprofile", "", "write a memory profile to the named file after execution")
|
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")
|
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")
|
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.
|
// 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()
|
flag.Parse()
|
||||||
|
|
||||||
before()
|
before()
|
||||||
|
startAlarm()
|
||||||
RunTests(matchString, tests)
|
RunTests(matchString, tests)
|
||||||
|
stopAlarm()
|
||||||
RunBenchmarks(matchString, benchmarks)
|
RunBenchmarks(matchString, benchmarks)
|
||||||
after()
|
after()
|
||||||
}
|
}
|
||||||
@ -241,3 +244,24 @@ func after() {
|
|||||||
f.Close()
|
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")
|
||||||
|
}
|
||||||
|
@ -32,6 +32,7 @@ loop=true
|
|||||||
keep=false
|
keep=false
|
||||||
prefix=
|
prefix=
|
||||||
dejagnu=no
|
dejagnu=no
|
||||||
|
timeout=60
|
||||||
while $loop; do
|
while $loop; do
|
||||||
case "x$1" in
|
case "x$1" in
|
||||||
x--srcdir)
|
x--srcdir)
|
||||||
@ -83,6 +84,15 @@ while $loop; do
|
|||||||
dejagnu=`echo $1 | sed -e 's/^--dejagnu=//'`
|
dejagnu=`echo $1 | sed -e 's/^--dejagnu=//'`
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
x--timeout)
|
||||||
|
timeout=$2
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
x--timeout=*)
|
||||||
|
timeout=`echo $1 | sed -e 's/^--timeout=//'`
|
||||||
|
shift
|
||||||
|
;;
|
||||||
x-*)
|
x-*)
|
||||||
loop=false
|
loop=false
|
||||||
;;
|
;;
|
||||||
@ -357,7 +367,7 @@ case "x$dejagnu" in
|
|||||||
xno)
|
xno)
|
||||||
${GC} -g -c _testmain.go
|
${GC} -g -c _testmain.go
|
||||||
${GL} *.o ${GOLIBS}
|
${GL} *.o ${GOLIBS}
|
||||||
./a.out -test.short "$@"
|
./a.out -test.short -test.timeout=$timeout "$@"
|
||||||
;;
|
;;
|
||||||
xyes)
|
xyes)
|
||||||
rm -rf ../testsuite/*.o
|
rm -rf ../testsuite/*.o
|
||||||
|
Loading…
Reference in New Issue
Block a user