diff options
Diffstat (limited to 'plugin/kubernetes/xfr_test.go')
-rw-r--r-- | plugin/kubernetes/xfr_test.go | 86 |
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) + } + } +} |