github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/backoff/delay_test.go (about) 1 package backoff 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xtest" 10 ) 11 12 func TestDelay(t *testing.T) { 13 for _, tt := range []struct { 14 name string 15 act time.Duration 16 exp time.Duration 17 }{ 18 { 19 name: xtest.CurrentFileLine(), 20 act: Delay(TypeNoBackoff, 0), 21 exp: 0, 22 }, 23 { 24 name: xtest.CurrentFileLine(), 25 act: Delay(TypeNoBackoff, 1), 26 exp: 0, 27 }, 28 { 29 name: xtest.CurrentFileLine(), 30 act: Delay(TypeNoBackoff, 2), 31 exp: 0, 32 }, 33 { 34 name: xtest.CurrentFileLine(), 35 act: Delay(TypeFast, 0, WithFastBackoff(New( 36 WithSlotDuration(fastSlot), 37 WithCeiling(6), 38 WithJitterLimit(1), 39 ))), 40 exp: 5 * time.Millisecond, 41 }, 42 { 43 name: xtest.CurrentFileLine(), 44 act: Delay(TypeFast, 1, WithFastBackoff(New( 45 WithSlotDuration(fastSlot), 46 WithCeiling(6), 47 WithJitterLimit(1), 48 ))), 49 exp: 10 * time.Millisecond, 50 }, 51 { 52 name: xtest.CurrentFileLine(), 53 act: Delay(TypeFast, 3, WithFastBackoff(New( 54 WithSlotDuration(fastSlot), 55 WithCeiling(6), 56 WithJitterLimit(1), 57 ))), 58 exp: 40 * time.Millisecond, 59 }, 60 { 61 name: xtest.CurrentFileLine(), 62 act: Delay(TypeSlow, 0, WithSlowBackoff(New( 63 WithSlotDuration(slowSlot), 64 WithCeiling(6), 65 WithJitterLimit(1), 66 ))), 67 exp: time.Second, 68 }, 69 { 70 name: xtest.CurrentFileLine(), 71 act: Delay(TypeSlow, 1, WithSlowBackoff(New( 72 WithSlotDuration(slowSlot), 73 WithCeiling(6), 74 WithJitterLimit(1), 75 ))), 76 exp: 2 * time.Second, 77 }, 78 { 79 name: xtest.CurrentFileLine(), 80 act: Delay(TypeSlow, 3, WithSlowBackoff(New( 81 WithSlotDuration(slowSlot), 82 WithCeiling(6), 83 WithJitterLimit(1), 84 ))), 85 exp: 8 * time.Second, 86 }, 87 } { 88 t.Run(tt.name, func(t *testing.T) { 89 require.Equal(t, tt.exp, tt.act) 90 }) 91 } 92 }