refactor(netx): move dialer's mockable types in mockablex (#368)
Part of https://github.com/ooni/probe/issues/1591
This commit is contained in:
parent
b8cae3f5a6
commit
5b73230a6d
14 changed files with 455 additions and 173 deletions
|
|
@ -3,11 +3,14 @@ package dialer_test
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io"
|
||||
"net"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/ooni/probe-cli/v3/internal/engine/netx/dialer"
|
||||
"github.com/ooni/probe-cli/v3/internal/engine/netx/errorx"
|
||||
"github.com/ooni/probe-cli/v3/internal/engine/netx/mockablex"
|
||||
"github.com/ooni/probe-cli/v3/internal/engine/netx/trace"
|
||||
)
|
||||
|
||||
|
|
@ -15,8 +18,10 @@ func TestSaverDialerFailure(t *testing.T) {
|
|||
expected := errors.New("mocked error")
|
||||
saver := &trace.Saver{}
|
||||
dlr := dialer.SaverDialer{
|
||||
Dialer: dialer.FakeDialer{
|
||||
Err: expected,
|
||||
Dialer: mockablex.Dialer{
|
||||
MockDialContext: func(ctx context.Context, network string, address string) (net.Conn, error) {
|
||||
return nil, expected
|
||||
},
|
||||
},
|
||||
Saver: saver,
|
||||
}
|
||||
|
|
@ -55,8 +60,10 @@ func TestSaverConnDialerFailure(t *testing.T) {
|
|||
expected := errors.New("mocked error")
|
||||
saver := &trace.Saver{}
|
||||
dlr := dialer.SaverConnDialer{
|
||||
Dialer: dialer.FakeDialer{
|
||||
Err: expected,
|
||||
Dialer: mockablex.Dialer{
|
||||
MockDialContext: func(ctx context.Context, network string, address string) (net.Conn, error) {
|
||||
return nil, expected
|
||||
},
|
||||
},
|
||||
Saver: saver,
|
||||
}
|
||||
|
|
@ -68,3 +75,66 @@ func TestSaverConnDialerFailure(t *testing.T) {
|
|||
t.Fatal("expected nil conn here")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSaverConnDialerSuccess(t *testing.T) {
|
||||
saver := &trace.Saver{}
|
||||
dlr := dialer.SaverConnDialer{
|
||||
Dialer: dialer.SaverDialer{
|
||||
Dialer: mockablex.Dialer{
|
||||
MockDialContext: func(ctx context.Context, network string, address string) (net.Conn, error) {
|
||||
return &mockablex.Conn{
|
||||
MockRead: func(b []byte) (int, error) {
|
||||
return 0, io.EOF
|
||||
},
|
||||
MockWrite: func(b []byte) (int, error) {
|
||||
return 0, io.EOF
|
||||
},
|
||||
MockClose: func() error {
|
||||
return io.EOF
|
||||
},
|
||||
MockLocalAddr: func() net.Addr {
|
||||
return &net.TCPAddr{Port: 12345}
|
||||
},
|
||||
}, nil
|
||||
},
|
||||
},
|
||||
Saver: saver,
|
||||
},
|
||||
Saver: saver,
|
||||
}
|
||||
conn, err := dlr.DialContext(context.Background(), "tcp", "www.google.com:443")
|
||||
if err != nil {
|
||||
t.Fatal("not the error we expected", err)
|
||||
}
|
||||
conn.Read(nil)
|
||||
conn.Write(nil)
|
||||
conn.Close()
|
||||
events := saver.Read()
|
||||
if len(events) != 3 {
|
||||
t.Fatal("unexpected number of events saved", len(events))
|
||||
}
|
||||
if events[0].Name != "connect" {
|
||||
t.Fatal("expected a connect event")
|
||||
}
|
||||
saverCheckConnectEvent(t, &events[0])
|
||||
if events[1].Name != "read" {
|
||||
t.Fatal("expected a read event")
|
||||
}
|
||||
saverCheckReadEvent(t, &events[1])
|
||||
if events[2].Name != "write" {
|
||||
t.Fatal("expected a write event")
|
||||
}
|
||||
saverCheckWriteEvent(t, &events[2])
|
||||
}
|
||||
|
||||
func saverCheckConnectEvent(t *testing.T, ev *trace.Event) {
|
||||
// TODO(bassosimone): implement
|
||||
}
|
||||
|
||||
func saverCheckReadEvent(t *testing.T, ev *trace.Event) {
|
||||
// TODO(bassosimone): implement
|
||||
}
|
||||
|
||||
func saverCheckWriteEvent(t *testing.T, ev *trace.Event) {
|
||||
// TODO(bassosimone): implement
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue