* plugin/forward: retry on cached tcp connection closed by peer * fix linter warnings * fixed unit test * modify error message
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package forward
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/coredns/coredns/plugin/pkg/dnstest"
|
|
|
|
"github.com/miekg/dns"
|
|
)
|
|
|
|
func TestPersistent(t *testing.T) {
|
|
s := dnstest.NewServer(func(w dns.ResponseWriter, r *dns.Msg) {
|
|
ret := new(dns.Msg)
|
|
ret.SetReply(r)
|
|
w.WriteMsg(ret)
|
|
})
|
|
defer s.Close()
|
|
|
|
tr := newTransport(s.Addr, nil /* no TLS */)
|
|
defer tr.Stop()
|
|
|
|
c1, cache1, _ := tr.Dial("udp")
|
|
c2, cache2, _ := tr.Dial("udp")
|
|
c3, cache3, _ := tr.Dial("udp")
|
|
|
|
if cache1 || cache2 || cache3 {
|
|
t.Errorf("Expected non-cached connection")
|
|
}
|
|
|
|
tr.Yield(c1)
|
|
tr.Yield(c2)
|
|
tr.Yield(c3)
|
|
|
|
if x := tr.Len(); x != 3 {
|
|
t.Errorf("Expected cache size to be 3, got %d", x)
|
|
}
|
|
|
|
c4, cache4, _ := tr.Dial("udp")
|
|
if x := tr.Len(); x != 2 {
|
|
t.Errorf("Expected cache size to be 2, got %d", x)
|
|
}
|
|
|
|
c5, cache5, _ := tr.Dial("udp")
|
|
if x := tr.Len(); x != 1 {
|
|
t.Errorf("Expected cache size to be 1, got %d", x)
|
|
}
|
|
|
|
if cache4 == false || cache5 == false {
|
|
t.Errorf("Expected cached connection")
|
|
}
|
|
tr.Yield(c4)
|
|
tr.Yield(c5)
|
|
|
|
if x := tr.Len(); x != 3 {
|
|
t.Errorf("Expected cache size to be 3, got %d", x)
|
|
}
|
|
}
|