Skip to content

Commit 96e405c

Browse files
neildgopherbot
authored andcommitted
http2: modernize TestTransportRoundtripCloseOnWriteError
Rewrite this test to use a testClientConn and fake network, allowing us to inject its network error into the fake net rather than by twiddling the client connection internals. Change-Id: Idcd96498ceaee701ad0c053dc0c6ce74701cc182 Reviewed-on: https://go-review.googlesource.com/c/net/+/701006 Auto-Submit: Damien Neil <[email protected]> Reviewed-by: Nicholas Husin <[email protected]> Reviewed-by: Nicholas Husin <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]>
1 parent 6dc6880 commit 96e405c

File tree

2 files changed

+23
-23
lines changed

2 files changed

+23
-23
lines changed

http2/clientconn_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,13 @@ func (tc *testClientConn) closeWrite() {
194194
tc.netconn.Close()
195195
}
196196

197+
// closeWrite causes the net.Conn used by the ClientConn to return a error
198+
// from Write calls.
199+
func (tc *testClientConn) closeWriteWithError(err error) {
200+
tc.netconn.loc.setReadError(io.EOF)
201+
tc.netconn.loc.setWriteError(err)
202+
}
203+
197204
// testRequestBody is a Request.Body for use in tests.
198205
type testRequestBody struct {
199206
tc *testClientConn

http2/transport_test.go

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4243,35 +4243,28 @@ func TestTransportNewClientConnCloseOnWriteError(t *testing.T) {
42434243
}
42444244

42454245
func TestTransportRoundtripCloseOnWriteError(t *testing.T) {
4246-
req, err := http.NewRequest("GET", "https://dummy.tld/", nil)
4247-
if err != nil {
4248-
t.Fatal(err)
4249-
}
4250-
ts := newTestServer(t, func(w http.ResponseWriter, r *http.Request) {})
4246+
synctestTest(t, testTransportRoundtripCloseOnWriteError)
4247+
}
4248+
func testTransportRoundtripCloseOnWriteError(t testing.TB) {
4249+
tc := newTestClientConn(t)
4250+
tc.greet()
42514251

4252-
tr := &Transport{TLSClientConfig: tlsConfigInsecure}
4253-
defer tr.CloseIdleConnections()
4254-
ctx := context.Background()
4255-
cc, err := tr.dialClientConn(ctx, ts.Listener.Addr().String(), false)
4256-
if err != nil {
4257-
t.Fatal(err)
4258-
}
4252+
body := tc.newRequestBody()
4253+
body.writeBytes(1)
4254+
req, _ := http.NewRequest("GET", "https://dummy.tld/", body)
4255+
rt := tc.roundTrip(req)
42594256

42604257
writeErr := errors.New("write error")
4261-
cc.wmu.Lock()
4262-
cc.werr = writeErr
4263-
cc.wmu.Unlock()
4258+
tc.closeWriteWithError(writeErr)
42644259

4265-
_, err = cc.RoundTrip(req)
4266-
if err != writeErr {
4267-
t.Fatalf("expected %v, got %v", writeErr, err)
4260+
body.writeBytes(1)
4261+
if err := rt.err(); err != writeErr {
4262+
t.Fatalf("RoundTrip error %v, want %v", err, writeErr)
42684263
}
42694264

4270-
cc.mu.Lock()
4271-
closed := cc.closed
4272-
cc.mu.Unlock()
4273-
if !closed {
4274-
t.Fatal("expected closed")
4265+
rt2 := tc.roundTrip(req)
4266+
if err := rt2.err(); err != errClientConnUnusable {
4267+
t.Fatalf("RoundTrip error %v, want errClientConnUnusable", err)
42754268
}
42764269
}
42774270

0 commit comments

Comments
 (0)