mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-11-25 14:35:48 +03:00
996c6b3ee3
Squashed commit of the following:
commit ba1e7b12cf7c0dc3ffab508d59c149f6c0930548
Merge: 8a94433ec ed86af582
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date: Tue Jul 25 13:43:25 2023 +0300
Merge branch 'master' into AG-24132-rdns-ttl
commit 8a94433ec119d2158c166dd0222f57917908f3ad
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date: Mon Jul 24 19:30:21 2023 +0300
all: imp docs
commit 4c1a3676b7be7ac4295c4e28550ddb6eb79a35d4
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date: Mon Jul 24 13:13:34 2023 +0300
all: add rdns ttl
93 lines
1.9 KiB
Go
93 lines
1.9 KiB
Go
package rdns_test
|
|
|
|
import (
|
|
"net/netip"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/AdguardTeam/AdGuardHome/internal/aghtest"
|
|
"github.com/AdguardTeam/AdGuardHome/internal/rdns"
|
|
"github.com/AdguardTeam/golibs/netutil"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestDefault_Process(t *testing.T) {
|
|
ip1 := netip.MustParseAddr("1.2.3.4")
|
|
revAddr1, err := netutil.IPToReversedAddr(ip1.AsSlice())
|
|
require.NoError(t, err)
|
|
|
|
ip2 := netip.MustParseAddr("4.3.2.1")
|
|
revAddr2, err := netutil.IPToReversedAddr(ip2.AsSlice())
|
|
require.NoError(t, err)
|
|
|
|
localIP := netip.MustParseAddr("192.168.0.1")
|
|
localRevAddr1, err := netutil.IPToReversedAddr(localIP.AsSlice())
|
|
require.NoError(t, err)
|
|
|
|
config := &rdns.Config{
|
|
CacheSize: 100,
|
|
CacheTTL: time.Hour,
|
|
}
|
|
|
|
testCases := []struct {
|
|
name string
|
|
addr netip.Addr
|
|
want string
|
|
}{{
|
|
name: "first",
|
|
addr: ip1,
|
|
want: revAddr1,
|
|
}, {
|
|
name: "second",
|
|
addr: ip2,
|
|
want: revAddr2,
|
|
}, {
|
|
name: "empty",
|
|
addr: netip.MustParseAddr("0.0.0.0"),
|
|
want: "",
|
|
}, {
|
|
name: "private",
|
|
addr: localIP,
|
|
want: localRevAddr1,
|
|
}}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
hit := 0
|
|
onExchange := func(ip netip.Addr) (host string, ttl time.Duration, err error) {
|
|
hit++
|
|
|
|
switch ip {
|
|
case ip1:
|
|
return revAddr1, 0, nil
|
|
case ip2:
|
|
return revAddr2, 0, nil
|
|
case localIP:
|
|
return localRevAddr1, 0, nil
|
|
default:
|
|
return "", 0, nil
|
|
}
|
|
}
|
|
exchanger := &aghtest.Exchanger{
|
|
OnExchange: onExchange,
|
|
}
|
|
|
|
config.Exchanger = exchanger
|
|
r := rdns.New(config)
|
|
|
|
got, changed := r.Process(tc.addr)
|
|
require.True(t, changed)
|
|
|
|
assert.Equal(t, tc.want, got)
|
|
assert.Equal(t, 1, hit)
|
|
|
|
// From cache.
|
|
got, changed = r.Process(tc.addr)
|
|
require.False(t, changed)
|
|
|
|
assert.Equal(t, tc.want, got)
|
|
assert.Equal(t, 1, hit)
|
|
})
|
|
}
|
|
}
|