mirror of
https://github.com/golang/go
synced 2024-11-24 10:20:01 -07:00
cmd/go: remove arbitrary sleep in TestScript/test_chatty_parallel_success_sleepy
(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>
This commit is contained in:
parent
ca1e509552
commit
1ac1658642
41
src/cmd/go/testdata/script/test_chatty_parallel_success_run.txt
vendored
Normal file
41
src/cmd/go/testdata/script/test_chatty_parallel_success_run.txt
vendored
Normal file
@ -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)
|
||||||
|
}
|
@ -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")
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user