aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/xfr_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/kubernetes/xfr_test.go')
-rw-r--r--plugin/kubernetes/xfr_test.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/plugin/kubernetes/xfr_test.go b/plugin/kubernetes/xfr_test.go
index 4336194bd..1ada4f7aa 100644
--- a/plugin/kubernetes/xfr_test.go
+++ b/plugin/kubernetes/xfr_test.go
@@ -5,6 +5,7 @@ import (
"strings"
"testing"
+ "github.com/coredns/coredns/plugin/kubernetes/object"
"github.com/coredns/coredns/plugin/pkg/dnstest"
"github.com/coredns/coredns/plugin/test"
@@ -141,3 +142,88 @@ func difference(testRRs []dns.RR, gotRRs []dns.RR) []dns.RR {
}
return foundRRs
}
+
+func TestEndpointsEquivalent(t *testing.T) {
+ epA := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.4", Hostname: "foo"}},
+ }},
+ }
+ epB := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.4", Hostname: "foo"}},
+ }},
+ }
+ epC := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.5", Hostname: "foo"}},
+ }},
+ }
+ epD := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.5", Hostname: "foo"}},
+ },
+ {
+ Addresses: []object.EndpointAddress{{IP: "1.2.2.2", Hostname: "foofoo"}},
+ }},
+ }
+ epE := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.5", Hostname: "foo"}, {IP: "1.1.1.1"}},
+ }},
+ }
+ epF := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.4", Hostname: "foofoo"}},
+ }},
+ }
+ epG := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.4", Hostname: "foo"}},
+ Ports: []object.EndpointPort{{Name: "http", Port: 80, Protocol: "TCP"}},
+ }},
+ }
+ epH := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.4", Hostname: "foo"}},
+ Ports: []object.EndpointPort{{Name: "newportname", Port: 80, Protocol: "TCP"}},
+ }},
+ }
+ epI := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.4", Hostname: "foo"}},
+ Ports: []object.EndpointPort{{Name: "http", Port: 8080, Protocol: "TCP"}},
+ }},
+ }
+ epJ := object.Endpoints{
+ Subsets: []object.EndpointSubset{{
+ Addresses: []object.EndpointAddress{{IP: "1.2.3.4", Hostname: "foo"}},
+ Ports: []object.EndpointPort{{Name: "http", Port: 80, Protocol: "UDP"}},
+ }},
+ }
+
+ tests := []struct {
+ equiv bool
+ a *object.Endpoints
+ b *object.Endpoints
+ }{
+ {true, &epA, &epB},
+ {false, &epA, &epC},
+ {false, &epA, &epD},
+ {false, &epA, &epE},
+ {false, &epA, &epF},
+ {false, &epF, &epG},
+ {false, &epG, &epH},
+ {false, &epG, &epI},
+ {false, &epG, &epJ},
+ }
+
+ for i, tc := range tests {
+ if tc.equiv && !endpointsEquivalent(tc.a, tc.b) {
+ t.Errorf("Test %d: expected endpoints to be equivalent and they are not.", i)
+ }
+ if !tc.equiv && endpointsEquivalent(tc.a, tc.b) {
+ t.Errorf("Test %d: expected endpoints to be seen as different but they were not.", i)
+ }
+ }
+}