diff options
author | 2017-05-22 16:05:48 -0400 | |
---|---|---|
committer | 2017-05-22 16:05:48 -0400 | |
commit | 7f950e496ab8ae518d8f78f3a80225604dd90da3 (patch) | |
tree | 5e03de273df60b8072c649551be90c55714e00e3 /middleware/kubernetes/ns_test.go | |
parent | 024f56682dcaaaae2dd990d6fae3b54c8d17c467 (diff) | |
download | coredns-7f950e496ab8ae518d8f78f3a80225604dd90da3.tar.gz coredns-7f950e496ab8ae518d8f78f3a80225604dd90da3.tar.zst coredns-7f950e496ab8ae518d8f78f3a80225604dd90da3.zip |
Handle K8s middleware NS record (#662)
* commit for testing in cluster
* commit for testing in cluster
* refactor and add ns.dns record
* Release 007
* reduce heap allocations
* gofmt
* revert accidental Makefile commits
* restore prior rcode for disabled pod mode
* revert Makefile deltas
* add unit tests
* more unit tests
* make isRequestInReverseRange easier to test
* more unit tests
* addressing review feedback
* commit setup.go
Diffstat (limited to 'middleware/kubernetes/ns_test.go')
-rw-r--r-- | middleware/kubernetes/ns_test.go | 133 |
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) + } +} |