refactor(sessionresolver): adapt to changing network conditions (#238)
* feat(sessionresolver): try many and use what works * fix(sessionresolver): make sure we can use quic * fix: the config struct is unnecessary * fix: make kvstore optional * feat: write simple integration test * feat: start adding tests * feat: continue writing tests * fix(sessionresolver): add more unit tests * fix(sessionresolver): finish adding tests * refactor(sessionresolver): changes after code review
This commit is contained in:
parent
12e1164940
commit
034db78f94
19 changed files with 1260 additions and 66 deletions
25
internal/engine/internal/sessionresolver/clientmaker.go
Normal file
25
internal/engine/internal/sessionresolver/clientmaker.go
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
package sessionresolver
|
||||
|
||||
import "github.com/ooni/probe-cli/v3/internal/engine/netx"
|
||||
|
||||
// dnsclientmaker makes a new resolver.
|
||||
type dnsclientmaker interface {
|
||||
// Make makes a new resolver.
|
||||
Make(config netx.Config, URL string) (childResolver, error)
|
||||
}
|
||||
|
||||
// clientmaker returns a valid dnsclientmaker
|
||||
func (r *Resolver) clientmaker() dnsclientmaker {
|
||||
if r.dnsClientMaker != nil {
|
||||
return r.dnsClientMaker
|
||||
}
|
||||
return &defaultDNSClientMaker{}
|
||||
}
|
||||
|
||||
// defaultDNSClientMaker is the default dnsclientmaker
|
||||
type defaultDNSClientMaker struct{}
|
||||
|
||||
// Make implements dnsclientmaker.Make.
|
||||
func (*defaultDNSClientMaker) Make(config netx.Config, URL string) (childResolver, error) {
|
||||
return netx.NewDNSClient(config, URL)
|
||||
}
|
||||
Loading…
Reference in a new issue