diff options
author | Dmitriy Vyukov <dvyukov@google.com> | 2012-01-26 11:37:07 +0400 |
---|---|---|
committer | Dmitriy Vyukov <dvyukov@google.com> | 2012-01-26 11:37:07 +0400 |
commit | fa32b1641312f46b57ed8dbfdc83e0f726334a6a (patch) | |
tree | 72f50df2d90972fed77eef46c0f2a85c702ce13f | |
parent | 7c9ee5f3696290804a2d192121f1da1fae1b3b8f (diff) | |
download | go-fa32b1641312f46b57ed8dbfdc83e0f726334a6a.tar.gz go-fa32b1641312f46b57ed8dbfdc83e0f726334a6a.zip |
net/rpc: fix race in TestClientWriteError test
Fixes #2752.
R=golang-dev, mpimenov, r
CC=golang-dev
https://golang.org/cl/5571062
-rw-r--r-- | src/pkg/net/rpc/server_test.go | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/pkg/net/rpc/server_test.go b/src/pkg/net/rpc/server_test.go index ae688c0f8c..7536c6dd6f 100644 --- a/src/pkg/net/rpc/server_test.go +++ b/src/pkg/net/rpc/server_test.go @@ -467,13 +467,16 @@ func TestCountMallocsOverHTTP(t *testing.T) { fmt.Printf("mallocs per HTTP rpc round trip: %d\n", countMallocs(dialHTTP, t)) } -type writeCrasher struct{} +type writeCrasher struct { + done chan bool +} func (writeCrasher) Close() error { return nil } -func (writeCrasher) Read(p []byte) (int, error) { +func (w *writeCrasher) Read(p []byte) (int, error) { + <-w.done return 0, io.EOF } @@ -482,7 +485,8 @@ func (writeCrasher) Write(p []byte) (int, error) { } func TestClientWriteError(t *testing.T) { - c := NewClient(writeCrasher{}) + w := &writeCrasher{done: make(chan bool)} + c := NewClient(w) res := false err := c.Call("foo", 1, &res) if err == nil { @@ -491,6 +495,7 @@ func TestClientWriteError(t *testing.T) { if err.Error() != "fake write failure" { t.Error("unexpected value of error:", err) } + w.done <- true } func benchmarkEndToEnd(dial func() (*Client, error), b *testing.B) { |