From: Brad Fitzpatrick Date: Fri, 29 Mar 2013 01:36:06 +0000 (-0700) Subject: net/http: unflake TestTransportConcurrency X-Git-Tag: go1.1rc2~280 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=68130a07afff6b0f514e574e5517f8f5d3da9765;p=gostls13.git net/http: unflake TestTransportConcurrency Fixes #5005 R=golang-dev, r CC=golang-dev https://golang.org/cl/8127043 --- diff --git a/src/pkg/net/http/transport_test.go b/src/pkg/net/http/transport_test.go index 4bb711b17f..c6baf797cc 100644 --- a/src/pkg/net/http/transport_test.go +++ b/src/pkg/net/http/transport_test.go @@ -950,14 +950,28 @@ func TestTransportConcurrency(t *testing.T) { fmt.Fprintf(w, "%v", r.FormValue("echo")) })) defer ts.Close() - tr := &Transport{} + + var wg sync.WaitGroup + wg.Add(numReqs) + + tr := &Transport{ + Dial: func(netw, addr string) (c net.Conn, err error) { + // Due to the Transport's "socket late + // binding" (see idleConnCh in transport.go), + // the numReqs HTTP requests below can finish + // with a dial still outstanding. So count + // our dials as work too so the leak checker + // doesn't complain at us. + wg.Add(1) + defer wg.Done() + return net.Dial(netw, addr) + }, + } defer tr.CloseIdleConnections() c := &Client{Transport: tr} reqs := make(chan string) defer close(reqs) - var wg sync.WaitGroup - wg.Add(numReqs) for i := 0; i < maxProcs*2; i++ { go func() { for req := range reqs {