Documentation
¶
Overview ¶
Package dns provides a Resolver interface for DNS lookups whose method signatures match net.Resolver. Use NewNetResolver for production and NewMockResolver for deterministic testing. MockResolver.Resolver returns a net.Resolver with a custom Dial that routes queries through the mock functions, so it can be used anywhere a net.Resolver is expected.
Index ¶
- type MockResolver
- func (m *MockResolver) LookupAddr(ctx context.Context, addr string) ([]string, error)
- func (m *MockResolver) LookupCNAME(ctx context.Context, host string) (string, error)
- func (m *MockResolver) LookupHost(ctx context.Context, host string) ([]string, error)
- func (m *MockResolver) LookupIP(ctx context.Context, network, host string) ([]net.IP, error)
- func (m *MockResolver) LookupIPAddr(ctx context.Context, host string) ([]net.IPAddr, error)
- func (m *MockResolver) LookupMX(ctx context.Context, name string) ([]*net.MX, error)
- func (m *MockResolver) LookupNS(ctx context.Context, name string) ([]*net.NS, error)
- func (m *MockResolver) LookupNetIP(ctx context.Context, network, host string) ([]netip.Addr, error)
- func (m *MockResolver) LookupSRV(ctx context.Context, service, proto, name string) (string, []*net.SRV, error)
- func (m *MockResolver) LookupTXT(ctx context.Context, name string) ([]string, error)
- func (m *MockResolver) Resolver() *net.Resolver
- type MockResolverConfig
- type NetResolver
- func (n *NetResolver) LookupAddr(ctx context.Context, addr string) ([]string, error)
- func (n *NetResolver) LookupCNAME(ctx context.Context, host string) (string, error)
- func (n *NetResolver) LookupHost(ctx context.Context, host string) ([]string, error)
- func (n *NetResolver) LookupIP(ctx context.Context, network, host string) ([]net.IP, error)
- func (n *NetResolver) LookupIPAddr(ctx context.Context, host string) ([]net.IPAddr, error)
- func (n *NetResolver) LookupMX(ctx context.Context, name string) ([]*net.MX, error)
- func (n *NetResolver) LookupNS(ctx context.Context, name string) ([]*net.NS, error)
- func (n *NetResolver) LookupNetIP(ctx context.Context, network, host string) ([]netip.Addr, error)
- func (n *NetResolver) LookupSRV(ctx context.Context, service, proto, name string) (string, []*net.SRV, error)
- func (n *NetResolver) LookupTXT(ctx context.Context, name string) ([]string, error)
- func (n *NetResolver) Resolver() *net.Resolver
- type Resolver
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type MockResolver ¶
type MockResolver struct {
// contains filtered or unexported fields
}
MockResolver implements Resolver with configurable function fields for testing. Create one with NewMockResolver.
func NewMockResolver ¶
func NewMockResolver(cfg MockResolverConfig) *MockResolver
NewMockResolver creates a MockResolver from the given configuration. Any nil function fields in cfg are replaced with safe no-op defaults.
func (*MockResolver) LookupAddr ¶
func (*MockResolver) LookupCNAME ¶
func (*MockResolver) LookupHost ¶
func (*MockResolver) LookupIPAddr ¶
func (*MockResolver) LookupNetIP ¶
func (*MockResolver) Resolver ¶
func (m *MockResolver) Resolver() *net.Resolver
Resolver returns a net.Resolver whose Dial function routes DNS queries through the configured mock functions.
type MockResolverConfig ¶
type MockResolverConfig struct {
LookupAddrFunc func(ctx context.Context, addr string) ([]string, error)
LookupCNAMEFunc func(ctx context.Context, host string) (string, error)
LookupHostFunc func(ctx context.Context, host string) ([]string, error)
LookupIPFunc func(ctx context.Context, network, host string) ([]net.IP, error)
LookupIPAddrFunc func(ctx context.Context, host string) ([]net.IPAddr, error)
LookupMXFunc func(ctx context.Context, name string) ([]*net.MX, error)
LookupNetIPFunc func(ctx context.Context, network, host string) ([]netip.Addr, error)
LookupNSFunc func(ctx context.Context, name string) ([]*net.NS, error)
LookupSRVFunc func(ctx context.Context, service, proto, name string) (string, []*net.SRV, error)
LookupTXTFunc func(ctx context.Context, name string) ([]string, error)
}
MockResolverConfig configures the behavior of a MockResolver. Each function field corresponds to a Resolver method. Nil fields receive defaults that return a "not implemented" error.
type NetResolver ¶
type NetResolver struct {
// contains filtered or unexported fields
}
NetResolver implements Resolver by delegating to a net.Resolver.
func NewNetResolver ¶
func NewNetResolver() *NetResolver
NewNetResolver returns a NetResolver backed by net.DefaultResolver.
func (*NetResolver) LookupAddr ¶
func (*NetResolver) LookupCNAME ¶
func (*NetResolver) LookupHost ¶
func (*NetResolver) LookupIPAddr ¶
func (*NetResolver) LookupNetIP ¶
func (*NetResolver) Resolver ¶
func (n *NetResolver) Resolver() *net.Resolver
type Resolver ¶
type Resolver interface {
LookupAddr(ctx context.Context, addr string) ([]string, error)
LookupCNAME(ctx context.Context, host string) (string, error)
LookupHost(ctx context.Context, host string) ([]string, error)
LookupIP(ctx context.Context, network, host string) ([]net.IP, error)
LookupIPAddr(ctx context.Context, host string) ([]net.IPAddr, error)
LookupMX(ctx context.Context, name string) ([]*net.MX, error)
LookupNetIP(ctx context.Context, network, host string) ([]netip.Addr, error)
LookupNS(ctx context.Context, name string) ([]*net.NS, error)
LookupSRV(ctx context.Context, service, proto, name string) (string, []*net.SRV, error)
LookupTXT(ctx context.Context, name string) ([]string, error)
// Resolver returns the underlying *[net.Resolver]. For [NetResolver] this
// is the real resolver; for [MockResolver] it is a resolver whose Dial
// function routes queries through the configured mock functions.
Resolver() *net.Resolver
}
Resolver abstracts DNS lookups for testability. The lookup method signatures match the corresponding methods on net.Resolver. Use NewNetResolver for production and NewMockResolver for tests.