aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/race/testdata
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2016-05-09 15:11:24 +0200
committerDmitry Vyukov <dvyukov@google.com>2016-05-09 14:50:18 +0000
commitaeecee8ce4cf1821dcb6b5e37e20f40696278498 (patch)
treef6ac8ea9c01a766572cf9f68579d10d87072d852 /src/runtime/race/testdata
parent87a2ae1fa25677dc9097a25292c54b7b9dac2c9d (diff)
downloadgo-aeecee8ce4cf1821dcb6b5e37e20f40696278498.tar.xz
runtime/race: deflake test
The test sometimes fails on builders. The test uses sleeps to establish the necessary goroutine execution order. If sleeps undersleep/oversleep the race is still reported, but it can be reported when the main test goroutine returns. In such case test driver can't match the race with the test and reports failure. Wait for both test goroutines to ensure that the race is reported in the test scope. Fixes #15579 Change-Id: I0b9bec0ebfb0c127d83eb5325a7fe19ef9545050 Reviewed-on: https://go-review.googlesource.com/22951 Run-TryBot: Dmitry Vyukov <dvyukov@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/runtime/race/testdata')
-rw-r--r--src/runtime/race/testdata/chan_test.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/runtime/race/testdata/chan_test.go b/src/runtime/race/testdata/chan_test.go
index cddd9a6e78..449191639e 100644
--- a/src/runtime/race/testdata/chan_test.go
+++ b/src/runtime/race/testdata/chan_test.go
@@ -285,17 +285,20 @@ func TestRaceChanWrongClose(t *testing.T) {
v1 := 0
v2 := 0
c := make(chan int, 1)
+ done := make(chan bool)
go func() {
defer func() {
recover()
}()
v1 = 1
c <- 1
+ done <- true
}()
go func() {
time.Sleep(1e7)
v2 = 2
close(c)
+ done <- true
}()
time.Sleep(2e7)
if _, who := <-c; who {
@@ -303,6 +306,8 @@ func TestRaceChanWrongClose(t *testing.T) {
} else {
v1 = 2
}
+ <-done
+ <-done
}
func TestRaceChanSendClose(t *testing.T) {