doc: add tutorial on how to use netxlite (#519)

The main tutorial will be the one at https://github.com/ooni/probe-cli/pull/506, but
it's useful to also document the primitives used by measurex.

So, here's the companion tutorial, which explains how to use the
features in netxlite to perform measurements.

This work is part of https://github.com/ooni/ooni.org/issues/361.
This commit is contained in:
Simone Basso
2021-09-28 18:15:38 +02:00
committed by GitHub
parent 1fd2b1fd53
commit 9ef4d9df7d
20 changed files with 2803 additions and 0 deletions
+9
View File
@@ -45,6 +45,15 @@ func NewResolverStdlib(logger Logger) Resolver {
return WrapResolver(logger, &resolverSystem{})
}
// NewResolverUDP creates a new Resolver by combining
// WrapResolver with a SerialResolver attached to
// a DNSOverUDP transport.
func NewResolverUDP(logger Logger, dialer Dialer, address string) Resolver {
return WrapResolver(logger, NewSerialResolver(
NewDNSOverUDP(dialer, address),
))
}
// WrapResolver creates a new resolver that wraps an
// existing resolver to add these properties:
//
+17
View File
@@ -26,6 +26,23 @@ func TestNewResolverSystem(t *testing.T) {
_ = errWrapper.Resolver.(*resolverSystem)
}
func TestNewResolverUDP(t *testing.T) {
d := NewDialerWithoutResolver(log.Log)
resolver := NewResolverUDP(log.Log, d, "1.1.1.1:53")
idna := resolver.(*resolverIDNA)
logger := idna.Resolver.(*resolverLogger)
if logger.Logger != log.Log {
t.Fatal("invalid logger")
}
shortCircuit := logger.Resolver.(*resolverShortCircuitIPAddr)
errWrapper := shortCircuit.Resolver.(*resolverErrWrapper)
serio := errWrapper.Resolver.(*SerialResolver)
txp := serio.Transport().(*DNSOverUDP)
if txp.Address() != "1.1.1.1:53" {
t.Fatal("invalid address")
}
}
func TestResolverSystem(t *testing.T) {
t.Run("Network and Address", func(t *testing.T) {
r := &resolverSystem{}