github.com/Jeffail/benthos/v3@v3.65.0/public/service/config_backoff_test.go (about) 1 package service 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/cenkalti/backoff/v4" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestConfigBackOff(t *testing.T) { 13 spec := NewConfigSpec(). 14 Field(NewBackOffField("a", true, nil)) 15 16 parsedConfig, err := spec.ParseYAML(` 17 a: 18 max_interval: 300s 19 `, nil) 20 require.NoError(t, err) 21 22 _, err = parsedConfig.FieldBackOff("b") 23 require.Error(t, err) 24 25 bConf, err := parsedConfig.FieldBackOff("a") 26 require.NoError(t, err) 27 28 assert.Equal(t, time.Millisecond*500, bConf.InitialInterval) 29 assert.Equal(t, time.Second*300, bConf.MaxInterval) 30 assert.Equal(t, time.Minute*1, bConf.MaxElapsedTime) 31 } 32 33 func TestConfigBackOffCustomDefaults(t *testing.T) { 34 defaults := backoff.NewExponentialBackOff() 35 defaults.InitialInterval = time.Minute 36 defaults.MaxInterval = time.Minute * 5 37 defaults.MaxElapsedTime = time.Hour * 6 38 39 spec := NewConfigSpec(). 40 Field(NewBackOffField("a", false, defaults)) 41 42 parsedConfig, err := spec.ParseYAML(` 43 a: 44 max_interval: 300s 45 `, nil) 46 require.NoError(t, err) 47 48 _, err = parsedConfig.FieldBackOff("b") 49 require.Error(t, err) 50 51 bConf, err := parsedConfig.FieldBackOff("a") 52 require.NoError(t, err) 53 54 assert.Equal(t, time.Minute, bConf.InitialInterval) 55 assert.Equal(t, time.Second*300, bConf.MaxInterval) 56 assert.Equal(t, time.Hour*6, bConf.MaxElapsedTime) 57 }