aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/ns_test.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--middleware/kubernetes/ns_test.go133
1 files changed, 133 insertions, 0 deletions
diff --git a/middleware/kubernetes/ns_test.go b/middleware/kubernetes/ns_test.go
new file mode 100644
index 000000000..193eb056a
--- /dev/null
+++ b/middleware/kubernetes/ns_test.go
@@ -0,0 +1,133 @@
+package kubernetes
+
+import "testing"
+import "net"
+
+import "github.com/coredns/coredns/middleware/etcd/msg"
+import "k8s.io/client-go/1.5/pkg/api"
+import "github.com/miekg/dns"
+
+func TestRecordForNS(t *testing.T) {
+ k := Kubernetes{Zones: []string{"inter.webs.test"}}
+ corednsRecord.Hdr.Name = "coredns.kube-system."
+ corednsRecord.A = net.IP("1.2.3.4")
+ r, _ := k.parseRequest("inter.webs.test", dns.TypeNS)
+ expected := "/coredns/test/webs/inter/kube-system/coredns"
+
+ var svcs []msg.Service
+ k.recordsForNS(r, &svcs)
+ if svcs[0].Key != expected {
+ t.Errorf("Expected result '%v'. Instead got result '%v'.", expected, svcs[0].Key)
+ }
+}
+
+func TestDefaultNSMsg(t *testing.T) {
+ k := Kubernetes{Zones: []string{"inter.webs.test"}}
+ corednsRecord.Hdr.Name = "coredns.kube-system."
+ corednsRecord.A = net.IP("1.2.3.4")
+ r, _ := k.parseRequest("ns.dns.inter.webs.test", dns.TypeA)
+ expected := "/coredns/test/webs/inter/dns/ns"
+
+ svc := k.defaultNSMsg(r)
+ if svc.Key != expected {
+ t.Errorf("Expected result '%v'. Instead got result '%v'.", expected, svc.Key)
+ }
+}
+
+func TestIsDefaultNS(t *testing.T) {
+ k := Kubernetes{Zones: []string{"inter.webs.test"}}
+ r, _ := k.parseRequest("ns.dns.inter.webs.test", dns.TypeA)
+
+ var name string
+ var expected bool
+
+ name = "ns.dns.inter.webs.test"
+ expected = true
+ if isDefaultNS(name, r) != expected {
+ t.Errorf("Expected IsDefaultNS('%v') to be '%v'.", name, expected)
+ }
+ name = "ns.dns.blah.inter.webs.test"
+ expected = false
+ if isDefaultNS(name, r) != expected {
+ t.Errorf("Expected IsDefaultNS('%v') to be '%v'.", name, expected)
+ }
+}
+
+type APIConnTest struct{}
+
+func (APIConnTest) Run() {
+ return
+}
+
+func (APIConnTest) Stop() error {
+ return nil
+}
+
+func (APIConnTest) ServiceList() []*api.Service {
+ svc := api.Service{
+ ObjectMeta: api.ObjectMeta{
+ Name: "dns-service",
+ Namespace: "kube-system",
+ },
+ Spec: api.ServiceSpec{
+ ClusterIP: "10.0.0.111",
+ },
+ }
+
+ return []*api.Service{&svc}
+
+}
+
+func (APIConnTest) PodIndex(string) []interface{} {
+ return nil
+}
+
+func (APIConnTest) EndpointsList() api.EndpointsList {
+ return api.EndpointsList{
+ Items: []api.Endpoints{
+ {
+ Subsets: []api.EndpointSubset{
+ {
+ Addresses: []api.EndpointAddress{
+ {
+ IP: "172.0.40.10",
+ },
+ },
+ },
+ },
+ ObjectMeta: api.ObjectMeta{
+ Name: "dns-service",
+ Namespace: "kube-system",
+ },
+ },
+ },
+ }
+}
+
+type InterfaceAddrsTest struct{}
+
+func (i InterfaceAddrsTest) InterfaceAddrs() ([]net.Addr, error) {
+ _, ipnet, _ := net.ParseCIDR("172.0.40.10/32")
+ return []net.Addr{ipnet}, nil
+}
+
+func TestDoCoreDNSRecord(t *testing.T) {
+
+ corednsRecord = dns.A{}
+ k := Kubernetes{Zones: []string{"inter.webs.test"}}
+
+ k.interfaceAddrs = &InterfaceAddrsTest{}
+ k.APIConn = &APIConnTest{}
+
+ cdr := k.CoreDNSRecord()
+
+ expected := "10.0.0.111"
+
+ if cdr.A.String() != expected {
+ t.Errorf("Expected A to be '%v', got '%v'", expected, cdr.A.String())
+ }
+ expected = "dns-service.kube-system.svc."
+ if cdr.Hdr.Name != expected {
+ t.Errorf("Expected Hdr.Name to be '%v', got '%v'", expected, cdr.Hdr.Name)
+ }
+}