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

Function TestECSProxy

proxy/proxy_internal_test.go:1084–1197  ·  view source on GitHub ↗

Resolve the same host with the different client subnet values

(t *testing.T)

Source from the content-addressed store, hash-verified

1082
1083// Resolve the same host with the different client subnet values
1084func TestECSProxy(t *testing.T) {
1085 var (
1086 ip1230 = net.IP{1, 2, 3, 0}
1087 ip2230 = net.IP{2, 2, 3, 0}
1088 ip4321 = net.IP{4, 3, 2, 1}
1089 ip4322 = net.IP{4, 3, 2, 2}
1090 ip4323 = net.IP{4, 3, 2, 3}
1091 )
1092
1093 u := &testUpstream{
1094 ans: []dns.RR{&dns.A{
1095 Hdr: dns.RR_Header{Rrtype: dns.TypeA, Name: "host.", Ttl: 60},
1096 A: ip4321,
1097 }},
1098 ecsIP: ip1230,
1099 }
1100
1101 prx := mustNew(t, &Config{
1102 Logger: testLogger,
1103 UDPListenAddr: []*net.UDPAddr{net.UDPAddrFromAddrPort(localhostAnyPort)},
1104 TCPListenAddr: []*net.TCPAddr{net.TCPAddrFromAddrPort(localhostAnyPort)},
1105 UpstreamConfig: &UpstreamConfig{
1106 Upstreams: []upstream.Upstream{u},
1107 },
1108 TrustedProxies: defaultTrustedProxies,
1109 DNSSECEnabled: true,
1110 EnableEDNSClientSubnet: true,
1111 CacheEnabled: true,
1112 })
1113
1114 servicetest.RequireRun(t, prx, testTimeout)
1115
1116 t.Run("cache_subnet", func(t *testing.T) {
1117 d := &DNSContext{
1118 Req: newHostTestMessage("host"),
1119 Addr: netip.MustParseAddrPort("1.2.3.0:1234"),
1120 }
1121
1122 ctx := testutil.ContextWithTimeout(t, defaultTimeout)
1123 err := prx.Resolve(ctx, d)
1124 require.NoError(t, err)
1125
1126 assert.Equal(t, net.IP{4, 3, 2, 1}, firstIP(d.Res))
1127 assert.Equal(t, ip1230, u.ecsReqIP)
1128 })
1129
1130 t.Run("serve_subnet_cache", func(t *testing.T) {
1131 d := &DNSContext{
1132 Req: newHostTestMessage("host"),
1133 Addr: netip.MustParseAddrPort("1.2.3.1:1234"),
1134 }
1135 u.ans, u.ecsIP, u.ecsReqIP = nil, nil, nil
1136
1137 ctx := testutil.ContextWithTimeout(t, defaultTimeout)
1138 err := prx.Resolve(ctx, d)
1139 require.NoError(t, err)
1140
1141 assert.Equal(t, ip4321, firstIP(d.Res))

Callers

nothing calls this directly

Calls 4

mustNewFunction · 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…