mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 02:03:20 -04:00 
			
		
		
		
	* 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
		
			
				
	
	
		
			134 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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)
 | |
| 	}
 | |
| }
 |