48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
|
package measurex
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/miekg/dns"
|
||
|
"github.com/ooni/probe-cli/v3/internal/model/mocks"
|
||
|
"github.com/ooni/probe-cli/v3/internal/netxlite"
|
||
|
)
|
||
|
|
||
|
func TestDNSXModifiesStdlibTransportName(t *testing.T) {
|
||
|
// See https://github.com/ooni/spec/pull/257 for more information.
|
||
|
child := netxlite.NewDNSOverGetaddrinfoTransport()
|
||
|
mx := NewMeasurerWithDefaultSettings()
|
||
|
dbout := &MeasurementDB{}
|
||
|
txp := mx.WrapDNSXRoundTripper(dbout, child)
|
||
|
ctx, cancel := context.WithCancel(context.Background())
|
||
|
cancel() // we want to fail immediately
|
||
|
query := &mocks.DNSQuery{
|
||
|
MockDomain: func() string {
|
||
|
return "dns.google"
|
||
|
},
|
||
|
MockType: func() uint16 {
|
||
|
return dns.TypeANY
|
||
|
},
|
||
|
MockBytes: func() ([]byte, error) {
|
||
|
return []byte{}, nil
|
||
|
},
|
||
|
MockID: func() uint16 {
|
||
|
return 1453
|
||
|
},
|
||
|
}
|
||
|
_, _ = txp.RoundTrip(ctx, query)
|
||
|
measurement := dbout.AsMeasurement()
|
||
|
var good int
|
||
|
for _, rtinfo := range measurement.DNSRoundTrip {
|
||
|
network := rtinfo.Network
|
||
|
if network != netxlite.StdlibResolverSystem {
|
||
|
t.Fatal("unexpected network", network)
|
||
|
}
|
||
|
good++
|
||
|
}
|
||
|
if good < 1 {
|
||
|
t.Fatal("no good entry seen")
|
||
|
}
|
||
|
}
|