From 955a8055313e8febdc340a95dcbb18eb41356575 Mon Sep 17 00:00:00 2001 From: Raffaele Di Fazio Date: Fri, 8 May 2020 19:12:54 +0200 Subject: [PATCH] fix exoscale test of merge Signed-off-by: Raffaele Di Fazio --- provider/exoscale/exoscale.go | 1 - provider/exoscale/exoscale_test.go | 141 +++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+), 1 deletion(-) diff --git a/provider/exoscale/exoscale.go b/provider/exoscale/exoscale.go index a37c4f51a..9f05cf90f 100644 --- a/provider/exoscale/exoscale.go +++ b/provider/exoscale/exoscale.go @@ -258,7 +258,6 @@ func (f *zoneFilter) EndpointZoneID(endpoint *endpoint.Endpoint, zones map[int64 return matchZoneID, name } -// TODO see if we need tests for this, I copied over the dyn provider. Another option is to make this a helper function func merge(updateOld, updateNew []*endpoint.Endpoint) []*endpoint.Endpoint { findMatch := func(template *endpoint.Endpoint) *endpoint.Endpoint { for _, new := range updateNew { diff --git a/provider/exoscale/exoscale_test.go b/provider/exoscale/exoscale_test.go index 2c99ce457..d82d0d7cd 100644 --- a/provider/exoscale/exoscale_test.go +++ b/provider/exoscale/exoscale_test.go @@ -189,3 +189,144 @@ func TestExoscaleApplyChanges(t *testing.T) { assert.Equal(t, "foo.com", updateExoscale[0].name) assert.Equal(t, int64(1), updateExoscale[0].updateDNSRecord.ID) } + +func TestExoscaleMerge_NoUpdateOnTTL0Changes(t *testing.T) { + updateOld := []*endpoint.Endpoint{ + { + DNSName: "name1", + Targets: endpoint.Targets{"target1"}, + RecordTTL: endpoint.TTL(1), + RecordType: endpoint.RecordTypeA, + }, + { + DNSName: "name2", + Targets: endpoint.Targets{"target2"}, + RecordTTL: endpoint.TTL(1), + RecordType: endpoint.RecordTypeA, + }, + } + + updateNew := []*endpoint.Endpoint{ + { + DNSName: "name1", + Targets: endpoint.Targets{"target1"}, + RecordTTL: endpoint.TTL(0), + RecordType: endpoint.RecordTypeCNAME, + }, + { + DNSName: "name2", + Targets: endpoint.Targets{"target2"}, + RecordTTL: endpoint.TTL(0), + RecordType: endpoint.RecordTypeCNAME, + }, + } + + assert.Equal(t, 0, len(merge(updateOld, updateNew))) +} + +func TestExoscaleMerge_UpdateOnTTLChanges(t *testing.T) { + updateOld := []*endpoint.Endpoint{ + { + DNSName: "name1", + Targets: endpoint.Targets{"target1"}, + RecordTTL: endpoint.TTL(1), + RecordType: endpoint.RecordTypeCNAME, + }, + { + DNSName: "name2", + Targets: endpoint.Targets{"target2"}, + RecordTTL: endpoint.TTL(1), + RecordType: endpoint.RecordTypeCNAME, + }, + } + + updateNew := []*endpoint.Endpoint{ + { + DNSName: "name1", + Targets: endpoint.Targets{"target1"}, + RecordTTL: endpoint.TTL(77), + RecordType: endpoint.RecordTypeCNAME, + }, + { + DNSName: "name2", + Targets: endpoint.Targets{"target2"}, + RecordTTL: endpoint.TTL(10), + RecordType: endpoint.RecordTypeCNAME, + }, + } + + merged := merge(updateOld, updateNew) + assert.Equal(t, 2, len(merged)) + assert.Equal(t, "name1", merged[0].DNSName) +} + +func TestExoscaleMerge_AlwaysUpdateTarget(t *testing.T) { + updateOld := []*endpoint.Endpoint{ + { + DNSName: "name1", + Targets: endpoint.Targets{"target1"}, + RecordTTL: endpoint.TTL(1), + RecordType: endpoint.RecordTypeCNAME, + }, + { + DNSName: "name2", + Targets: endpoint.Targets{"target2"}, + RecordTTL: endpoint.TTL(1), + RecordType: endpoint.RecordTypeCNAME, + }, + } + + updateNew := []*endpoint.Endpoint{ + { + DNSName: "name1", + Targets: endpoint.Targets{"target1-changed"}, + RecordTTL: endpoint.TTL(0), + RecordType: endpoint.RecordTypeCNAME, + }, + { + DNSName: "name2", + Targets: endpoint.Targets{"target2"}, + RecordTTL: endpoint.TTL(0), + RecordType: endpoint.RecordTypeCNAME, + }, + } + + merged := merge(updateOld, updateNew) + assert.Equal(t, 1, len(merged)) + assert.Equal(t, "target1-changed", merged[0].Targets[0]) +} + +func TestExoscaleMerge_NoUpdateIfTTLUnchanged(t *testing.T) { + updateOld := []*endpoint.Endpoint{ + { + DNSName: "name1", + Targets: endpoint.Targets{"target1"}, + RecordTTL: endpoint.TTL(55), + RecordType: endpoint.RecordTypeCNAME, + }, + { + DNSName: "name2", + Targets: endpoint.Targets{"target2"}, + RecordTTL: endpoint.TTL(55), + RecordType: endpoint.RecordTypeCNAME, + }, + } + + updateNew := []*endpoint.Endpoint{ + { + DNSName: "name1", + Targets: endpoint.Targets{"target1"}, + RecordTTL: endpoint.TTL(55), + RecordType: endpoint.RecordTypeCNAME, + }, + { + DNSName: "name2", + Targets: endpoint.Targets{"target2"}, + RecordTTL: endpoint.TTL(55), + RecordType: endpoint.RecordTypeCNAME, + }, + } + + merged := merge(updateOld, updateNew) + assert.Equal(t, 0, len(merged)) +}