@@ -22,24 +22,36 @@ func returnsSuccess() error {
22
22
23
23
func TestBreakerErrorExpiry (t * testing.T ) {
24
24
breaker := New (2 , 1 , 10 * time .Millisecond )
25
+ if breaker .GetState () != Closed {
26
+ t .Error ("incorrect state" )
27
+ }
25
28
26
29
for i := 0 ; i < 3 ; i ++ {
27
30
if err := breaker .Run (returnsError ); err != errSomeError {
28
31
t .Error (err )
29
32
}
30
33
time .Sleep (10 * time .Millisecond )
31
34
}
35
+ if breaker .GetState () != Closed {
36
+ t .Error ("incorrect state" )
37
+ }
32
38
33
39
for i := 0 ; i < 3 ; i ++ {
34
40
if err := breaker .Go (returnsError ); err != nil {
35
41
t .Error (err )
36
42
}
37
43
time .Sleep (10 * time .Millisecond )
38
44
}
45
+ if breaker .GetState () != Closed {
46
+ t .Error ("incorrect state" )
47
+ }
39
48
}
40
49
41
50
func TestBreakerPanicsCountAsErrors (t * testing.T ) {
42
51
breaker := New (3 , 2 , 1 * time .Second )
52
+ if breaker .GetState () != Closed {
53
+ t .Error ("incorrect state" )
54
+ }
43
55
44
56
// three errors opens the breaker
45
57
for i := 0 ; i < 3 ; i ++ {
@@ -58,6 +70,9 @@ func TestBreakerPanicsCountAsErrors(t *testing.T) {
58
70
}
59
71
60
72
// breaker is open
73
+ if breaker .GetState () != Open {
74
+ t .Error ("incorrect state" )
75
+ }
61
76
for i := 0 ; i < 5 ; i ++ {
62
77
if err := breaker .Run (returnsError ); err != ErrBreakerOpen {
63
78
t .Error (err )
@@ -67,6 +82,9 @@ func TestBreakerPanicsCountAsErrors(t *testing.T) {
67
82
68
83
func TestBreakerStateTransitions (t * testing.T ) {
69
84
breaker := New (3 , 2 , 10 * time .Millisecond )
85
+ if breaker .GetState () != Closed {
86
+ t .Error ("incorrect state" )
87
+ }
70
88
71
89
// three errors opens the breaker
72
90
for i := 0 ; i < 3 ; i ++ {
@@ -76,6 +94,9 @@ func TestBreakerStateTransitions(t *testing.T) {
76
94
}
77
95
78
96
// breaker is open
97
+ if breaker .GetState () != Open {
98
+ t .Error ("incorrect state" )
99
+ }
79
100
for i := 0 ; i < 5 ; i ++ {
80
101
if err := breaker .Run (returnsError ); err != ErrBreakerOpen {
81
102
t .Error (err )
@@ -84,6 +105,9 @@ func TestBreakerStateTransitions(t *testing.T) {
84
105
85
106
// wait for it to half-close
86
107
time .Sleep (20 * time .Millisecond )
108
+ if breaker .GetState () != HalfOpen {
109
+ t .Error ("incorrect state" )
110
+ }
87
111
// one success works, but is not enough to fully close
88
112
if err := breaker .Run (returnsSuccess ); err != nil {
89
113
t .Error (err )
@@ -93,23 +117,35 @@ func TestBreakerStateTransitions(t *testing.T) {
93
117
t .Error (err )
94
118
}
95
119
// breaker is open
120
+ if breaker .GetState () != Open {
121
+ t .Error ("incorrect state" )
122
+ }
96
123
if err := breaker .Run (returnsError ); err != ErrBreakerOpen {
97
124
t .Error (err )
98
125
}
99
126
100
127
// wait for it to half-close
101
128
time .Sleep (20 * time .Millisecond )
129
+ if breaker .GetState () != HalfOpen {
130
+ t .Error ("incorrect state" )
131
+ }
102
132
// two successes is enough to close it for good
103
133
for i := 0 ; i < 2 ; i ++ {
104
134
if err := breaker .Run (returnsSuccess ); err != nil {
105
135
t .Error (err )
106
136
}
107
137
}
138
+ if breaker .GetState () != Closed {
139
+ t .Error ("incorrect state" )
140
+ }
108
141
// error works
109
142
if err := breaker .Run (returnsError ); err != errSomeError {
110
143
t .Error (err )
111
144
}
112
145
// breaker is still closed
146
+ if breaker .GetState () != Closed {
147
+ t .Error ("incorrect state" )
148
+ }
113
149
if err := breaker .Run (returnsSuccess ); err != nil {
114
150
t .Error (err )
115
151
}
0 commit comments