refactor: continue to simplify engine/netx (#769)
The objective of this diff is to simplify the code inside engine/netx while moving more bits of code inside netxlite. See https://github.com/ooni/probe/issues/2121
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
package dialer
|
||||
|
||||
import "github.com/ooni/probe-cli/v3/internal/bytecounter"
|
||||
|
||||
type byteCounterDialer = bytecounter.ContextAwareDialer
|
||||
@@ -1,8 +1,12 @@
|
||||
// Package dialer allows you to create a net.Dialer-compatible
|
||||
// DialContext-enabled dialer with error wrapping, optional logging,
|
||||
// optional network-events saving, and optional proxying.
|
||||
package dialer
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
|
||||
"github.com/ooni/probe-cli/v3/internal/bytecounter"
|
||||
"github.com/ooni/probe-cli/v3/internal/engine/netx/trace"
|
||||
"github.com/ooni/probe-cli/v3/internal/model"
|
||||
"github.com/ooni/probe-cli/v3/internal/netxlite"
|
||||
@@ -63,9 +67,9 @@ func New(config *Config, resolver model.Resolver) model.Dialer {
|
||||
Resolver: resolver,
|
||||
Dialer: d,
|
||||
}
|
||||
d = &proxyDialer{ProxyURL: config.ProxyURL, Dialer: d}
|
||||
d = &netxlite.MaybeProxyDialer{ProxyURL: config.ProxyURL, Dialer: d}
|
||||
if config.ContextByteCounting {
|
||||
d = &byteCounterDialer{Dialer: d}
|
||||
d = &bytecounter.ContextAwareDialer{Dialer: d}
|
||||
}
|
||||
return d
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package dialer
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"testing"
|
||||
|
||||
"github.com/apex/log"
|
||||
"github.com/ooni/probe-cli/v3/internal/bytecounter"
|
||||
"github.com/ooni/probe-cli/v3/internal/engine/netx/trace"
|
||||
"github.com/ooni/probe-cli/v3/internal/netxlite"
|
||||
)
|
||||
@@ -18,11 +20,11 @@ func TestNewCreatesTheExpectedChain(t *testing.T) {
|
||||
ProxyURL: &url.URL{},
|
||||
ReadWriteSaver: saver,
|
||||
}, netxlite.DefaultResolver)
|
||||
bcd, ok := dlr.(*byteCounterDialer)
|
||||
bcd, ok := dlr.(*bytecounter.ContextAwareDialer)
|
||||
if !ok {
|
||||
t.Fatal("not a byteCounterDialer")
|
||||
}
|
||||
pd, ok := bcd.Dialer.(*proxyDialer)
|
||||
pd, ok := bcd.Dialer.(*netxlite.MaybeProxyDialer)
|
||||
if !ok {
|
||||
t.Fatal("not a proxyDialer")
|
||||
}
|
||||
@@ -51,3 +53,18 @@ func TestNewCreatesTheExpectedChain(t *testing.T) {
|
||||
t.Fatal("not a DialerSystem")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDialerNewSuccess(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("skip test in short mode")
|
||||
}
|
||||
log.SetLevel(log.DebugLevel)
|
||||
d := New(&Config{Logger: log.Log}, netxlite.DefaultResolver)
|
||||
txp := &http.Transport{DialContext: d.DialContext}
|
||||
client := &http.Client{Transport: txp}
|
||||
resp, err := client.Get("http://www.google.com")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
resp.Body.Close()
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
// Package dialer allows you to create a net.Dialer-compatible
|
||||
// DialContext-enabled dialer with error wrapping, optional logging,
|
||||
// optional network-events saving, and optional proxying.
|
||||
package dialer
|
||||
@@ -1,30 +0,0 @@
|
||||
package dialer_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/apex/log"
|
||||
"github.com/ooni/probe-cli/v3/internal/engine/netx/dialer"
|
||||
"github.com/ooni/probe-cli/v3/internal/engine/netx/trace"
|
||||
"github.com/ooni/probe-cli/v3/internal/netxlite"
|
||||
)
|
||||
|
||||
func Example() {
|
||||
saver := &trace.Saver{}
|
||||
|
||||
dlr := dialer.New(&dialer.Config{
|
||||
DialSaver: saver,
|
||||
Logger: log.Log,
|
||||
ReadWriteSaver: saver,
|
||||
}, netxlite.DefaultResolver)
|
||||
|
||||
ctx := context.Background()
|
||||
conn, err := dlr.DialContext(ctx, "tcp", "8.8.8.8:53")
|
||||
if err != nil {
|
||||
log.WithError(err).Fatal("DialContext failed")
|
||||
}
|
||||
|
||||
// ... use the connection ...
|
||||
|
||||
conn.Close()
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package dialer_test
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"github.com/apex/log"
|
||||
"github.com/ooni/probe-cli/v3/internal/engine/netx/dialer"
|
||||
"github.com/ooni/probe-cli/v3/internal/netxlite"
|
||||
)
|
||||
|
||||
func TestDialerNewSuccess(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("skip test in short mode")
|
||||
}
|
||||
log.SetLevel(log.DebugLevel)
|
||||
d := dialer.New(&dialer.Config{Logger: log.Log}, netxlite.DefaultResolver)
|
||||
txp := &http.Transport{DialContext: d.DialContext}
|
||||
client := &http.Client{Transport: txp}
|
||||
resp, err := client.Get("http://www.google.com")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
resp.Body.Close()
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package dialer
|
||||
|
||||
import "github.com/ooni/probe-cli/v3/internal/netxlite"
|
||||
|
||||
type proxyDialer = netxlite.MaybeProxyDialer
|
||||
Reference in New Issue
Block a user