aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/setup_test.go
diff options
context:
space:
mode:
authorGravatar Chris O'Haver <cohaver@infoblox.com> 2017-05-30 08:20:39 -0400
committerGravatar Miek Gieben <miek@miek.nl> 2017-05-30 13:20:39 +0100
commitd917ff5ac2bc5c88f8aebb67cc6a085fa81eacb5 (patch)
treecaea405ed68524b659948aea5ba8d6cdda0e3f2e /middleware/kubernetes/setup_test.go
parent2f2c90f3917f5d2179874d7415e593e0ff0c0f79 (diff)
downloadcoredns-d917ff5ac2bc5c88f8aebb67cc6a085fa81eacb5.tar.gz
coredns-d917ff5ac2bc5c88f8aebb67cc6a085fa81eacb5.tar.zst
coredns-d917ff5ac2bc5c88f8aebb67cc6a085fa81eacb5.zip
Add k8s external service CNAMEs (#677)
* Add external service cnames * remove cruft * update CI k8s version * change CI k8s version * min k8s ver for ext services * trying k8s 1.5 * k8s 1.5 requires ports spec * remove kruft * update dns schema version
Diffstat (limited to 'middleware/kubernetes/setup_test.go')
-rw-r--r--middleware/kubernetes/setup_test.go84
1 files changed, 84 insertions, 0 deletions
diff --git a/middleware/kubernetes/setup_test.go b/middleware/kubernetes/setup_test.go
index f9a87a805..35cf5f891 100644
--- a/middleware/kubernetes/setup_test.go
+++ b/middleware/kubernetes/setup_test.go
@@ -28,6 +28,7 @@ func TestKubernetesParse(t *testing.T) {
expectedPodMode string
expectedCidrs []net.IPNet
expectedFallthrough bool
+ expectedUpstreams []string
}{
// positive
{
@@ -42,6 +43,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"kubernetes keyword with multiple zones",
@@ -55,6 +57,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"kubernetes keyword with zone and empty braces",
@@ -69,6 +72,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"endpoint keyword with url",
@@ -84,6 +88,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"namespaces keyword with one namespace",
@@ -99,6 +104,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"namespaces keyword with multiple namespaces",
@@ -114,6 +120,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"resync period in seconds",
@@ -129,6 +136,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"resync period in minutes",
@@ -144,6 +152,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"basic label selector",
@@ -159,6 +168,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"multi-label selector",
@@ -174,6 +184,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"fully specified valid config",
@@ -193,6 +204,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
true,
+ nil,
},
// negative
{
@@ -207,6 +219,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"kubernetes keyword without a zone",
@@ -220,6 +233,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"endpoint keyword without an endpoint value",
@@ -235,6 +249,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"namespace keyword without a namespace value",
@@ -250,6 +265,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"resyncperiod keyword without a duration value",
@@ -265,6 +281,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"resync period no units",
@@ -280,6 +297,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"resync period invalid",
@@ -295,6 +313,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"labels with no selector value",
@@ -310,6 +329,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
{
"labels with invalid selector value",
@@ -325,6 +345,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
// pods disabled
{
@@ -341,6 +362,7 @@ func TestKubernetesParse(t *testing.T) {
PodModeDisabled,
nil,
false,
+ nil,
},
// pods insecure
{
@@ -357,6 +379,7 @@ func TestKubernetesParse(t *testing.T) {
PodModeInsecure,
nil,
false,
+ nil,
},
// pods verified
{
@@ -373,6 +396,7 @@ func TestKubernetesParse(t *testing.T) {
PodModeVerified,
nil,
false,
+ nil,
},
// pods invalid
{
@@ -389,6 +413,7 @@ func TestKubernetesParse(t *testing.T) {
PodModeVerified,
nil,
false,
+ nil,
},
// cidrs ok
{
@@ -405,6 +430,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
[]net.IPNet{parseCidr("10.0.0.0/24"), parseCidr("10.0.1.0/24")},
false,
+ nil,
},
// cidrs ok
{
@@ -421,6 +447,7 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
},
// fallthrough invalid
{
@@ -437,6 +464,41 @@ func TestKubernetesParse(t *testing.T) {
defaultPodMode,
nil,
false,
+ nil,
+ },
+ // Valid upstream
+ {
+ "valid upstream",
+ `kubernetes coredns.local {
+ upstream 13.14.15.16:53
+}`,
+ false,
+ "",
+ 1,
+ 0,
+ defaultResyncPeriod,
+ "",
+ defaultPodMode,
+ nil,
+ false,
+ []string{"13.14.15.16:53"},
+ },
+ // Invalid upstream
+ {
+ "valid upstream",
+ `kubernetes coredns.local {
+ upstream 13.14.15.16orange
+}`,
+ true,
+ "not an IP address or file: \"13.14.15.16orange\"",
+ -1,
+ 0,
+ defaultResyncPeriod,
+ "",
+ defaultPodMode,
+ nil,
+ false,
+ nil,
},
}
@@ -515,6 +577,28 @@ func TestKubernetesParse(t *testing.T) {
if foundFallthrough != test.expectedFallthrough {
t.Errorf("Test %d: Expected kubernetes controller to be initialized with fallthrough '%v'. Instead found fallthrough '%v' for input '%s'", i, test.expectedFallthrough, foundFallthrough, test.input)
}
+ // upstream
+ foundUpstreams := k8sController.Proxy.Upstreams
+ if test.expectedUpstreams == nil {
+ if foundUpstreams != nil {
+ t.Errorf("Test %d: Expected kubernetes controller to not be initialized with upstreams for input '%s'", i, test.input)
+ }
+ } else {
+ if foundUpstreams == nil {
+ t.Errorf("Test %d: Expected kubernetes controller to be initialized with upstreams for input '%s'", i, test.input)
+ } else {
+ if len(*foundUpstreams) != len(test.expectedUpstreams) {
+ t.Errorf("Test %d: Expected kubernetes controller to be initialized with %d upstreams. Instead found %d upstreams for input '%s'", i, len(test.expectedUpstreams), len(*foundUpstreams), test.input)
+ }
+ for j, want := range test.expectedUpstreams {
+ got := (*foundUpstreams)[j].Select().Name
+ if got != want {
+ t.Errorf("Test %d: Expected kubernetes controller to be initialized with upstream '%s'. Instead found upstream '%s' for input '%s'", i, want, got, test.input)
+ }
+ }
+
+ }
+ }
}
}