def test_fixed_window(self):
     storage = MemoryStorage()
     limiter = FixedWindowRateLimiter(storage)
     with hiro.Timeline().freeze() as timeline:
         limit = PER_SECOND(10, 2)
         self.assertTrue(all([limiter.hit(limit) for _ in range(0,10)]))
         timeline.forward(1)
         self.assertFalse(limiter.hit(limit))
         timeline.forward(1)
         self.assertTrue(limiter.hit(limit))
Beispiel #2
0
 def test_in_memory(self):
     with hiro.Timeline().freeze() as timeline:
         storage = MemoryStorage()
         limiter = FixedWindowRateLimiter(storage)
         per_min = PER_MINUTE(10)
         for i in range(0, 10):
             self.assertTrue(limiter.hit(per_min))
         self.assertFalse(limiter.hit(per_min))
         timeline.forward(61)
         self.assertTrue(limiter.hit(per_min))
 def test_in_memory(self):
     with hiro.Timeline().freeze() as timeline:
         storage = MemoryStorage()
         limiter = FixedWindowRateLimiter(storage)
         per_min = PER_MINUTE(10)
         for i in range(0,10):
             self.assertTrue(limiter.hit(per_min))
         self.assertFalse(limiter.hit(per_min))
         timeline.forward(61)
         self.assertTrue(limiter.hit(per_min))
Beispiel #4
0
 def test_in_memory_expiry(self):
     with hiro.Timeline().freeze() as timeline:
         storage = MemoryStorage()
         limiter = FixedWindowRateLimiter(storage)
         per_min = PER_MINUTE(10)
         for i in range(0, 10):
             self.assertTrue(limiter.hit(per_min))
         timeline.forward(60)
         # touch another key and yield
         limiter.hit(PER_SECOND(1))
         time.sleep(0.1)
         self.assertTrue(per_min.key_for() not in storage.storage)
 def test_in_memory_expiry(self):
     with hiro.Timeline().freeze() as timeline:
         storage = MemoryStorage()
         limiter = FixedWindowRateLimiter(storage)
         per_min = PER_MINUTE(10)
         for i in range(0,10):
             self.assertTrue(limiter.hit(per_min))
         timeline.forward(60)
         # touch another key and yield
         limiter.hit(PER_SECOND(1))
         time.sleep(0.1)
         self.assertTrue(per_min.key_for() not in storage.storage)
Beispiel #6
0
 def test_redis(self):
     storage = RedisStorage("redis://localhost:6379")
     limiter = FixedWindowRateLimiter(storage)
     per_min = PER_SECOND(10)
     start = time.time()
     count = 0
     while time.time() - start < 0.5 and count < 10:
         self.assertTrue(limiter.hit(per_min))
         count += 1
     self.assertFalse(limiter.hit(per_min))
     while time.time() - start <= 1:
         time.sleep(0.1)
     self.assertTrue(limiter.hit(per_min))
Beispiel #7
0
 def test_memcached(self):
     storage = MemcachedStorage("memcached://localhost:11211")
     limiter = FixedWindowRateLimiter(storage)
     per_min = PER_SECOND(10)
     start = time.time()
     count = 0
     while time.time() - start < 0.5 and count < 10:
         self.assertTrue(limiter.hit(per_min))
         count += 1
     self.assertFalse(limiter.hit(per_min))
     while time.time() - start <= 1:
         time.sleep(0.1)
     self.assertTrue(limiter.hit(per_min))
 def test_memcached(self):
     storage = MemcachedStorage("localhost", 11211)
     limiter = FixedWindowRateLimiter(storage)
     per_min = PER_SECOND(10)
     start = time.time()
     count = 0
     while time.time() - start < 0.5 and count < 10:
         self.assertTrue(limiter.hit(per_min))
         count += 1
     self.assertFalse(limiter.hit(per_min))
     while time.time() - start <= 1:
         time.sleep(0.1)
     self.assertTrue(limiter.hit(per_min))
 def test_redis(self):
     storage = RedisStorage("redis://localhost:6379")
     limiter = FixedWindowRateLimiter(storage)
     per_min = PER_SECOND(10)
     start = time.time()
     count = 0
     while time.time() - start < 0.5 and count < 10:
         self.assertTrue(limiter.hit(per_min))
         count += 1
     self.assertFalse(limiter.hit(per_min))
     while time.time() - start <= 1:
         time.sleep(0.1)
     self.assertTrue(limiter.hit(per_min))
Beispiel #10
0
 def test_fixed_window(self):
     storage = MemoryStorage()
     limiter = FixedWindowRateLimiter(storage)
     with hiro.Timeline().freeze() as timeline:
         start = int(time.time())
         limit = PER_SECOND(10, 2)
         self.assertTrue(all([limiter.hit(limit) for _ in range(0,10)]))
         timeline.forward(1)
         self.assertFalse(limiter.hit(limit))
         self.assertEqual(limiter.get_window_stats(limit)[1], 0)
         self.assertEqual(limiter.get_window_stats(limit)[0], start + 2)
         timeline.forward(1)
         self.assertEqual(limiter.get_window_stats(limit)[1], 10)
         self.assertTrue(limiter.hit(limit))