]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: remove arbitrary sleep in TestScript/test_chatty_parallel_success_sleepy
authorBryan C. Mills <bcmills@google.com>
Wed, 16 Feb 2022 15:01:20 +0000 (10:01 -0500)
committerBryan Mills <bcmills@google.com>
Wed, 30 Mar 2022 19:14:04 +0000 (19:14 +0000)
(Also rename it to no longer describe itself in terms of sleeping.)

This test previously relied on the scheduler to wake up a goroutine to
write the "--- PASS: TestFast" line within 100ms of TestFast actually
finishing. On some platforms, even that long a delay is apparently too
short.

Instead, we now use a deterministic "=== RUN" line instead of a
timing-dependent "--- PASS" line to interrupt the output.

Fixes #51221

Change-Id: I3997640fb7577e29e3866a82d4d49a3a70a4b033
Reviewed-on: https://go-review.googlesource.com/c/go/+/386154
Trust: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/go/testdata/script/test_chatty_parallel_success_run.txt [new file with mode: 0644]
src/cmd/go/testdata/script/test_chatty_parallel_success_sleepy.txt [deleted file]

diff --git a/src/cmd/go/testdata/script/test_chatty_parallel_success_run.txt b/src/cmd/go/testdata/script/test_chatty_parallel_success_run.txt
new file mode 100644 (file)
index 0000000..b0f4cc1
--- /dev/null
@@ -0,0 +1,41 @@
+# Run parallel chatty tests. Assert on CONT lines. This test makes sure that
+# multiple parallel outputs have the appropriate CONT lines between them.
+go test -parallel 3 chatty_parallel -v
+
+stdout '=== RUN   TestInterruptor/interruption\n=== CONT  TestLog\n    chatty_parallel_test.go:28: this is the second TestLog log\n--- PASS: TestLog \([0-9.]{4}s\)'
+
+-- go.mod --
+module chatty_parallel
+
+go 1.18
+-- chatty_parallel_test.go --
+package chatty_parallel_test
+
+import (
+       "testing"
+)
+
+var (
+       afterFirstLog = make(chan struct{})
+       afterSubTest  = make(chan struct{})
+       afterSecondLog = make(chan struct{})
+)
+
+func TestInterruptor(t *testing.T) {
+       t.Parallel()
+
+       <-afterFirstLog
+       t.Run("interruption", func (t *testing.T) {})
+       close(afterSubTest)
+       <-afterSecondLog // Delay the "PASS: TestInterruptor" line until after "CONT  TestLog".
+}
+
+func TestLog(t *testing.T) {
+       t.Parallel()
+
+       t.Logf("this is the first TestLog log")
+       close(afterFirstLog)
+       <-afterSubTest
+       t.Logf("this is the second TestLog log")
+       close(afterSecondLog)
+}
diff --git a/src/cmd/go/testdata/script/test_chatty_parallel_success_sleepy.txt b/src/cmd/go/testdata/script/test_chatty_parallel_success_sleepy.txt
deleted file mode 100644 (file)
index e651a7e..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Run parallel chatty tests. Assert on CONT lines. This test makes sure that
-# multiple parallel outputs have the appropriate CONT lines between them.
-go test -parallel 3 chatty_parallel_test.go -v
-
-stdout '--- PASS: TestFast \([0-9.]{4}s\)\n=== CONT  TestSlow\n    chatty_parallel_test.go:31: this is the second TestSlow log\n--- PASS: TestSlow \([0-9.]{4}s\)'
-
--- chatty_parallel_test.go --
-package chatty_parallel_test
-
-import (
-       "testing"
-       "time"
-)
-
-var (
-       run           = make(chan struct{})
-       afterFirstLog = make(chan struct{})
-       afterPass     = make(chan struct{})
-)
-
-func TestFast(t *testing.T) {
-       t.Parallel()
-
-       <-afterFirstLog
-       t.Cleanup(func() {
-               close(afterPass)
-       })
-}
-
-func TestSlow(t *testing.T) {
-       t.Parallel()
-
-       t.Logf("this is the first TestSlow log")
-       close(afterFirstLog)
-
-       <-afterPass
-       time.Sleep(100 * time.Millisecond)
-       t.Logf("this is the second TestSlow log")
-}