refactor(dialer): it should close idle connections (#457)

Like we did before for the resolver, a dialer should propagate the
request to close idle connections to underlying types.

See https://github.com/ooni/probe/issues/1591
This commit is contained in:
Simone Basso
2021-09-05 19:55:28 +02:00
committed by GitHub
parent a3a27b1ebf
commit 7a9499fee3
17 changed files with 207 additions and 36 deletions
+7 -1
View File
@@ -7,10 +7,16 @@ import (
// Dialer is a mockable Dialer.
type Dialer struct {
MockDialContext func(ctx context.Context, network, address string) (net.Conn, error)
MockDialContext func(ctx context.Context, network, address string) (net.Conn, error)
MockCloseIdleConnections func()
}
// DialContext calls MockDialContext.
func (d *Dialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
return d.MockDialContext(ctx, network, address)
}
// CloseIdleConnections calls MockCloseIdleConnections.
func (d *Dialer) CloseIdleConnections() {
d.MockCloseIdleConnections()
}
+14 -1
View File
@@ -7,7 +7,7 @@ import (
"testing"
)
func TestDialerWorks(t *testing.T) {
func TestDialerDialContext(t *testing.T) {
expected := errors.New("mocked error")
d := Dialer{
MockDialContext: func(ctx context.Context, network string, address string) (net.Conn, error) {
@@ -23,3 +23,16 @@ func TestDialerWorks(t *testing.T) {
t.Fatal("expected nil conn")
}
}
func TestDialerCloseIdleConnections(t *testing.T) {
var called bool
d := &Dialer{
MockCloseIdleConnections: func() {
called = true
},
}
d.CloseIdleConnections()
if !called {
t.Fatal("not called")
}
}