diff options
author | 2016-04-11 07:56:38 +0100 | |
---|---|---|
committer | 2016-04-11 07:56:38 +0100 | |
commit | 4829b40efa7ce88a9029fcf4ada726c6d70e4735 (patch) | |
tree | ba66bcc93c468d581ce6a2e6d43b6178ef9258c2 /middleware/test/server.go | |
parent | 0ea2a6088dc95aea57bd6f502c5fb4b567623e66 (diff) | |
download | coredns-4829b40efa7ce88a9029fcf4ada726c6d70e4735.tar.gz coredns-4829b40efa7ce88a9029fcf4ada726c6d70e4735.tar.zst coredns-4829b40efa7ce88a9029fcf4ada726c6d70e4735.zip |
Rename middleware/testing (#103)
Rename to test and name the toplevel tests dir to test for consitency.
Diffstat (limited to 'middleware/test/server.go')
-rw-r--r-- | middleware/test/server.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/middleware/test/server.go b/middleware/test/server.go new file mode 100644 index 000000000..71b316107 --- /dev/null +++ b/middleware/test/server.go @@ -0,0 +1,53 @@ +package test + +import ( + "net" + "sync" + "time" + + "github.com/miekg/dns" +) + +func TCPServer(laddr string) (*dns.Server, string, error) { + l, err := net.Listen("tcp", laddr) + if err != nil { + return nil, "", err + } + + server := &dns.Server{Listener: l, ReadTimeout: time.Hour, WriteTimeout: time.Hour} + + waitLock := sync.Mutex{} + waitLock.Lock() + server.NotifyStartedFunc = waitLock.Unlock + + go func() { + server.ActivateAndServe() + l.Close() + }() + + waitLock.Lock() + return server, l.Addr().String(), nil +} + +func UDPServer(laddr string) (*dns.Server, string, chan bool, error) { + pc, err := net.ListenPacket("udp", laddr) + if err != nil { + return nil, "", nil, err + } + server := &dns.Server{PacketConn: pc, ReadTimeout: time.Hour, WriteTimeout: time.Hour} + + waitLock := sync.Mutex{} + waitLock.Lock() + server.NotifyStartedFunc = waitLock.Unlock + + stop := make(chan bool) + + go func() { + server.ActivateAndServe() + close(stop) + pc.Close() + }() + + waitLock.Lock() + return server, pc.LocalAddr().String(), stop, nil +} |