refactor: move ErrorWrapperResolver to errorsx pkg (#419)

Part of https://github.com/ooni/probe/issues/1505
This commit is contained in:
Simone Basso
2021-07-01 18:51:40 +02:00
committed by GitHub
parent 863899469e
commit 5c52d99d57
8 changed files with 144 additions and 81 deletions
+1 -1
View File
@@ -132,7 +132,7 @@ func NewResolver(config Config) Resolver {
if config.BogonIsError {
r = resolver.BogonResolver{Resolver: r}
}
r = resolver.ErrorWrapperResolver{Resolver: r}
r = &errorsx.ErrorWrapperResolver{Resolver: r}
if config.Logger != nil {
r = &netxlite.ResolverLogger{Logger: config.Logger, Resolver: r}
}
+7 -7
View File
@@ -24,7 +24,7 @@ func TestNewResolverVanilla(t *testing.T) {
if !ok {
t.Fatal("not the resolver we expected")
}
ewr, ok := ir.Resolver.(resolver.ErrorWrapperResolver)
ewr, ok := ir.Resolver.(*errorsx.ErrorWrapperResolver)
if !ok {
t.Fatal("not the resolver we expected")
}
@@ -48,7 +48,7 @@ func TestNewResolverSpecificResolver(t *testing.T) {
if !ok {
t.Fatal("not the resolver we expected")
}
ewr, ok := ir.Resolver.(resolver.ErrorWrapperResolver)
ewr, ok := ir.Resolver.(*errorsx.ErrorWrapperResolver)
if !ok {
t.Fatal("not the resolver we expected")
}
@@ -70,7 +70,7 @@ func TestNewResolverWithBogonFilter(t *testing.T) {
if !ok {
t.Fatal("not the resolver we expected")
}
ewr, ok := ir.Resolver.(resolver.ErrorWrapperResolver)
ewr, ok := ir.Resolver.(*errorsx.ErrorWrapperResolver)
if !ok {
t.Fatal("not the resolver we expected")
}
@@ -103,7 +103,7 @@ func TestNewResolverWithLogging(t *testing.T) {
if lr.Logger != log.Log {
t.Fatal("not the logger we expected")
}
ewr, ok := lr.Resolver.(resolver.ErrorWrapperResolver)
ewr, ok := lr.Resolver.(*errorsx.ErrorWrapperResolver)
if !ok {
t.Fatal("not the resolver we expected")
}
@@ -133,7 +133,7 @@ func TestNewResolverWithSaver(t *testing.T) {
if sr.Saver != saver {
t.Fatal("not the saver we expected")
}
ewr, ok := sr.Resolver.(resolver.ErrorWrapperResolver)
ewr, ok := sr.Resolver.(*errorsx.ErrorWrapperResolver)
if !ok {
t.Fatal("not the resolver we expected")
}
@@ -155,7 +155,7 @@ func TestNewResolverWithReadWriteCache(t *testing.T) {
if !ok {
t.Fatal("not the resolver we expected")
}
ewr, ok := ir.Resolver.(resolver.ErrorWrapperResolver)
ewr, ok := ir.Resolver.(*errorsx.ErrorWrapperResolver)
if !ok {
t.Fatal("not the resolver we expected")
}
@@ -186,7 +186,7 @@ func TestNewResolverWithPrefilledReadonlyCache(t *testing.T) {
if !ok {
t.Fatal("not the resolver we expected")
}
ewr, ok := ir.Resolver.(resolver.ErrorWrapperResolver)
ewr, ok := ir.Resolver.(*errorsx.ErrorWrapperResolver)
if !ok {
t.Fatal("not the resolver we expected")
}
@@ -1,25 +0,0 @@
package resolver
import (
"context"
"github.com/ooni/probe-cli/v3/internal/errorsx"
)
// ErrorWrapperResolver is a Resolver that knows about wrapping errors.
type ErrorWrapperResolver struct {
Resolver
}
// LookupHost implements Resolver.LookupHost
func (r ErrorWrapperResolver) LookupHost(ctx context.Context, hostname string) ([]string, error) {
addrs, err := r.Resolver.LookupHost(ctx, hostname)
err = errorsx.SafeErrWrapperBuilder{
Classifier: errorsx.ClassifyResolveFailure,
Error: err,
Operation: errorsx.ResolveOperation,
}.MaybeBuild()
return addrs, err
}
var _ Resolver = ErrorWrapperResolver{}
@@ -1,45 +0,0 @@
package resolver_test
import (
"context"
"errors"
"testing"
"github.com/ooni/probe-cli/v3/internal/engine/netx/resolver"
"github.com/ooni/probe-cli/v3/internal/errorsx"
)
func TestErrorWrapperSuccess(t *testing.T) {
orig := []string{"8.8.8.8"}
r := resolver.ErrorWrapperResolver{
Resolver: resolver.NewFakeResolverWithResult(orig),
}
addrs, err := r.LookupHost(context.Background(), "dns.google.com")
if err != nil {
t.Fatal(err)
}
if len(addrs) != len(orig) || addrs[0] != orig[0] {
t.Fatal("not the result we expected")
}
}
func TestErrorWrapperFailure(t *testing.T) {
r := resolver.ErrorWrapperResolver{
Resolver: resolver.NewFakeResolverThatFails(),
}
ctx := context.Background()
addrs, err := r.LookupHost(ctx, "dns.google.com")
if addrs != nil {
t.Fatal("expected nil addr here")
}
var errWrapper *errorsx.ErrWrapper
if !errors.As(err, &errWrapper) {
t.Fatal("cannot properly cast the returned error")
}
if errWrapper.Failure != errorsx.FailureDNSNXDOMAINError {
t.Fatal("unexpected failure")
}
if errWrapper.Operation != errorsx.ResolveOperation {
t.Fatal("unexpected Operation")
}
}