dns

package
v0.0.0-...-1057ea9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2026 License: AGPL-3.0 Imports: 10 Imported by: 0

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

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 (m *MockResolver) LookupAddr(ctx context.Context, addr string) ([]string, error)

func (*MockResolver) LookupCNAME

func (m *MockResolver) LookupCNAME(ctx context.Context, host string) (string, error)

func (*MockResolver) LookupHost

func (m *MockResolver) LookupHost(ctx context.Context, host string) ([]string, error)

func (*MockResolver) LookupIP

func (m *MockResolver) LookupIP(ctx context.Context, network, host string) ([]net.IP, error)

func (*MockResolver) LookupIPAddr

func (m *MockResolver) LookupIPAddr(ctx context.Context, host string) ([]net.IPAddr, error)

func (*MockResolver) LookupMX

func (m *MockResolver) LookupMX(ctx context.Context, name string) ([]*net.MX, error)

func (*MockResolver) LookupNS

func (m *MockResolver) LookupNS(ctx context.Context, name string) ([]*net.NS, error)

func (*MockResolver) LookupNetIP

func (m *MockResolver) LookupNetIP(ctx context.Context, network, host string) ([]netip.Addr, error)

func (*MockResolver) LookupSRV

func (m *MockResolver) LookupSRV(ctx context.Context, service, proto, name string) (string, []*net.SRV, error)

func (*MockResolver) LookupTXT

func (m *MockResolver) LookupTXT(ctx context.Context, name string) ([]string, error)

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 (n *NetResolver) LookupAddr(ctx context.Context, addr string) ([]string, error)

func (*NetResolver) LookupCNAME

func (n *NetResolver) LookupCNAME(ctx context.Context, host string) (string, error)

func (*NetResolver) LookupHost

func (n *NetResolver) LookupHost(ctx context.Context, host string) ([]string, error)

func (*NetResolver) LookupIP

func (n *NetResolver) LookupIP(ctx context.Context, network, host string) ([]net.IP, error)

func (*NetResolver) LookupIPAddr

func (n *NetResolver) LookupIPAddr(ctx context.Context, host string) ([]net.IPAddr, error)

func (*NetResolver) LookupMX

func (n *NetResolver) LookupMX(ctx context.Context, name string) ([]*net.MX, error)

func (*NetResolver) LookupNS

func (n *NetResolver) LookupNS(ctx context.Context, name string) ([]*net.NS, error)

func (*NetResolver) LookupNetIP

func (n *NetResolver) LookupNetIP(ctx context.Context, network, host string) ([]netip.Addr, error)

func (*NetResolver) LookupSRV

func (n *NetResolver) LookupSRV(ctx context.Context, service, proto, name string) (string, []*net.SRV, error)

func (*NetResolver) LookupTXT

func (n *NetResolver) LookupTXT(ctx context.Context, name string) ([]string, error)

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL