refactor: start refactoring session resolver (#807)

This diff addresses the following points of https://github.com/ooni/probe/issues/2135:

- [x] the `childResolver` type is useless and we can use `model.Resolver` directly;
- [x] we should use `model/mocks` instead of custom fakes;
- [x] we should not use `log.Log` rather we should use `model.DiscardLogger`;
- [x] make `timeLimitedLookup` easier to test with a `-short` tests;
- [x] ensure `timeLimitedLookup` returns as soon as its context expires regardless of the child resolver;

Subsequent diffs will address more points mentioned in there.
This commit is contained in:
Simone Basso 2022-06-08 14:06:22 +02:00 committed by GitHub
commit fe29b432e0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 126 additions and 84 deletions

View file

@ -5,8 +5,9 @@ import (
"strings"
"testing"
"github.com/apex/log"
"github.com/ooni/probe-cli/v3/internal/bytecounter"
"github.com/ooni/probe-cli/v3/internal/model"
"github.com/ooni/probe-cli/v3/internal/model/mocks"
)
func TestDefaultByteCounter(t *testing.T) {
@ -18,18 +19,33 @@ func TestDefaultByteCounter(t *testing.T) {
}
func TestDefaultLogger(t *testing.T) {
logger := &log.Logger{}
reso := &Resolver{Logger: logger}
lo := reso.logger()
if lo != logger {
t.Fatal("expected another logger here counter")
}
t.Run("when using a different logger", func(t *testing.T) {
logger := &mocks.Logger{}
reso := &Resolver{Logger: logger}
lo := reso.logger()
if lo != logger {
t.Fatal("expected another logger here")
}
})
t.Run("when no logger is set", func(t *testing.T) {
reso := &Resolver{Logger: nil}
lo := reso.logger()
if lo != model.DiscardLogger {
t.Fatal("expected another logger here")
}
})
}
func TestGetResolverHTTPSStandard(t *testing.T) {
bc := bytecounter.New()
URL := "https://dns.google"
re := &FakeResolver{}
var closed bool
re := &mocks.Resolver{
MockCloseIdleConnections: func() {
closed = true
},
}
cmk := &fakeDNSClientMaker{reso: re}
reso := &Resolver{dnsClientMaker: cmk, ByteCounter: bc}
out, err := reso.getresolver(URL)
@ -47,7 +63,7 @@ func TestGetResolverHTTPSStandard(t *testing.T) {
t.Fatal("not the result we expected")
}
reso.closeall()
if re.Closed != true {
if closed != true {
t.Fatal("was not closed")
}
if cmk.savedURL != URL {
@ -62,7 +78,7 @@ func TestGetResolverHTTPSStandard(t *testing.T) {
if cmk.savedConfig.HTTP3Enabled != false {
t.Fatal("unexpected HTTP3Enabled")
}
if cmk.savedConfig.Logger != log.Log {
if cmk.savedConfig.Logger != model.DiscardLogger {
t.Fatal("unexpected Log")
}
}
@ -70,7 +86,12 @@ func TestGetResolverHTTPSStandard(t *testing.T) {
func TestGetResolverHTTP3(t *testing.T) {
bc := bytecounter.New()
URL := "http3://dns.google"
re := &FakeResolver{}
var closed bool
re := &mocks.Resolver{
MockCloseIdleConnections: func() {
closed = true
},
}
cmk := &fakeDNSClientMaker{reso: re}
reso := &Resolver{dnsClientMaker: cmk, ByteCounter: bc}
out, err := reso.getresolver(URL)
@ -88,7 +109,7 @@ func TestGetResolverHTTP3(t *testing.T) {
t.Fatal("not the result we expected")
}
reso.closeall()
if re.Closed != true {
if closed != true {
t.Fatal("was not closed")
}
if cmk.savedURL != strings.Replace(URL, "http3://", "https://", 1) {
@ -103,7 +124,7 @@ func TestGetResolverHTTP3(t *testing.T) {
if cmk.savedConfig.HTTP3Enabled != true {
t.Fatal("unexpected HTTP3Enabled")
}
if cmk.savedConfig.Logger != log.Log {
if cmk.savedConfig.Logger != model.DiscardLogger {
t.Fatal("unexpected Log")
}
}