-
Notifications
You must be signed in to change notification settings - Fork 173
/
mock_error_handler.go
70 lines (55 loc) · 1.86 KB
/
mock_error_handler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package mock
import (
"time"
"k8s.io/apimachinery/pkg/util/clock"
)
type IsErrorRetryableFunc func(err error) bool
type IsRetryRemainingFunc func(err error, retryCount int32) bool
type IsErrorFailFastFunc func(err error) bool
type WaitOnErrorFunc func(clock clock.Clock, lastUpdatedTime time.Time) (time.Duration, bool)
type GetRetryDelayFunc func(retryCount int32) time.Duration
type IsTimeToRetryFunc func(clock clock.Clock, lastUpdatedTime time.Time, retryCount int32) bool
type RetryHandler struct {
IsErrorRetryableFunc IsErrorRetryableFunc
IsRetryRemainingFunc IsRetryRemainingFunc
IsErrorFailFastFunc IsErrorFailFastFunc
WaitOnErrorFunc WaitOnErrorFunc
GetRetryDelayFunc GetRetryDelayFunc
IsTimeToRetryFunc IsTimeToRetryFunc
}
func (e RetryHandler) IsErrorRetryable(err error) bool {
if e.IsErrorRetryableFunc != nil {
return e.IsErrorRetryableFunc(err)
}
return false
}
func (e RetryHandler) IsErrorFailFast(err error) bool {
if e.IsErrorFailFastFunc != nil {
return e.IsErrorFailFastFunc(err)
}
return false
}
func (e RetryHandler) IsRetryRemaining(err error, retryCount int32) bool {
if e.IsRetryRemainingFunc != nil {
return e.IsRetryRemainingFunc(err, retryCount)
}
return false
}
func (e RetryHandler) WaitOnError(clock clock.Clock, lastUpdatedTime time.Time) (time.Duration, bool) {
if e.WaitOnErrorFunc != nil {
return e.WaitOnErrorFunc(clock, lastUpdatedTime)
}
return time.Duration(time.Now().UnixNano()), true
}
func (e RetryHandler) GetRetryDelay(retryCount int32) time.Duration {
if e.GetRetryDelayFunc != nil {
return e.GetRetryDelayFunc(retryCount)
}
return time.Duration(time.Now().UnixNano())
}
func (e RetryHandler) IsTimeToRetry(clock clock.Clock, lastUpdatedTime time.Time, retryCount int32) bool {
if e.IsTimeToRetryFunc != nil {
return e.IsTimeToRetryFunc(clock, lastUpdatedTime, retryCount)
}
return false
}