Skip to content

Commit

Permalink
net/rpc: fix race in TestClientWriteError test
Browse files Browse the repository at this point in the history
Fixes #2752.

R=golang-dev, mpimenov, r
CC=golang-dev
https://golang.org/cl/5571062
  • Loading branch information
dvyukov committed Jan 26, 2012
1 parent 7c9ee5f commit fa32b16
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions src/pkg/net/rpc/server_test.go
Expand Up @@ -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
}

Expand All @@ -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 {
Expand All @@ -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) {
Expand Down

0 comments on commit fa32b16

Please sign in to comment.