implement a function to close the h2quic.RoundTripper

h2quic.RoundTripper.Close() closes all QUIC connections that this
roundtripper has used.
This commit is contained in:
Marten Seemann
2017-07-12 18:09:30 +07:00
parent 14687ee1ec
commit bf6030a855
3 changed files with 63 additions and 10 deletions

View File

@@ -13,11 +13,19 @@ import (
. "github.com/onsi/gomega"
)
type mockRoundTripper struct{}
type mockClient struct {
closed bool
}
func (m *mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
func (m *mockClient) RoundTrip(req *http.Request) (*http.Response, error) {
return &http.Response{Request: req}, nil
}
func (m *mockClient) Close() error {
m.closed = true
return nil
}
var _ roundTripCloser = &mockClient{}
type mockBody struct {
reader bytes.Reader
@@ -170,4 +178,23 @@ var _ = Describe("RoundTripper", func() {
Expect(req1.Body.(*mockBody).closed).To(BeTrue())
})
})
Context("closing", func() {
It("closes", func() {
rt.clients = make(map[string]roundTripCloser)
cl := &mockClient{}
rt.clients["foo.bar"] = cl
err := rt.Close()
Expect(err).ToNot(HaveOccurred())
Expect(len(rt.clients)).To(BeZero())
Expect(cl.closed).To(BeTrue())
})
It("closes a RoundTripper that has never been used", func() {
Expect(len(rt.clients)).To(BeZero())
err := rt.Close()
Expect(err).ToNot(HaveOccurred())
Expect(len(rt.clients)).To(BeZero())
})
})
})