feat: add support for system resolver in measurexlite (#858)

* feat: add support for system resolver in measurexlite

* more tests for coverage

* Apply suggestions from code review

Co-authored-by: decfox <decfox@github.com>
Co-authored-by: Simone Basso <bassosimone@gmail.com>
This commit is contained in:
DecFox 2022-08-11 21:48:25 +05:30 committed by GitHub
commit fbd7cd2b7e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 163 additions and 2 deletions

View file

@ -38,6 +38,10 @@ type Trace struct {
// this channel manually, ensure it has some buffer.
NetworkEvent chan *model.ArchivalNetworkEvent
// NewStdlibResolverFn is OPTIONAL and can be used to overide
// calls to the netxlite.NewStdlibResolver factory.
NewStdlibResolverFn func(logger model.Logger) model.Resolver
// NewParallelUDPResolverFn is OPTIONAL and can be used to overide
// calls to the netxlite.NewParallelUDPResolver factory.
NewParallelUDPResolverFn func(logger model.Logger, dialer model.Dialer, address string) model.Resolver
@ -129,6 +133,15 @@ func NewTrace(index int64, zeroTime time.Time) *Trace {
}
}
// newStdlibResolver indirectly calls the passed netxlite.NewStdlibResolver
// thus allowing us to mock this function for testing
func (tx *Trace) newStdlibResolver(logger model.Logger) model.Resolver {
if tx.NewStdlibResolverFn != nil {
return tx.NewStdlibResolverFn(logger)
}
return netxlite.NewStdlibResolver(logger)
}
// newParallelUDPResolver indirectly calls the passed netxlite.NewParallerUDPResolver
// thus allowing us to mock this function for testing
func (tx *Trace) newParallelUDPResolver(logger model.Logger, dialer model.Dialer, address string) model.Resolver {