@@ -154,6 +154,7 @@ func TestRateLimiting(t *testing.T) {
154
154
data [parser .GetAnnotationWithPrefix (limitRateAfterAnnotation )] = "100"
155
155
data [parser .GetAnnotationWithPrefix (limitRateAnnotation )] = "10"
156
156
data [parser .GetAnnotationWithPrefix (limitRateBurstMultiplierAnnotation )] = "3"
157
+ data [parser .GetAnnotationWithPrefix (limitRateDelayAnnotation )] = "5"
157
158
158
159
ing .SetAnnotations (data )
159
160
@@ -171,18 +172,93 @@ func TestRateLimiting(t *testing.T) {
171
172
if rateLimit .Connections .Burst != 5 * 3 {
172
173
t .Errorf ("expected %d in burst limit by ip but %v was returned" , 5 * 3 , rateLimit .Connections )
173
174
}
175
+ if rateLimit .Connections .SharedSize != 5 {
176
+ t .Errorf ("expected %d in sharedSize limit by ip but %v was returned" , 5 , rateLimit .Connections )
177
+ }
174
178
if rateLimit .RPS .Limit != 100 {
175
179
t .Errorf ("expected 100 in limit by rps but %v was returned" , rateLimit .RPS )
176
180
}
177
181
if rateLimit .RPS .Burst != 100 * 3 {
178
182
t .Errorf ("expected %d in burst limit by rps but %v was returned" , 100 * 3 , rateLimit .RPS )
179
183
}
184
+ if rateLimit .RPS .Delay != 5 {
185
+ t .Errorf ("expected %d in delay limit by rps but %v was returned" , 5 , rateLimit .RPS )
186
+ }
187
+ if rateLimit .RPS .SharedSize != 5 {
188
+ t .Errorf ("expected %d in sharedSize limit by rps but %v was returned" , 5 , rateLimit .RPS )
189
+ }
180
190
if rateLimit .RPM .Limit != 10 {
181
191
t .Errorf ("expected 10 in limit by rpm but %v was returned" , rateLimit .RPM )
182
192
}
183
193
if rateLimit .RPM .Burst != 10 * 3 {
184
194
t .Errorf ("expected %d in burst limit by rpm but %v was returned" , 10 * 3 , rateLimit .RPM )
185
195
}
196
+ if rateLimit .RPM .Delay != 5 {
197
+ t .Errorf ("expected %d in delay limit by rpm but %v was returned" , 5 , rateLimit .RPM )
198
+ }
199
+ if rateLimit .RPM .SharedSize != 5 {
200
+ t .Errorf ("expected %d in sharedSize limit by rpm but %v was returned" , 5 , rateLimit .RPM )
201
+ }
202
+ if rateLimit .LimitRateAfter != 100 {
203
+ t .Errorf ("expected 100 in limit by limitrateafter but %v was returned" , rateLimit .LimitRateAfter )
204
+ }
205
+ if rateLimit .LimitRate != 10 {
206
+ t .Errorf ("expected 10 in limit by limitrate but %v was returned" , rateLimit .LimitRate )
207
+ }
208
+
209
+ data = map [string ]string {}
210
+ data [parser .GetAnnotationWithPrefix (limitRateConnectionsAnnotation )] = "5"
211
+ data [parser .GetAnnotationWithPrefix (limitRateRPSAnnotation )] = "100"
212
+ data [parser .GetAnnotationWithPrefix (limitRateRPMAnnotation )] = "10"
213
+ data [parser .GetAnnotationWithPrefix (limitRateAfterAnnotation )] = "100"
214
+ data [parser .GetAnnotationWithPrefix (limitRateAnnotation )] = "10"
215
+ data [parser .GetAnnotationWithPrefix (limitRateBurstMultiplierAnnotation )] = "3"
216
+ data [parser .GetAnnotationWithPrefix (limitRateNoBurstAnnotation )] = "true"
217
+ data [parser .GetAnnotationWithPrefix (limitRateSharedSizeAnnotation )] = "1"
218
+
219
+ ing .SetAnnotations (data )
220
+
221
+ i , err = NewParser (mockBackend {}).Parse (ing )
222
+ if err != nil {
223
+ t .Errorf ("unexpected error: %v" , err )
224
+ }
225
+ rateLimit , ok = i .(* Config )
226
+ if ! ok {
227
+ t .Errorf ("expected a RateLimit type" )
228
+ }
229
+ if rateLimit .Connections .Limit != 5 {
230
+ t .Errorf ("expected 5 in limit by ip but %v was returned" , rateLimit .Connections )
231
+ }
232
+ if rateLimit .Connections .Burst != 0 {
233
+ t .Errorf ("expected %d in burst limit by ip but %v was returned" , 0 , rateLimit .Connections )
234
+ }
235
+ if rateLimit .Connections .SharedSize != 1 {
236
+ t .Errorf ("expected %d in sharedSize limit by ip but %v was returned" , 1 , rateLimit .Connections )
237
+ }
238
+ if rateLimit .RPS .Limit != 100 {
239
+ t .Errorf ("expected 100 in limit by rps but %v was returned" , rateLimit .RPS )
240
+ }
241
+ if rateLimit .RPS .Burst != 0 {
242
+ t .Errorf ("expected %d in burst limit by rps but %v was returned" , 0 , rateLimit .RPS )
243
+ }
244
+ if rateLimit .RPS .Delay != - 1 {
245
+ t .Errorf ("expected %d in delay limit by rps but %v was returned" , - 1 , rateLimit .RPS )
246
+ }
247
+ if rateLimit .RPS .SharedSize != 1 {
248
+ t .Errorf ("expected %d in sharedSize limit by rps but %v was returned" , 1 , rateLimit .RPS )
249
+ }
250
+ if rateLimit .RPM .Limit != 10 {
251
+ t .Errorf ("expected 10 in limit by rpm but %v was returned" , rateLimit .RPM )
252
+ }
253
+ if rateLimit .RPM .Burst != 0 {
254
+ t .Errorf ("expected %d in burst limit by rpm but %v was returned" , 0 , rateLimit .RPM )
255
+ }
256
+ if rateLimit .RPM .Delay != - 1 {
257
+ t .Errorf ("expected %d in delay limit by rpm but %v was returned" , - 1 , rateLimit .RPM )
258
+ }
259
+ if rateLimit .RPM .SharedSize != 1 {
260
+ t .Errorf ("expected %d in sharedSize limit by rps but %v was returned" , 1 , rateLimit .RPM )
261
+ }
186
262
if rateLimit .LimitRateAfter != 100 {
187
263
t .Errorf ("expected 100 in limit by limitrateafter but %v was returned" , rateLimit .LimitRateAfter )
188
264
}
0 commit comments