MCPcopy
hub / github.com/labstack/echo / TestRateLimiterMemoryStore_Allow

Function TestRateLimiterMemoryStore_Allow

middleware/rate_limiter_test.go:333–373  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

331}
332
333func TestRateLimiterMemoryStore_Allow(t *testing.T) {
334 var inMemoryStore = NewRateLimiterMemoryStoreWithConfig(RateLimiterMemoryStoreConfig{Rate: 1, Burst: 3, ExpiresIn: 2 * time.Second})
335 testCases := []struct {
336 id string
337 allowed bool
338 }{
339 {"127.0.0.1", true}, // 0 ms
340 {"127.0.0.1", true}, // 220 ms burst #2
341 {"127.0.0.1", true}, // 440 ms burst #3
342 {"127.0.0.1", false}, // 660 ms block
343 {"127.0.0.1", false}, // 880 ms block
344 {"127.0.0.1", true}, // 1100 ms next second #1
345 {"127.0.0.2", true}, // 1320 ms allow other ip
346 {"127.0.0.1", false}, // 1540 ms no burst
347 {"127.0.0.1", false}, // 1760 ms no burst
348 {"127.0.0.1", false}, // 1980 ms no burst
349 {"127.0.0.1", true}, // 2200 ms no burst
350 {"127.0.0.1", false}, // 2420 ms no burst
351 {"127.0.0.1", false}, // 2640 ms no burst
352 {"127.0.0.1", false}, // 2860 ms no burst
353 {"127.0.0.1", true}, // 3080 ms no burst
354 {"127.0.0.1", false}, // 3300 ms no burst
355 {"127.0.0.1", false}, // 3520 ms no burst
356 {"127.0.0.1", false}, // 3740 ms no burst
357 {"127.0.0.1", false}, // 3960 ms no burst
358 {"127.0.0.1", true}, // 4180 ms no burst
359 {"127.0.0.1", false}, // 4400 ms no burst
360 {"127.0.0.1", false}, // 4620 ms no burst
361 {"127.0.0.1", false}, // 4840 ms no burst
362 {"127.0.0.1", true}, // 5060 ms no burst
363 }
364
365 for i, tc := range testCases {
366 t.Logf("Running testcase #%d => %v", i, time.Duration(i)*220*time.Millisecond)
367 inMemoryStore.timeNow = func() time.Time {
368 return time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC).Add(time.Duration(i) * 220 * time.Millisecond)
369 }
370 allowed, _ := inMemoryStore.Allow(tc.id)
371 assert.Equal(t, tc.allowed, allowed)
372 }
373}
374
375func TestRateLimiterMemoryStore_cleanupStaleVisitors(t *testing.T) {
376 var inMemoryStore = NewRateLimiterMemoryStoreWithConfig(RateLimiterMemoryStoreConfig{Rate: 1, Burst: 3})

Callers

nothing calls this directly

Calls 4

DurationMethod · 0.80
AddMethod · 0.65
AllowMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…