aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/kubernetes_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/kubernetes/kubernetes_test.go')
-rw-r--r--middleware/kubernetes/kubernetes_test.go82
1 files changed, 82 insertions, 0 deletions
diff --git a/middleware/kubernetes/kubernetes_test.go b/middleware/kubernetes/kubernetes_test.go
index 4f748565a..f0b434cc6 100644
--- a/middleware/kubernetes/kubernetes_test.go
+++ b/middleware/kubernetes/kubernetes_test.go
@@ -9,7 +9,9 @@ import (
"github.com/miekg/dns"
"k8s.io/client-go/1.5/pkg/api"
+ "github.com/coredns/coredns/middleware"
"github.com/coredns/coredns/middleware/etcd/msg"
+ "github.com/coredns/coredns/request"
)
func TestRecordForTXT(t *testing.T) {
@@ -277,3 +279,83 @@ func TestIpFromPodName(t *testing.T) {
}
}
}
+
+type APIConnServiceTest struct{}
+
+func (APIConnServiceTest) Run() {
+ return
+}
+
+func (APIConnServiceTest) Stop() error {
+ return nil
+}
+
+func (APIConnServiceTest) ServiceList() []*api.Service {
+ svcs := []*api.Service{
+ {
+ ObjectMeta: api.ObjectMeta{
+ Name: "external",
+ Namespace: "testns",
+ },
+ Spec: api.ServiceSpec{
+ ExternalName: "coredns.io",
+ Ports: []api.ServicePort{{
+ Name: "http",
+ Protocol: "tcp",
+ Port: 80,
+ }},
+ },
+ },
+ }
+ return svcs
+
+}
+
+func (APIConnServiceTest) PodIndex(string) []interface{} {
+ return nil
+}
+
+func (APIConnServiceTest) EndpointsList() api.EndpointsList {
+ return api.EndpointsList{}
+}
+
+func TestServices(t *testing.T) {
+
+ k := Kubernetes{Zones: []string{"interwebs.test"}}
+ k.APIConn = &APIConnServiceTest{}
+
+ type svcAns struct {
+ host string
+ key string
+ }
+ type svcTest struct {
+ qname string
+ qtype uint16
+ answer svcAns
+ }
+ tests := []svcTest{
+ // External Services
+ {qname: "external.testns.svc.interwebs.test.", qtype: dns.TypeCNAME, answer: svcAns{host: "coredns.io", key: "/coredns/test/interwebs/svc/testns/external"}},
+ }
+
+ for _, test := range tests {
+ state := request.Request{
+ Req: &dns.Msg{Question: []dns.Question{{Name: test.qname, Qtype: test.qtype}}},
+ }
+ svcs, _, e := k.Services(state, false, middleware.Options{})
+ if e != nil {
+ t.Errorf("Query '%v' got error '%v'", test.qname, e)
+ }
+ if len(svcs) != 1 {
+ t.Errorf("Query %v %v: expected expected 1 answer, got %v", test.qname, dns.TypeToString[test.qtype], len(svcs))
+ } else {
+ if test.answer.host != svcs[0].Host {
+ t.Errorf("Query %v %v: expected host '%v', got '%v'", test.qname, dns.TypeToString[test.qtype], test.answer.host, svcs[0].Host)
+ }
+ if test.answer.key != svcs[0].Key {
+ t.Errorf("Query %v %v: expected key '%v', got '%v'", test.qname, dns.TypeToString[test.qtype], test.answer.key, svcs[0].Key)
+ }
+ }
+ }
+
+}