diff --git a/internal/dnsforward/dns64_test.go b/internal/dnsforward/dns64_test.go index f3679b51..f1df9500 100644 --- a/internal/dnsforward/dns64_test.go +++ b/internal/dnsforward/dns64_test.go @@ -273,18 +273,22 @@ func TestServer_HandleDNSRequest_dns64(t *testing.T) { return resp, nil }) - s := createTestServer(t, &filtering.Config{}, ServerConfig{ - UDPListenAddrs: []*net.UDPAddr{{}}, - TCPListenAddrs: []*net.TCPAddr{{}}, - UseDNS64: true, - }, localUps) - client := &dns.Client{ Net: "tcp", Timeout: 1 * time.Second, } for _, tc := range testCases { + // TODO(e.burkov): It seems [proxy.Proxy] isn't intended to be reused + // right after stop, due to a data race in [proxy.Proxy.Init] method + // when setting an OOB size. As a temporary workaround, recreate the + // whole server for each test case. + s := createTestServer(t, &filtering.Config{}, ServerConfig{ + UDPListenAddrs: []*net.UDPAddr{{}}, + TCPListenAddrs: []*net.TCPAddr{{}}, + UseDNS64: true, + }, localUps) + t.Run(tc.name, func(t *testing.T) { s.conf.UpstreamConfig.Upstreams = []upstream.Upstream{newUps(tc.upsAns)} startDeferStop(t, s) diff --git a/scripts/make/go-test.sh b/scripts/make/go-test.sh index 8889316e..e37c7f18 100644 --- a/scripts/make/go-test.sh +++ b/scripts/make/go-test.sh @@ -40,7 +40,7 @@ readonly go count_flags='--count=1' cover_flags='--coverprofile=./coverage.txt' shuffle_flags='--shuffle=on' -timeout_flags="${TIMEOUT_FLAGS:---timeout=60s}" +timeout_flags="${TIMEOUT_FLAGS:---timeout=90s}" readonly count_flags cover_flags shuffle_flags timeout_flags "$go" test "$count_flags" "$cover_flags" "$race_flags" "$shuffle_flags" "$timeout_flags"\