MCPcopy
hub / github.com/AdguardTeam/dnsproxy / TestExchangeCustomUpstreamConfigCache

Function TestExchangeCustomUpstreamConfigCache

proxy/proxy_internal_test.go:971–1043  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

969}
970
971func TestExchangeCustomUpstreamConfigCache(t *testing.T) {
972 prx := mustNew(t, &Config{
973 Logger: testLogger,
974 UDPListenAddr: []*net.UDPAddr{net.UDPAddrFromAddrPort(localhostAnyPort)},
975 TCPListenAddr: []*net.TCPAddr{net.TCPAddrFromAddrPort(localhostAnyPort)},
976 UpstreamConfig: newTestUpstreamConfig(t, defaultTimeout, testDefaultUpstreamAddr),
977 TrustedProxies: defaultTrustedProxies,
978 CacheEnabled: true,
979 DNSSECEnabled: true,
980 })
981
982 servicetest.RequireRun(t, prx, testTimeout)
983
984 var count int
985
986 ansIP := net.IP{4, 3, 2, 1}
987 exchangeFunc := func(m *dns.Msg) (resp *dns.Msg, err error) {
988 resp = &dns.Msg{}
989 resp.SetReply(m)
990 resp.Answer = append(resp.Answer, &dns.A{
991 Hdr: dns.RR_Header{
992 Name: m.Question[0].Name,
993 Class: dns.ClassINET,
994 Rrtype: dns.TypeA,
995 Ttl: defaultTestTTL,
996 },
997 A: ansIP,
998 })
999
1000 count++
1001
1002 return resp, nil
1003 }
1004 u := &dnsproxytest.Upstream{
1005 OnExchange: exchangeFunc,
1006 OnAddress: func() (addr string) { return "stub" },
1007 OnClose: func() (_ error) { panic(testutil.UnexpectedCall()) },
1008 }
1009
1010 customUpstreamConfig := NewCustomUpstreamConfig(
1011 &UpstreamConfig{Upstreams: []upstream.Upstream{u}},
1012 true,
1013 defaultCacheSize,
1014 prx.EnableEDNSClientSubnet,
1015 )
1016
1017 d := &DNSContext{
1018 CustomUpstreamConfig: customUpstreamConfig,
1019 Req: newHostTestMessage("host"),
1020 Addr: netip.MustParseAddrPort("1.2.3.0:1234"),
1021 }
1022
1023 ctx := testutil.ContextWithTimeout(t, defaultTimeout)
1024 err := prx.Resolve(ctx, d)
1025 require.NoError(t, err)
1026
1027 require.Equal(t, 1, count)
1028 assert.Equal(t, ansIP, firstIP(d.Res))

Callers

nothing calls this directly

Calls 7

ClearCacheMethod · 0.95
mustNewFunction · 0.85
newTestUpstreamConfigFunction · 0.85
NewCustomUpstreamConfigFunction · 0.85
newHostTestMessageFunction · 0.85
firstIPFunction · 0.85
ResolveMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…