refactor(netx/resolver): add CloseIdleConnections to RoundTripper (#501)

While there, also change to pointer receiver and use internal
testing for what are clearly unit tests.

Part of https://github.com/ooni/probe/issues/1591.
This commit is contained in:
Simone Basso 2021-09-09 20:49:12 +02:00 committed by GitHub
commit 1eb9e8c9b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 203 additions and 115 deletions

View file

@ -38,3 +38,34 @@ func TestHTTPTransport(t *testing.T) {
}
})
}
func TestHTTPClient(t *testing.T) {
t.Run("Do", func(t *testing.T) {
expected := errors.New("mocked error")
clnt := &HTTPClient{
MockDo: func(req *http.Request) (*http.Response, error) {
return nil, expected
},
}
resp, err := clnt.Do(&http.Request{})
if !errors.Is(err, expected) {
t.Fatal("not the error we expected", err)
}
if resp != nil {
t.Fatal("expected nil response here")
}
})
t.Run("CloseIdleConnections", func(t *testing.T) {
called := &atomicx.Int64{}
clnt := &HTTPClient{
MockCloseIdleConnections: func() {
called.Add(1)
},
}
clnt.CloseIdleConnections()
if called.Load() != 1 {
t.Fatal("not called")
}
})
}