fix(geolocate): do resolver lookup with proxy (#306)

The use cases for using a proxy become more clear over time. When I
originally wrote the proxy code the idea was to use the proxy to proxy
both the communication with the backend and measurements.

It become increasingly clear that we _only_ want to proxy the
communication with the backends. Therefore, there's no point in
skipping the resolver lookup step when we use a proxy.

Part of https://github.com/ooni/probe/issues/985
This commit is contained in:
Simone Basso 2021-04-07 18:48:02 +02:00 committed by GitHub
commit 54e590b776
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 90 deletions

View file

@ -148,11 +148,10 @@ func (c taskResolverIPLookupper) LookupResolverIP(ctx context.Context) (string,
func TestLocationLookupCannotLookupResolverIP(t *testing.T) {
expected := errors.New("mocked error")
op := Task{
probeIPLookupper: taskProbeIPLookupper{ip: "1.2.3.4"},
probeASNLookupper: taskASNLookupper{asn: 1234, name: "1234.com"},
countryLookupper: taskCCLookupper{cc: "IT"},
resolverIPLookupper: taskResolverIPLookupper{err: expected},
enableResolverLookup: true,
probeIPLookupper: taskProbeIPLookupper{ip: "1.2.3.4"},
probeASNLookupper: taskASNLookupper{asn: 1234, name: "1234.com"},
countryLookupper: taskCCLookupper{cc: "IT"},
resolverIPLookupper: taskResolverIPLookupper{err: expected},
}
ctx := context.Background()
out, err := op.Run(ctx)
@ -171,7 +170,7 @@ func TestLocationLookupCannotLookupResolverIP(t *testing.T) {
if out.ProbeIP != "1.2.3.4" {
t.Fatal("invalid ProbeIP value")
}
if out.DidResolverLookup != true {
if out.didResolverLookup != true {
t.Fatal("invalid DidResolverLookup value")
}
if out.ResolverASN != DefaultResolverASN {
@ -193,7 +192,6 @@ func TestLocationLookupCannotLookupResolverNetworkName(t *testing.T) {
countryLookupper: taskCCLookupper{cc: "IT"},
resolverIPLookupper: taskResolverIPLookupper{ip: "4.3.2.1"},
resolverASNLookupper: taskASNLookupper{err: expected},
enableResolverLookup: true,
}
ctx := context.Background()
out, err := op.Run(ctx)
@ -212,7 +210,7 @@ func TestLocationLookupCannotLookupResolverNetworkName(t *testing.T) {
if out.ProbeIP != "1.2.3.4" {
t.Fatal("invalid ProbeIP value")
}
if out.DidResolverLookup != true {
if out.didResolverLookup != true {
t.Fatal("invalid DidResolverLookup value")
}
if out.ResolverASN != DefaultResolverASN {
@ -233,7 +231,6 @@ func TestLocationLookupSuccessWithResolverLookup(t *testing.T) {
countryLookupper: taskCCLookupper{cc: "IT"},
resolverIPLookupper: taskResolverIPLookupper{ip: "4.3.2.1"},
resolverASNLookupper: taskASNLookupper{asn: 4321, name: "4321.com"},
enableResolverLookup: true,
}
ctx := context.Background()
out, err := op.Run(ctx)
@ -252,7 +249,7 @@ func TestLocationLookupSuccessWithResolverLookup(t *testing.T) {
if out.ProbeIP != "1.2.3.4" {
t.Fatal("invalid ProbeIP value")
}
if out.DidResolverLookup != true {
if out.didResolverLookup != true {
t.Fatal("invalid DidResolverLookup value")
}
if out.ResolverASN != 4321 {
@ -266,49 +263,8 @@ func TestLocationLookupSuccessWithResolverLookup(t *testing.T) {
}
}
func TestLocationLookupSuccessWithoutResolverLookup(t *testing.T) {
op := Task{
probeIPLookupper: taskProbeIPLookupper{ip: "1.2.3.4"},
probeASNLookupper: taskASNLookupper{asn: 1234, name: "1234.com"},
countryLookupper: taskCCLookupper{cc: "IT"},
resolverIPLookupper: taskResolverIPLookupper{ip: "4.3.2.1"},
resolverASNLookupper: taskASNLookupper{asn: 4321, name: "4321.com"},
}
ctx := context.Background()
out, err := op.Run(ctx)
if err != nil {
t.Fatalf("not the error we expected: %+v", err)
}
if out.ASN != 1234 {
t.Fatal("invalid ASN value")
}
if out.CountryCode != "IT" {
t.Fatal("invalid CountryCode value")
}
if out.NetworkName != "1234.com" {
t.Fatal("invalid NetworkName value")
}
if out.ProbeIP != "1.2.3.4" {
t.Fatal("invalid ProbeIP value")
}
if out.DidResolverLookup != false {
t.Fatal("invalid DidResolverLookup value")
}
if out.ResolverASN != DefaultResolverASN {
t.Fatalf("invalid ResolverASN value: %+v", out.ResolverASN)
}
if out.ResolverIP != DefaultResolverIP {
t.Fatalf("invalid ResolverIP value: %+v", out.ResolverIP)
}
if out.ResolverNetworkName != DefaultResolverNetworkName {
t.Fatal("invalid ResolverNetworkName value")
}
}
func TestSmoke(t *testing.T) {
config := Config{
EnableResolverLookup: true,
}
config := Config{}
task := Must(NewTask(config))
result, err := task.Run(context.Background())
if err != nil {