Pull request #408: ADG-8967-upd-golibs

Merge in GO/dnsproxy from ADG-8967-upd-golibs to master

Squashed commit of the following:

commit 4d65445abc60d8c64ffdedd24006f78f2d9abcba
Author: f.setrakov <[email protected]>
Date:   Wed Oct 8 13:16:53 2025 +0300

    all: rm default loggers

commit 06be98ffdcbcabefd2f178f029c244ccd5244be7
Author: f.setrakov <[email protected]>
Date:   Tue Oct 7 19:07:59 2025 +0300

    all: imp tests, upd golibs to tag

commit e5894f62069324f017aba158b78eeca6d0da028f
Author: f.setrakov <[email protected]>
Date:   Tue Oct 7 09:48:55 2025 +0300

    upstream: imp tests

commit 8e68b3987ede2633a471574a6841f45af938d2bd
Author: f.setrakov <[email protected]>
Date:   Fri Oct 3 19:17:18 2025 +0300

    all: upd golibs
This commit is contained in:
Fedor Setrakov
2025-10-08 16:07:31 +03:00
parent 156ce46db7
commit 44e6b62b86
16 changed files with 110 additions and 65 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ module github.com/AdguardTeam/dnsproxy
go 1.25.1
require (
github.com/AdguardTeam/golibs v0.34.1
github.com/AdguardTeam/golibs v0.35.0
github.com/ameshkov/dnscrypt/v2 v2.4.0
github.com/ameshkov/dnsstamps v1.0.3
github.com/beefsack/go-rate v0.0.0-20220214233405-116f4ca011a0
@@ -14,7 +14,7 @@ require (
// when TestUpstreamDoH_serverRestart/http3/second_try keeps failing.
github.com/quic-go/quic-go v0.53.0
github.com/stretchr/testify v1.11.1
golang.org/x/exp v0.0.0-20250813145105-42675adae3e6 // indirect
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b // indirect
golang.org/x/net v0.44.0
golang.org/x/sys v0.36.0
gonum.org/v1/gonum v0.16.0
+8 -4
View File
@@ -4,8 +4,12 @@ cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI=
cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ=
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
github.com/AdguardTeam/golibs v0.34.1 h1:RyBpZiXnJqlO3T+xjWldlxsEZDelmaFfKvXiJHDZZFQ=
github.com/AdguardTeam/golibs v0.34.1/go.mod h1:K4C2EbfSEM1zY5YXoti9SfbTAHN/kIX97LpDtCwORrM=
github.com/AdguardTeam/golibs v0.34.2-0.20251002170933-067fe882809b h1:qHsD0KwCAK4gDmobKpDyacAfscWJ6Ii392uc0DkRo6o=
github.com/AdguardTeam/golibs v0.34.2-0.20251002170933-067fe882809b/go.mod h1:y552twxCtvOD8KKQ7ESjo10KZBAE+HSj24yAuAvz9IA=
github.com/AdguardTeam/golibs v0.34.2-0.20251003135644-84486c1440c1 h1:2lQwC1hZq2b9zbu279+YgkBTTsOlYWWQR9Q0Cr+5vWg=
github.com/AdguardTeam/golibs v0.34.2-0.20251003135644-84486c1440c1/go.mod h1:y552twxCtvOD8KKQ7ESjo10KZBAE+HSj24yAuAvz9IA=
github.com/AdguardTeam/golibs v0.35.0 h1:O990+tbZ5W5yB0ybtaUJy4FUb0bXxyzeUC7t8cr1pCg=
github.com/AdguardTeam/golibs v0.35.0/go.mod h1:y552twxCtvOD8KKQ7ESjo10KZBAE+HSj24yAuAvz9IA=
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
@@ -137,8 +141,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI=
golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8=
golang.org/x/exp v0.0.0-20250813145105-42675adae3e6 h1:SbTAbRFnd5kjQXbczszQ0hdk3ctwYf3qBNH9jIsGclE=
golang.org/x/exp v0.0.0-20250813145105-42675adae3e6/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4=
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b h1:DXr+pvt3nC887026GRP39Ej11UATqWDmWuS99x26cD0=
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4=
golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621 h1:Yl4H5w2RV7L/dvSHp2GerziT5K2CORgFINPaMFxWGWw=
golang.org/x/exp/typeparams v0.0.0-20250911091902-df9299821621/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms=
golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U=
+11 -4
View File
@@ -39,7 +39,7 @@ func createProxyConfig(
return nil, err
}
hosts, err := handler.ReadHosts(hostsFiles)
hosts, err := handler.ReadHosts(ctx, l, hostsFiles)
if err != nil {
return nil, fmt.Errorf("reading hosts files: %w", err)
}
@@ -228,7 +228,7 @@ func initBootstrap(
switch len(resolvers) {
case 0:
etcHosts, hostsErr := upstream.NewDefaultHostsResolver(osutil.RootDirFS(), l)
etcHosts, hostsErr := upstream.NewDefaultHostsResolver(ctx, osutil.RootDirFS(), l)
if hostsErr != nil {
l.ErrorContext(ctx, "creating default hosts resolver", slogutil.KeyError, hostsErr)
@@ -268,7 +268,11 @@ func (conf *configuration) initEDNS(
}
// initBogusNXDomain inits BogusNXDomain structure.
func (conf *configuration) initBogusNXDomain(ctx context.Context, l *slog.Logger, config *proxy.Config) {
func (conf *configuration) initBogusNXDomain(
ctx context.Context,
l *slog.Logger,
config *proxy.Config,
) {
if len(conf.BogusNXDomain) == 0 {
return
}
@@ -507,7 +511,10 @@ func loadServersList(sources []string) []string {
// hostsFiles returns the list of hosts files to resolve from. It's empty if
// resolving from hosts files is disabled.
func (conf *configuration) hostsFiles(ctx context.Context, l *slog.Logger) (paths []string, err error) {
func (conf *configuration) hostsFiles(
ctx context.Context,
l *slog.Logger,
) (paths []string, err error) {
if !conf.HostsFileEnabled {
l.DebugContext(ctx, "hosts files are disabled")
+5 -2
View File
@@ -20,6 +20,9 @@ import (
"github.com/stretchr/testify/require"
)
// testLogger is a common logger for tests.
var testLogger = slogutil.NewDiscardLogger()
// TODO(e.burkov): Remove when [hostsfile.DefaultStorage] stops using [log].
func TestMain(m *testing.M) {
testutil.DiscardLogOutput(m)
@@ -87,7 +90,8 @@ func TestDefault_resolveFromHosts(t *testing.T) {
absPath, err := filepath.Abs(path.Join("testdata", t.Name(), "hosts"))
require.NoError(t, err)
strg, err := ReadHosts([]string{absPath, relPath})
ctx := testutil.ContextWithTimeout(t, defaultTimeout)
strg, err := ReadHosts(ctx, testLogger, []string{absPath, relPath})
require.NoError(t, err)
hdlr := NewDefault(&DefaultConfig{
@@ -185,7 +189,6 @@ func TestDefault_resolveFromHosts(t *testing.T) {
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
ctx := testutil.ContextWithTimeout(t, defaultTimeout)
resp := hdlr.resolveFromHosts(ctx, tc.req)
if tc.wantAns == nil {
assert.Nil(t, resp)
+12 -5
View File
@@ -3,6 +3,7 @@ package handler
import (
"context"
"fmt"
"log/slog"
"net/netip"
"os"
"slices"
@@ -35,13 +36,19 @@ func (emptyStorage) ByName(_ string) (addrs []netip.Addr) {
// ReadHosts reads the hosts files from the file system and returns a storage
// with parsed records. strg is always usable even if an error occurred.
func ReadHosts(paths []string) (strg hostsfile.Storage, err error) {
func ReadHosts(
ctx context.Context,
l *slog.Logger,
paths []string,
) (strg hostsfile.Storage, err error) {
// Don't check the error since it may only appear when any readers used.
defaultStrg, _ := hostsfile.NewDefaultStorage()
defaultStrg, _ := hostsfile.NewDefaultStorage(ctx, &hostsfile.DefaultStorageConfig{
Logger: l,
})
var errs []error
for _, path := range paths {
err = readHostsFile(defaultStrg, path)
err = readHostsFile(ctx, defaultStrg, path)
if err != nil {
// Don't wrap the error since it's informative enough as is.
errs = append(errs, err)
@@ -64,7 +71,7 @@ func ReadHosts(paths []string) (strg hostsfile.Storage, err error) {
}
// readHostsFile reads the hosts file at path and parses it into strg.
func readHostsFile(strg *hostsfile.DefaultStorage, path string) (err error) {
func readHostsFile(ctx context.Context, strg *hostsfile.DefaultStorage, path string) (err error) {
// #nosec G304 -- Trust the file path from the configuration file.
f, err := os.Open(path)
if err != nil {
@@ -74,7 +81,7 @@ func readHostsFile(strg *hostsfile.DefaultStorage, path string) (err error) {
defer func() { err = errors.WithDeferred(err, f.Close()) }()
err = hostsfile.Parse(strg, f, nil)
err = hostsfile.Parse(ctx, strg, f, nil)
if err != nil {
return fmt.Errorf("parsing hosts file %q: %w", path, err)
}
+6 -7
View File
@@ -10,7 +10,6 @@ import (
"time"
"github.com/AdguardTeam/golibs/errors"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/netutil"
"github.com/AdguardTeam/golibs/testutil"
"github.com/ameshkov/dnscrypt/v2"
@@ -45,7 +44,7 @@ func startTestDNSCryptServer(
ProviderName: rc.ProviderName,
ResolverCert: cert,
Handler: h,
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
}
testutil.CleanupAndRequireSuccess(tb, func() (err error) {
ctx, cancel := context.WithTimeout(context.Background(), timeout)
@@ -95,7 +94,7 @@ func TestUpstreamDNSCrypt(t *testing.T) {
// AdGuard DNS (DNSCrypt)
address := "sdns://AQMAAAAAAAAAETk0LjE0MC4xNC4xNDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20"
u, err := AddressToUpstream(address, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Timeout: dialTimeout,
})
require.NoError(t, err)
@@ -141,7 +140,7 @@ func TestDNSCrypt_Exchange_truncated(t *testing.T) {
srvStamp := startTestDNSCryptServer(t, rc, h)
u, err := AddressToUpstream(srvStamp.String(), &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Timeout: timeout,
})
require.NoError(t, err)
@@ -173,7 +172,7 @@ func TestDNSCrypt_Exchange_deadline(t *testing.T) {
// Use a shorter timeout to speed up the test.
u, err := AddressToUpstream(srvStamp.String(), &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Timeout: 100 * time.Millisecond,
})
require.NoError(t, err)
@@ -204,7 +203,7 @@ func TestDNSCrypt_Exchange_dialFail(t *testing.T) {
// Use a shorter timeout to speed up the test.
u, err = AddressToUpstream(srvStamp.String(), &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Timeout: 100 * time.Millisecond,
})
require.NoError(t, err)
@@ -227,7 +226,7 @@ func TestDNSCrypt_Exchange_dialFail(t *testing.T) {
// Use a shorter timeout to speed up the test.
u, err = AddressToUpstream(srvStamp.String(), &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Timeout: 100 * time.Millisecond,
VerifyDNSCryptCertificate: func(cert *dnscrypt.Cert) (err error) {
return validationErr
+4 -5
View File
@@ -15,7 +15,6 @@ import (
"testing"
"time"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/testutil"
"github.com/miekg/dns"
"github.com/quic-go/quic-go"
@@ -77,7 +76,7 @@ func TestUpstreamDoH(t *testing.T) {
var lastState tls.ConnectionState
opts := &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
InsecureSkipVerify: true,
HTTPVersions: tc.httpVersions,
VerifyConnection: func(state tls.ConnectionState) (err error) {
@@ -186,7 +185,7 @@ func TestUpstreamDoH_raceReconnect(t *testing.T) {
// race test.
address := fmt.Sprintf("https://%s/dns-query", srv.addr)
opts := &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
InsecureSkipVerify: true,
HTTPVersions: tc.httpVersions,
Timeout: timeout,
@@ -232,7 +231,7 @@ func TestUpstreamDoH_serverRestart(t *testing.T) {
var err error
u, err = AddressToUpstream(upsAddr, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
InsecureSkipVerify: true,
HTTPVersions: tc.httpVersions,
Timeout: 100 * time.Millisecond,
@@ -281,7 +280,7 @@ func TestUpstreamDoH_0RTT(t *testing.T) {
tracer := &quicTracer{}
address := fmt.Sprintf("h3://%s/dns-query", srv.addr)
u, err := AddressToUpstream(address, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
InsecureSkipVerify: true,
QUICTracer: tracer.TracerForConnection,
})
+5 -5
View File
@@ -33,7 +33,7 @@ func TestUpstreamDoQ(t *testing.T) {
address := fmt.Sprintf("quic://%s", srv.addr)
var lastState tls.ConnectionState
opts := &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
VerifyConnection: func(state tls.ConnectionState) error {
lastState = state
@@ -89,7 +89,7 @@ func TestUpstream_Exchange_quicServerCloseConn(t *testing.T) {
// Create a DNS-over-QUIC upstream.
address := fmt.Sprintf("quic://%s", srv.addr)
u, err := AddressToUpstream(address, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
RootCAs: rootCAs,
})
@@ -154,7 +154,7 @@ func TestUpstreamDoQ_serverRestart(t *testing.T) {
u, err = AddressToUpstream(
upsStr,
&Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
RootCAs: rootCAs,
Timeout: 100 * time.Millisecond,
},
@@ -191,7 +191,7 @@ func TestUpstreamDoQ_0RTT(t *testing.T) {
tracer := &quicTracer{}
address := fmt.Sprintf("quic://%s", srv.addr)
u, err := AddressToUpstream(address, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
QUICTracer: tracer.TracerForConnection,
RootCAs: rootCAs,
})
@@ -414,7 +414,7 @@ func startDoQServer(t *testing.T, tlsConf *tls.Config, port int) (s *testDoQServ
listener: listen,
// TODO(d.kolyshev): Add a concurrent safe [slog.Handler] wrapper for
// [testing.TB] log function.
logger: slogutil.NewDiscardLogger(),
logger: testLogger,
conns: map[*quic.Conn]struct{}{},
connsMu: &sync.Mutex{},
}
+5 -6
View File
@@ -11,7 +11,6 @@ import (
"testing"
"time"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/testutil"
"github.com/miekg/dns"
"github.com/stretchr/testify/assert"
@@ -31,7 +30,7 @@ func TestUpstream_dnsOverTLS(t *testing.T) {
// Create a DoT upstream that we'll be testing.
addr := fmt.Sprintf("tls://127.0.0.1:%d", srv.port)
u, err := AddressToUpstream(addr, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
InsecureSkipVerify: true,
})
require.NoError(t, err)
@@ -58,7 +57,7 @@ func TestUpstream_dnsOverTLS_race(t *testing.T) {
// Creating a DoT upstream that we will be testing.
addr := fmt.Sprintf("tls://127.0.0.1:%d", srv.port)
u, err := AddressToUpstream(addr, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
InsecureSkipVerify: true,
})
require.NoError(t, err)
@@ -101,7 +100,7 @@ func TestUpstream_dnsOverTLS_poolReconnect(t *testing.T) {
Host: srv.srv.Listener.Addr().String(),
}).String()
u, err := AddressToUpstream(addr, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
InsecureSkipVerify: true,
VerifyConnection: func(state tls.ConnectionState) error {
lastState = state
@@ -150,7 +149,7 @@ func TestUpstream_dnsOverTLS_poolDeadline(t *testing.T) {
Host: srv.srv.Listener.Addr().String(),
}).String()
u, err := AddressToUpstream(addr, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
InsecureSkipVerify: true,
})
require.NoError(t, err)
@@ -277,7 +276,7 @@ func BenchmarkDoTUpstream(b *testing.B) {
}).String()
u, err := AddressToUpstream(addr, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
InsecureSkipVerify: true,
})
require.NoError(b, err)
+19 -6
View File
@@ -30,7 +30,11 @@ func NewHostsResolver(hosts hostsfile.Storage) (hr *HostsResolver) {
// provided by the [hostsfile.DefaultHostsPaths] and read from rootFSys. In
// case the file by any default path doesn't exist it adds a log debug record.
// If l is nil, [slog.Default] is used.
func NewDefaultHostsResolver(rootFSys fs.FS, l *slog.Logger) (hr *HostsResolver, err error) {
func NewDefaultHostsResolver(
ctx context.Context,
rootFSys fs.FS,
l *slog.Logger,
) (hr *HostsResolver, err error) {
if l == nil {
l = slog.Default()
}
@@ -41,9 +45,12 @@ func NewDefaultHostsResolver(rootFSys fs.FS, l *slog.Logger) (hr *HostsResolver,
}
// The error is always nil here since no readers passed.
strg, _ := hostsfile.NewDefaultStorage()
strg, _ := hostsfile.NewDefaultStorage(ctx, &hostsfile.DefaultStorageConfig{
Logger: l,
})
for _, filename := range paths {
err = parseHostsFile(rootFSys, strg, filename, l)
err = parseHostsFile(ctx, rootFSys, strg, filename, l)
if err != nil {
// Don't wrap the error since it's already informative enough as is.
return nil, err
@@ -54,11 +61,17 @@ func NewDefaultHostsResolver(rootFSys fs.FS, l *slog.Logger) (hr *HostsResolver,
}
// parseHostsFile reads a single hosts file from fsys and parses it into hosts.
func parseHostsFile(fsys fs.FS, hosts hostsfile.Set, filename string, l *slog.Logger) (err error) {
func parseHostsFile(
ctx context.Context,
fsys fs.FS,
hosts hostsfile.Set,
filename string,
l *slog.Logger,
) (err error) {
f, err := fsys.Open(filename)
if err != nil {
if errors.Is(err, fs.ErrNotExist) {
l.Debug("hosts file does not exist", "filename", filename)
l.DebugContext(ctx, "hosts file does not exist", "filename", filename)
return nil
}
@@ -69,7 +82,7 @@ func parseHostsFile(fsys fs.FS, hosts hostsfile.Set, filename string, l *slog.Lo
defer func() { err = errors.WithDeferred(err, f.Close()) }()
return hostsfile.Parse(hosts, f, nil)
return hostsfile.Parse(ctx, hosts, f, nil)
}
// type check
+4 -3
View File
@@ -8,7 +8,6 @@ import (
"github.com/AdguardTeam/dnsproxy/upstream"
"github.com/AdguardTeam/golibs/hostsfile"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -35,7 +34,8 @@ func TestHostsResolver_LookupNetIP(t *testing.T) {
},
}
hr, err := upstream.NewDefaultHostsResolver(fsys, slogutil.NewDiscardLogger())
ctx := testutil.ContextWithTimeout(t, testTimeout)
hr, err := upstream.NewDefaultHostsResolver(ctx, fsys, testLogger)
require.NoError(t, err)
testCases := []struct {
@@ -93,7 +93,8 @@ func TestHostsResolver_LookupNetIP(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
var addrs []netip.Addr
addrs, err = hr.LookupNetIP(context.Background(), tc.net, tc.host)
ctx = testutil.ContextWithTimeout(t, testTimeout)
addrs, err = hr.LookupNetIP(ctx, tc.net, tc.host)
require.NoError(t, err)
assert.Equal(t, tc.wantAddrs, addrs)
+1 -2
View File
@@ -6,7 +6,6 @@ import (
"testing"
"time"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/testutil"
"github.com/miekg/dns"
"github.com/stretchr/testify/assert"
@@ -24,7 +23,7 @@ func TestExchangeParallel(t *testing.T) {
for _, s := range upstreamList {
u, err := AddressToUpstream(s, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Timeout: timeout,
})
if err != nil {
+3 -4
View File
@@ -9,7 +9,6 @@ import (
"time"
"github.com/AdguardTeam/golibs/errors"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/testutil"
"github.com/miekg/dns"
"github.com/stretchr/testify/assert"
@@ -29,7 +28,7 @@ func TestUpstream_plainDNS(t *testing.T) {
addr := fmt.Sprintf("127.0.0.1:%d", srv.port)
u, err := AddressToUpstream(addr, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
})
require.NoError(t, err)
testutil.CleanupAndRequireSuccess(t, u.Close)
@@ -51,7 +50,7 @@ func TestUpstream_plainDNS_badID(t *testing.T) {
addr := fmt.Sprintf("127.0.0.1:%d", srv.port)
u, err := AddressToUpstream(addr, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
// Use a shorter timeout to speed up the test.
Timeout: 100 * time.Millisecond,
})
@@ -126,7 +125,7 @@ func TestUpstream_plainDNS_fallbackToTCP(t *testing.T) {
addr := fmt.Sprintf("127.0.0.1:%d", srv.port)
u, err := AddressToUpstream(addr, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
// Use a shorter timeout to speed up the test.
Timeout: 100 * time.Millisecond,
})
+1 -2
View File
@@ -10,7 +10,6 @@ import (
"github.com/AdguardTeam/dnsproxy/internal/dnsproxytest"
"github.com/AdguardTeam/dnsproxy/upstream"
"github.com/AdguardTeam/golibs/errors"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/testutil"
"github.com/miekg/dns"
"github.com/stretchr/testify/assert"
@@ -49,7 +48,7 @@ func TestNewUpstreamResolver_validity(t *testing.T) {
t.Parallel()
withTimeoutOpt := &upstream.Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Timeout: 3 * time.Second,
}
+11 -8
View File
@@ -28,6 +28,9 @@ import (
"github.com/stretchr/testify/require"
)
// testLogger is common logger for tests.
var testLogger = slogutil.NewDiscardLogger()
// TODO(ameshkov): Make tests here not depend on external servers.
// TODO(d.kolyshev): Remove this after quic-go has migrated to slog.
@@ -52,14 +55,14 @@ func TestUpstream_bootstrapTimeout(t *testing.T) {
testutil.CleanupAndRequireSuccess(t, udpListener.Close)
rslv, err := NewUpstreamResolver(udpListener.LocalAddr().String(), &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Timeout: timeout,
})
require.NoError(t, err)
// Create an upstream that uses this faulty bootstrap.
u, err := AddressToUpstream("tls://random-domain-name", &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Bootstrap: NewCachingResolver(rslv),
Timeout: timeout,
})
@@ -114,7 +117,7 @@ func TestUpstreams(t *testing.T) {
const upsTimeout = 10 * time.Second
l := slogutil.NewDiscardLogger()
l := testLogger
googleRslv, err := NewUpstreamResolver("8.8.8.8:53", &Options{
Logger: l,
@@ -234,7 +237,7 @@ func TestAddressToUpstream(t *testing.T) {
require.NoError(t, err)
opt := &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Bootstrap: NewCachingResolver(cloudflareRslv),
}
@@ -385,13 +388,13 @@ func TestUpstreamDoTBootstrap(t *testing.T) {
for _, tc := range upstreams {
t.Run(tc.address, func(t *testing.T) {
rslv, err := NewUpstreamResolver(tc.bootstrap, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Timeout: timeout,
})
require.NoError(t, err)
u, err := AddressToUpstream(tc.address, &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Bootstrap: NewCachingResolver(rslv),
Timeout: timeout,
})
@@ -432,7 +435,7 @@ func TestUpstreamsInvalidBootstrap(t *testing.T) {
bootstrap: []string{"1.2.3.4:55", "8.8.8.8"},
}}
l := slogutil.NewDiscardLogger()
l := testLogger
for _, tc := range upstreams {
t.Run(tc.address, func(t *testing.T) {
@@ -519,7 +522,7 @@ func TestAddressToUpstream_StaticResolver(t *testing.T) {
t.Parallel()
opts := &Options{
Logger: slogutil.NewDiscardLogger(),
Logger: testLogger,
Bootstrap: tc.rslv,
Timeout: timeout,
InsecureSkipVerify: true,
+13
View File
@@ -0,0 +1,13 @@
package upstream_test
import (
"time"
"github.com/AdguardTeam/golibs/logutil/slogutil"
)
// testTimeout is common timeout for tests.
const testTimeout = 1 * time.Second
// testLogger is common logger for tests.
var testLogger = slogutil.NewDiscardLogger()