]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: ensure that the test subprocess always times out in TestScript/test_write_pro...
authorBryan C. Mills <bcmills@google.com>
Fri, 5 Feb 2021 03:46:23 +0000 (22:46 -0500)
committerBryan C. Mills <bcmills@google.com>
Thu, 4 Mar 2021 17:47:28 +0000 (17:47 +0000)
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 <bcmills@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/go/testdata/script/test_write_profiles_on_timeout.txt

index 08e67a429e0a899abc7c1db925d2dcbc3dc27bc4..0db183f8f04f33aae08a9c4573f5472e099adef7 100644 (file)
@@ -3,6 +3,7 @@
 [short] skip
 
 ! go test -cpuprofile cpu.pprof -memprofile mem.pprof -timeout 1ms
+stdout '^panic: test timed out'
 grep . cpu.pprof
 grep . mem.pprof
 
@@ -12,6 +13,14 @@ module profiling
 go 1.16
 -- timeout_test.go --
 package timeouttest_test
-import "testing"
-import "time"
-func TestSleep(t *testing.T) { time.Sleep(time.Second) }
+
+import (
+       "testing"
+       "time"
+)
+
+func TestSleep(t *testing.T) {
+       for {
+               time.Sleep(1 * time.Second)
+       }
+}