diff options
Diffstat (limited to 'middleware/kubernetes/kubernetes_test.go')
-rw-r--r-- | middleware/kubernetes/kubernetes_test.go | 180 |
1 files changed, 3 insertions, 177 deletions
diff --git a/middleware/kubernetes/kubernetes_test.go b/middleware/kubernetes/kubernetes_test.go index a19cb16f6..8037c0987 100644 --- a/middleware/kubernetes/kubernetes_test.go +++ b/middleware/kubernetes/kubernetes_test.go @@ -1,8 +1,6 @@ package kubernetes import ( - "errors" - "reflect" "testing" "github.com/coredns/coredns/middleware" @@ -12,17 +10,6 @@ import ( "k8s.io/client-go/1.5/pkg/api" ) -func TestRecordForTXT(t *testing.T) { - k := Kubernetes{Zones: []string{"inter.webs.test"}} - r, _ := k.parseRequest("dns-version.inter.webs.test", dns.TypeTXT) - - expected := DNSSchemaVersion - svc := k.recordsForTXT(r) - if svc.Text != expected { - t.Errorf("Expected result '%v'. Instead got result '%v'.", expected, svc.Text) - } -} - func TestPrimaryZone(t *testing.T) { k := Kubernetes{Zones: []string{"inter.webs.test", "inter.nets.test"}} expected := "inter.webs.test" @@ -32,23 +19,6 @@ func TestPrimaryZone(t *testing.T) { } } -func TestIsNameError(t *testing.T) { - k := Kubernetes{Zones: []string{"inter.webs.test"}} - if !k.IsNameError(errNoItems) { - t.Errorf("Expected 'true' for '%v'", errNoItems) - } - if !k.IsNameError(errNsNotExposed) { - t.Errorf("Expected 'true' for '%v'", errNsNotExposed) - } - if !k.IsNameError(errInvalidRequest) { - t.Errorf("Expected 'true' for '%v'", errInvalidRequest) - } - otherErr := errors.New("Some other error occurred") - if k.IsNameError(otherErr) { - t.Errorf("Expected 'true' for '%v'", otherErr) - } -} - func TestWildcard(t *testing.T) { var tests = []struct { s string @@ -70,151 +40,6 @@ func TestWildcard(t *testing.T) { } } -func expectString(t *testing.T, function, qtype, query string, r *recordRequest, field, expected string) { - ref := reflect.ValueOf(r) - refField := reflect.Indirect(ref).FieldByName(field) - got := refField.String() - if got != expected { - t.Errorf("Expected %v(%v, \"%v\") to get %v == \"%v\". Instead got \"%v\".", function, query, qtype, field, expected, got) - } -} - -func TestParseRequest(t *testing.T) { - - var tcs map[string]string - - k := Kubernetes{Zones: []string{"inter.webs.test"}} - f := "parseRequest" - - // Test a valid SRV request - // - query := "_http._tcp.webs.mynamespace.svc.inter.webs.test." - r, e := k.parseRequest(query, dns.TypeSRV) - if e != nil { - t.Errorf("Expected no error from parseRequest(%v, \"SRV\"). Instead got '%v'.", query, e) - } - - tcs = map[string]string{ - "port": "http", - "protocol": "tcp", - "endpoint": "", - "service": "webs", - "namespace": "mynamespace", - "typeName": Svc, - "zone": "inter.webs.test", - } - for field, expected := range tcs { - expectString(t, f, "SRV", query, &r, field, expected) - } - - // Test wildcard acceptance - // - query = "*.any.*.any.svc.inter.webs.test." - r, e = k.parseRequest(query, dns.TypeSRV) - if e != nil { - t.Errorf("Expected no error from parseRequest(\"%v\", \"SRV\"). Instead got '%v'.", query, e) - } - - tcs = map[string]string{ - "port": "*", - "protocol": "any", - "endpoint": "", - "service": "*", - "namespace": "any", - "typeName": Svc, - "zone": "inter.webs.test", - } - for field, expected := range tcs { - expectString(t, f, "SRV", query, &r, field, expected) - } - - // Test A request of endpoint - query = "1-2-3-4.webs.mynamespace.svc.inter.webs.test." - r, e = k.parseRequest(query, dns.TypeA) - if e != nil { - t.Errorf("Expected no error from parseRequest(\"%v\", \"A\"). Instead got '%v'.", query, e) - } - tcs = map[string]string{ - "port": "", - "protocol": "", - "endpoint": "1-2-3-4", - "service": "webs", - "namespace": "mynamespace", - "typeName": Svc, - "zone": "inter.webs.test", - } - for field, expected := range tcs { - expectString(t, f, "A", query, &r, field, expected) - } - - // Test NS request - query = "inter.webs.test." - r, e = k.parseRequest(query, dns.TypeNS) - if e != nil { - t.Errorf("Expected no error from parseRequest(\"%v\", \"NS\"). Instead got '%v'.", query, e) - } - tcs = map[string]string{ - "port": "", - "protocol": "", - "endpoint": "", - "service": "", - "namespace": "", - "typeName": "", - "zone": "inter.webs.test", - } - for field, expected := range tcs { - expectString(t, f, "NS", query, &r, field, expected) - } - - // Test TXT request - query = "dns-version.inter.webs.test." - r, e = k.parseRequest(query, dns.TypeTXT) - if e != nil { - t.Errorf("Expected no error from parseRequest(\"%v\", \"TXT\"). Instead got '%v'.", query, e) - } - tcs = map[string]string{ - "port": "", - "protocol": "", - "endpoint": "", - "service": "", - "namespace": "", - "typeName": "dns-version", - "zone": "inter.webs.test", - } - for field, expected := range tcs { - expectString(t, f, "TXT", query, &r, field, expected) - } - - // Invalid query tests - invalidAQueries := []string{ - "_http._tcp.webs.mynamespace.svc.inter.webs.test.", // A requests cannot have port or protocol - "servname.ns1.srv.inter.nets.test.", // A requests must have zone that matches corefile - - } - for _, q := range invalidAQueries { - _, e = k.parseRequest(q, dns.TypeA) - if e == nil { - t.Errorf("Expected error from %v(\"%v\", \"A\").", f, q) - } - } - - invalidSRVQueries := []string{ - "_http._pcp.webs.mynamespace.svc.inter.webs.test.", // SRV protocol must be tcp or udp - "_http._tcp.ep.webs.ns.svc.inter.webs.test.", // SRV requests cannot have an endpoint - "_*._*.webs.mynamespace.svc.inter.webs.test.", // SRV request with invalid wildcards - "_http._tcp", - "_tcp.test.", - ".", - } - - for _, q := range invalidSRVQueries { - _, e = k.parseRequest(q, dns.TypeSRV) - if e == nil { - t.Errorf("Expected error from %v(\"%v\", \"SRV\").", f, q) - } - } -} - func TestEndpointHostname(t *testing.T) { var tests = []struct { ip string @@ -384,7 +209,7 @@ func (APIConnServiceTest) GetNodeByName(name string) (api.Node, error) { func TestServices(t *testing.T) { - k := Kubernetes{Zones: []string{"interwebs.test"}} + k := Kubernetes{Zones: []string{"interwebs.test."}} k.Federations = []Federation{{name: "fed", zone: "era.tion.com"}} k.interfaceAddrsFunc = localPodIP k.APIConn = &APIConnServiceTest{} @@ -414,7 +239,8 @@ func TestServices(t *testing.T) { for _, test := range tests { state := request.Request{ - Req: &dns.Msg{Question: []dns.Question{{Name: test.qname, Qtype: test.qtype}}}, + Req: &dns.Msg{Question: []dns.Question{{Name: test.qname, Qtype: test.qtype}}}, + Zone: "interwebs.test.", // must match from k.Zones[0] } svcs, _, e := k.Services(state, false, middleware.Options{}) if e != nil { |