rfc2136: add unit tests for batch size changes

This commit is contained in:
Jeffrey Egeland 2021-06-23 16:34:34 -04:00
parent fdbaef499a
commit 45e28261d0
No known key found for this signature in database
GPG Key ID: 2A854DC3623F5C36
4 changed files with 48 additions and 2 deletions

View File

@ -113,6 +113,7 @@ var (
TransIPPrivateKeyFile: "",
DigitalOceanAPIPageSize: 50,
ManagedDNSRecordTypes: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
RFC2136BatchChangeSize: 50,
}
overriddenConfig = &Config{
@ -205,6 +206,7 @@ var (
TransIPPrivateKeyFile: "/path/to/transip.key",
DigitalOceanAPIPageSize: 100,
ManagedDNSRecordTypes: []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
RFC2136BatchChangeSize: 100,
}
)
@ -321,6 +323,7 @@ func TestParseFlags(t *testing.T) {
"--transip-account=transip",
"--transip-keyfile=/path/to/transip.key",
"--digitalocean-api-page-size=100",
"--rfc2136-batch-change-size=100",
},
envVars: map[string]string{},
expected: overriddenConfig,
@ -417,6 +420,7 @@ func TestParseFlags(t *testing.T) {
"EXTERNAL_DNS_TRANSIP_ACCOUNT": "transip",
"EXTERNAL_DNS_TRANSIP_KEYFILE": "/path/to/transip.key",
"EXTERNAL_DNS_DIGITALOCEAN_API_PAGE_SIZE": "100",
"EXTERNAL_DNS_RFC2136_BATCH_CHANGE_SIZE": "100",
},
expected: overriddenConfig,
},

View File

@ -98,7 +98,7 @@ func ValidateConfig(cfg *externaldns.Config) error {
}
if cfg.RFC2136BatchChangeSize < 1 {
return errors.New("Batch Size specified for rfc2136 cannot be less than 1")
return errors.New("batch size specified for rfc2136 cannot be less than 1")
}
}

View File

@ -132,6 +132,21 @@ func TestValidateBadRfc2136Config(t *testing.T) {
cfg.Sources = []string{"test-source"}
cfg.Provider = "rfc2136"
cfg.RFC2136MinTTL = -1
cfg.RFC2136BatchChangeSize = 50
err := ValidateConfig(cfg)
assert.NotNil(t, err)
}
func TestValidateBadRfc2136Batch(t *testing.T) {
cfg := externaldns.NewConfig()
cfg.LogFormat = "json"
cfg.Sources = []string{"test-source"}
cfg.Provider = "rfc2136"
cfg.RFC2136MinTTL = 3600
cfg.RFC2136BatchChangeSize = 0
err := ValidateConfig(cfg)
@ -145,6 +160,7 @@ func TestValidateGoodRfc2136Config(t *testing.T) {
cfg.Sources = []string{"test-source"}
cfg.Provider = "rfc2136"
cfg.RFC2136MinTTL = 3600
cfg.RFC2136BatchChangeSize = 50
err := ValidateConfig(cfg)
@ -162,6 +178,7 @@ func TestValidateBadRfc2136GssTsigConfig(t *testing.T) {
RFC2136KerberosUsername: "test-user",
RFC2136KerberosPassword: "",
RFC2136MinTTL: 3600,
RFC2136BatchChangeSize: 50,
},
{
LogFormat: "json",
@ -172,6 +189,7 @@ func TestValidateBadRfc2136GssTsigConfig(t *testing.T) {
RFC2136KerberosUsername: "",
RFC2136KerberosPassword: "test-pass",
RFC2136MinTTL: 3600,
RFC2136BatchChangeSize: 50,
},
{
LogFormat: "json",
@ -183,6 +201,7 @@ func TestValidateBadRfc2136GssTsigConfig(t *testing.T) {
RFC2136KerberosUsername: "test-user",
RFC2136KerberosPassword: "test-pass",
RFC2136MinTTL: 3600,
RFC2136BatchChangeSize: 50,
},
{
LogFormat: "json",
@ -193,6 +212,7 @@ func TestValidateBadRfc2136GssTsigConfig(t *testing.T) {
RFC2136KerberosUsername: "test-user",
RFC2136KerberosPassword: "",
RFC2136MinTTL: 3600,
RFC2136BatchChangeSize: 50,
},
{
LogFormat: "json",
@ -203,6 +223,7 @@ func TestValidateBadRfc2136GssTsigConfig(t *testing.T) {
RFC2136KerberosUsername: "",
RFC2136KerberosPassword: "test-pass",
RFC2136MinTTL: 3600,
RFC2136BatchChangeSize: 50,
},
{
LogFormat: "json",
@ -214,6 +235,7 @@ func TestValidateBadRfc2136GssTsigConfig(t *testing.T) {
RFC2136KerberosUsername: "test-user",
RFC2136KerberosPassword: "test-pass",
RFC2136MinTTL: 3600,
RFC2136BatchChangeSize: 50,
},
{
LogFormat: "json",
@ -224,6 +246,7 @@ func TestValidateBadRfc2136GssTsigConfig(t *testing.T) {
RFC2136KerberosUsername: "test-user",
RFC2136KerberosPassword: "test-pass",
RFC2136MinTTL: 3600,
RFC2136BatchChangeSize: 50,
},
}
@ -246,6 +269,7 @@ func TestValidateGoodRfc2136GssTsigConfig(t *testing.T) {
RFC2136KerberosUsername: "test-user",
RFC2136KerberosPassword: "test-pass",
RFC2136MinTTL: 3600,
RFC2136BatchChangeSize: 50,
},
}

View File

@ -95,7 +95,7 @@ func (r *rfc2136Stub) IncomeTransfer(m *dns.Msg, a string) (env chan *dns.Envelo
}
func createRfc2136StubProvider(stub *rfc2136Stub) (provider.Provider, error) {
return NewRfc2136Provider("", 0, "", false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, "", "", "", stub)
return NewRfc2136Provider("", 0, "", false, "key", "secret", "hmac-sha512", true, endpoint.DomainFilter{}, false, 300*time.Second, false, "", "", "", 50, stub)
}
func extractAuthoritySectionFromMessage(msg fmt.Stringer) []string {
@ -326,6 +326,24 @@ func TestRfc2136ApplyChangesWithUpdate(t *testing.T) {
}
func TestChunkBy(t *testing.T) {
var records []*endpoint.Endpoint
for i := 0; i < 10; i++ {
records = append(records, &endpoint.Endpoint{
DNSName: "v1.foo.com",
RecordType: "A",
Targets: []string{"1.1.2.2"},
RecordTTL: endpoint.TTL(400),
})
}
chunks := chunkBy(records, 2)
if len(chunks) != 5 {
t.Errorf("incorrect number of chunks returned")
}
}
func contains(arr []*endpoint.Endpoint, name string) bool {
for _, a := range arr {
if a.DNSName == name {