Skip to content

Commit cfb609b

Browse files
author
Bryan C. Mills
committed
cmd/go: ensure that the test subprocess always times out in TestScript/test_write_profiles_on_timeout
This test verifies the behavior of a test that fails due to timing out. However, the test to be timed out was only sleeping for 1s before returning successfully. That is empirically not always long enough for the test process itself to detect the timeout and terminate. We could replace the sleep with a select{}, but that would assume that the deadlock detector does not terminate a test that reaches that state (true today, but not necessarily so). We could replace the arbitrarily sleep with an arbitrarily longer sleep, but that's, well, arbitrary. Instead, have the test sleep in an unbounded loop to ensure that it always continues to run until the timeout is detected, and check the test output to ensure that it actually reached the timeout path. Fixes #32983 Change-Id: Ie7f210b36ef0cc0a4db473f780e15a3d6def8bda Reviewed-on: https://go-review.googlesource.com/c/go/+/289889 Trust: Bryan C. Mills <[email protected]> Run-TryBot: Bryan C. Mills <[email protected]> TryBot-Result: Go Bot <[email protected]> Reviewed-by: Jay Conrod <[email protected]>
1 parent 9c54f87 commit cfb609b

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/cmd/go/testdata/script/test_write_profiles_on_timeout.txt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
[short] skip
44

55
! go test -cpuprofile cpu.pprof -memprofile mem.pprof -timeout 1ms
6+
stdout '^panic: test timed out'
67
grep . cpu.pprof
78
grep . mem.pprof
89

@@ -12,6 +13,14 @@ module profiling
1213
go 1.16
1314
-- timeout_test.go --
1415
package timeouttest_test
15-
import "testing"
16-
import "time"
17-
func TestSleep(t *testing.T) { time.Sleep(time.Second) }
16+
17+
import (
18+
"testing"
19+
"time"
20+
)
21+
22+
func TestSleep(t *testing.T) {
23+
for {
24+
time.Sleep(1 * time.Second)
25+
}
26+
}

0 commit comments

Comments
 (0)