]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: eliminate more clientServerTest leaks in tests that use runTimeSensitiveTest
authorBryan C. Mills <bcmills@google.com>
Wed, 20 Sep 2023 14:48:20 +0000 (10:48 -0400)
committerGopher Robot <gobot@golang.org>
Wed, 20 Sep 2023 15:25:02 +0000 (15:25 +0000)
Change-Id: I77684a095af03d5c4e50da8e7af210b10639ff23
Reviewed-on: https://go-review.googlesource.com/c/go/+/529756
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
src/net/http/serve_test.go

index 8fa40e61ff1e11e0b90e008caaf5f7cbc34c8f01..93503d65813a74ff9c0097a67664e7ea461fbb96 100644 (file)
@@ -663,12 +663,14 @@ func testServerTimeouts(t *testing.T, mode testMode) {
 
 func testServerTimeoutsWithTimeout(t *testing.T, timeout time.Duration, mode testMode) error {
        var reqNum atomic.Int32
-       ts := newClientServerTest(t, mode, HandlerFunc(func(res ResponseWriter, req *Request) {
+       cst := newClientServerTest(t, mode, HandlerFunc(func(res ResponseWriter, req *Request) {
                fmt.Fprintf(res, "req=%d", reqNum.Add(1))
        }), func(ts *httptest.Server) {
                ts.Config.ReadTimeout = timeout
                ts.Config.WriteTimeout = timeout
-       }).ts
+       })
+       defer cst.close()
+       ts := cst.ts
 
        // Hit the HTTP server successfully.
        c := ts.Client()
@@ -865,7 +867,7 @@ func TestWriteDeadlineEnforcedPerStream(t *testing.T) {
 
 func testWriteDeadlineEnforcedPerStream(t *testing.T, mode testMode, timeout time.Duration) error {
        firstRequest := make(chan bool, 1)
-       ts := newClientServerTest(t, mode, HandlerFunc(func(res ResponseWriter, req *Request) {
+       cst := newClientServerTest(t, mode, HandlerFunc(func(res ResponseWriter, req *Request) {
                select {
                case firstRequest <- true:
                        // first request succeeds
@@ -875,7 +877,9 @@ func testWriteDeadlineEnforcedPerStream(t *testing.T, mode testMode, timeout tim
                }
        }), func(ts *httptest.Server) {
                ts.Config.WriteTimeout = timeout / 2
-       }).ts
+       })
+       defer cst.close()
+       ts := cst.ts
 
        c := ts.Client()
 
@@ -923,7 +927,7 @@ func TestNoWriteDeadline(t *testing.T) {
 
 func testNoWriteDeadline(t *testing.T, mode testMode, timeout time.Duration) error {
        firstRequest := make(chan bool, 1)
-       ts := newClientServerTest(t, mode, HandlerFunc(func(res ResponseWriter, req *Request) {
+       cst := newClientServerTest(t, mode, HandlerFunc(func(res ResponseWriter, req *Request) {
                select {
                case firstRequest <- true:
                        // first request succeeds
@@ -931,7 +935,9 @@ func testNoWriteDeadline(t *testing.T, mode testMode, timeout time.Duration) err
                        // second request times out
                        time.Sleep(timeout)
                }
-       })).ts
+       }))
+       defer cst.close()
+       ts := cst.ts
 
        c := ts.Client()
 
@@ -5399,13 +5405,15 @@ func testServerIdleTimeout(t *testing.T, mode testMode) {
                1 * time.Second,
                10 * time.Second,
        }, func(t *testing.T, readHeaderTimeout time.Duration) error {
-               ts := newClientServerTest(t, mode, HandlerFunc(func(w ResponseWriter, r *Request) {
+               cst := newClientServerTest(t, mode, HandlerFunc(func(w ResponseWriter, r *Request) {
                        io.Copy(io.Discard, r.Body)
                        io.WriteString(w, r.RemoteAddr)
                }), func(ts *httptest.Server) {
                        ts.Config.ReadHeaderTimeout = readHeaderTimeout
                        ts.Config.IdleTimeout = 2 * readHeaderTimeout
-               }).ts
+               })
+               defer cst.close()
+               ts := cst.ts
                t.Logf("ReadHeaderTimeout = %v", ts.Config.ReadHeaderTimeout)
                t.Logf("IdleTimeout = %v", ts.Config.IdleTimeout)
                c := ts.Client()
@@ -5719,7 +5727,7 @@ func testServerCancelsReadTimeoutWhenIdle(t *testing.T, mode testMode) {
                time.Second,
                2 * time.Second,
        }, func(t *testing.T, timeout time.Duration) error {
-               ts := newClientServerTest(t, mode, HandlerFunc(func(w ResponseWriter, r *Request) {
+               cst := newClientServerTest(t, mode, HandlerFunc(func(w ResponseWriter, r *Request) {
                        select {
                        case <-time.After(2 * timeout):
                                fmt.Fprint(w, "ok")
@@ -5728,7 +5736,9 @@ func testServerCancelsReadTimeoutWhenIdle(t *testing.T, mode testMode) {
                        }
                }), func(ts *httptest.Server) {
                        ts.Config.ReadTimeout = timeout
-               }).ts
+               })
+               defer cst.close()
+               ts := cst.ts
 
                c := ts.Client()
 
@@ -5762,10 +5772,12 @@ func testServerCancelsReadHeaderTimeoutWhenIdle(t *testing.T, mode testMode) {
                time.Second,
                2 * time.Second,
        }, func(t *testing.T, timeout time.Duration) error {
-               ts := newClientServerTest(t, mode, serve(200), func(ts *httptest.Server) {
+               cst := newClientServerTest(t, mode, serve(200), func(ts *httptest.Server) {
                        ts.Config.ReadHeaderTimeout = timeout
                        ts.Config.IdleTimeout = 0 // disable idle timeout
-               }).ts
+               })
+               defer cst.close()
+               ts := cst.ts
 
                // rather than using an http.Client, create a single connection, so that
                // we can ensure this connection is not closed.