mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-12-16 03:45:45 +03:00
d4c3a43bcb
Merge in DNS/adguard-home from add-dnssvc to master
Squashed commit of the following:
commit 55f4f114bab65a03c0d65383e89020a7356cff32
Merge: 95dc28d9 6e63757f
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Mon Aug 15 20:53:07 2022 +0300
Merge branch 'master' into add-dnssvc
commit 95dc28d9d77d06e8ac98c1e6772557bffbf1705b
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Mon Aug 15 20:52:50 2022 +0300
all: imp tests, docs
commit 0d9d02950d84afd160b4b1c118da856cee6f12e5
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Thu Aug 11 19:27:59 2022 +0300
all: imp docs
commit 8990e038a81da4430468da12fcebedf79fe14df6
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Thu Aug 11 19:05:29 2022 +0300
all: imp tests more
commit 92730d93a2a1ac77888c2655508e43efaf0e9fde
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Thu Aug 11 18:37:48 2022 +0300
all: imp tests more
commit 8cd45ba30da7ac310e9dc666fb2af438e577b02d
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Thu Aug 11 18:11:15 2022 +0300
all: add v1 dnssvc stub; refactor tests
90 lines
1.9 KiB
Go
90 lines
1.9 KiB
Go
package dnssvc_test
|
|
|
|
import (
|
|
"context"
|
|
"net/netip"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/AdguardTeam/AdGuardHome/internal/aghtest"
|
|
"github.com/AdguardTeam/AdGuardHome/internal/v1/dnssvc"
|
|
"github.com/AdguardTeam/dnsproxy/upstream"
|
|
"github.com/miekg/dns"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestMain(m *testing.M) {
|
|
aghtest.DiscardLogOutput(m)
|
|
}
|
|
|
|
// testTimeout is the common timeout for tests.
|
|
const testTimeout = 100 * time.Millisecond
|
|
|
|
func TestService(t *testing.T) {
|
|
const (
|
|
bootstrapAddr = "bootstrap.example"
|
|
upstreamAddr = "upstream.example"
|
|
)
|
|
|
|
ups := &aghtest.UpstreamMock{
|
|
OnAddress: func() (addr string) {
|
|
return upstreamAddr
|
|
},
|
|
OnExchange: func(req *dns.Msg) (resp *dns.Msg, err error) {
|
|
resp = (&dns.Msg{}).SetReply(req)
|
|
|
|
return resp, nil
|
|
},
|
|
}
|
|
|
|
c := &dnssvc.Config{
|
|
Addresses: []netip.AddrPort{netip.MustParseAddrPort("127.0.0.1:0")},
|
|
Upstreams: []upstream.Upstream{ups},
|
|
BootstrapServers: []string{bootstrapAddr},
|
|
UpstreamServers: []string{upstreamAddr},
|
|
UpstreamTimeout: testTimeout,
|
|
}
|
|
|
|
svc, err := dnssvc.New(c)
|
|
require.NoError(t, err)
|
|
|
|
err = svc.Start()
|
|
require.NoError(t, err)
|
|
|
|
gotConf := svc.Config()
|
|
require.NotNil(t, gotConf)
|
|
require.Len(t, gotConf.Addresses, 1)
|
|
|
|
addr := gotConf.Addresses[0]
|
|
|
|
t.Run("dns", func(t *testing.T) {
|
|
req := &dns.Msg{
|
|
MsgHdr: dns.MsgHdr{
|
|
Id: dns.Id(),
|
|
RecursionDesired: true,
|
|
},
|
|
Question: []dns.Question{{
|
|
Name: "example.com.",
|
|
Qtype: dns.TypeA,
|
|
Qclass: dns.ClassINET,
|
|
}},
|
|
}
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
|
|
defer cancel()
|
|
|
|
cli := &dns.Client{}
|
|
resp, _, excErr := cli.ExchangeContext(ctx, req, addr.String())
|
|
require.NoError(t, excErr)
|
|
|
|
assert.NotNil(t, resp)
|
|
})
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
|
|
defer cancel()
|
|
|
|
err = svc.Shutdown(ctx)
|
|
require.NoError(t, err)
|
|
}
|