]> Cypherpunks repositories - gostls13.git/commitdiff
net/rpc: fix race in TestClientWriteError test
authorDmitriy Vyukov <dvyukov@google.com>
Thu, 26 Jan 2012 07:37:07 +0000 (11:37 +0400)
committerDmitriy Vyukov <dvyukov@google.com>
Thu, 26 Jan 2012 07:37:07 +0000 (11:37 +0400)
Fixes #2752.

R=golang-dev, mpimenov, r
CC=golang-dev
https://golang.org/cl/5571062

src/pkg/net/rpc/server_test.go

index ae688c0f8ca82e0ff3d76d1e60d61b6b525d09c7..7536c6dd6f5a5e9c5b7c8feb2b8dc4deb0277e68 100644 (file)
@@ -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) {