aboutsummaryrefslogtreecommitdiff
path: root/plugin/etcd/multi_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/etcd/multi_test.go')
-rw-r--r--plugin/etcd/multi_test.go59
1 files changed, 59 insertions, 0 deletions
diff --git a/plugin/etcd/multi_test.go b/plugin/etcd/multi_test.go
new file mode 100644
index 000000000..56b5af265
--- /dev/null
+++ b/plugin/etcd/multi_test.go
@@ -0,0 +1,59 @@
+// +build etcd
+
+package etcd
+
+import (
+ "testing"
+
+ "github.com/coredns/coredns/plugin/etcd/msg"
+ "github.com/coredns/coredns/plugin/pkg/dnsrecorder"
+ "github.com/coredns/coredns/plugin/test"
+
+ "github.com/miekg/dns"
+)
+
+func TestMultiLookup(t *testing.T) {
+ etc := newEtcdMiddleware()
+ etc.Zones = []string{"skydns.test.", "miek.nl."}
+ etc.Fallthrough = true
+ etc.Next = test.ErrorHandler()
+
+ for _, serv := range servicesMulti {
+ set(t, etc, serv.Key, 0, serv)
+ defer delete(t, etc, serv.Key)
+ }
+ for _, tc := range dnsTestCasesMulti {
+ m := tc.Msg()
+
+ rec := dnsrecorder.New(&test.ResponseWriter{})
+ _, err := etc.ServeDNS(ctxt, rec, m)
+ if err != nil {
+ t.Errorf("expected no error, got %v\n", err)
+ return
+ }
+
+ resp := rec.Msg
+ test.SortAndCheck(t, resp, tc)
+ }
+}
+
+// Note the key is encoded as DNS name, while in "reality" it is a etcd path.
+var servicesMulti = []*msg.Service{
+ {Host: "dev.server1", Port: 8080, Key: "a.server1.dev.region1.skydns.test."},
+ {Host: "dev.server1", Port: 8080, Key: "a.server1.dev.region1.miek.nl."},
+ {Host: "dev.server1", Port: 8080, Key: "a.server1.dev.region1.example.org."},
+}
+
+var dnsTestCasesMulti = []test.Case{
+ {
+ Qname: "a.server1.dev.region1.skydns.test.", Qtype: dns.TypeSRV,
+ Answer: []dns.RR{test.SRV("a.server1.dev.region1.skydns.test. 300 SRV 10 100 8080 dev.server1.")},
+ },
+ {
+ Qname: "a.server1.dev.region1.miek.nl.", Qtype: dns.TypeSRV,
+ Answer: []dns.RR{test.SRV("a.server1.dev.region1.miek.nl. 300 SRV 10 100 8080 dev.server1.")},
+ },
+ {
+ Qname: "a.server1.dev.region1.example.org.", Qtype: dns.TypeSRV, Rcode: dns.RcodeServerFailure,
+ },
+}