]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: deflake TestResponseControllerSetFutureWriteDeadline
authorDamien Neil <dneil@google.com>
Thu, 17 Nov 2022 19:09:11 +0000 (11:09 -0800)
committerGopher Robot <gobot@golang.org>
Thu, 17 Nov 2022 19:25:42 +0000 (19:25 +0000)
Don't set the server's write deadline until after the client has
read the response headers, avoiding test failures if the deadline
expires before or while writing headers.

Fixes #56807.

Change-Id: I5f80c108b360d030132a13661774a30fac453856
Reviewed-on: https://go-review.googlesource.com/c/go/+/451715
Auto-Submit: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Damien Neil <dneil@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
src/net/http/responsecontroller_test.go

index af036837a44963128734b3df3f11c5819e745671..90c57016a779534b7b937de129334e326a9b61d5 100644 (file)
@@ -132,8 +132,14 @@ func testResponseControllerSetFutureWriteDeadline(t *testing.T, mode testMode) {
                t.Skip("skip until h2_bundle.go is updated")
        }
        errc := make(chan error, 1)
+       startwritec := make(chan struct{})
        cst := newClientServerTest(t, mode, HandlerFunc(func(w ResponseWriter, r *Request) {
                ctl := NewResponseController(w)
+               w.WriteHeader(200)
+               if err := ctl.Flush(); err != nil {
+                       t.Errorf("ctl.Flush() = %v, want nil", err)
+               }
+               <-startwritec // don't set the deadline until the client reads response headers
                if err := ctl.SetWriteDeadline(time.Now().Add(1 * time.Millisecond)); err != nil {
                        t.Errorf("ctl.SetWriteDeadline() = %v, want nil", err)
                }
@@ -142,6 +148,7 @@ func testResponseControllerSetFutureWriteDeadline(t *testing.T, mode testMode) {
        }))
 
        res, err := cst.c.Get(cst.ts.URL)
+       close(startwritec)
        if err != nil {
                t.Fatalf("unexpected connection error: %v", err)
        }