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.go180
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 {