Example #1
0
    def test_ignore_equals(self):
        collector = HitChangesCollector()
        sensitivity = 1/60.0 # 1 hit a minute

        # 1 hit every second allowed
        total_hits = 3600
        remaining_hits = 3600

        limiter = RateLimiter(sensitivity, collector)

        # hit the api maximum times allowed
        for i in range(total_hits):
            limiter.update(total_hits, remaining_hits)

        self.assertEqual(1, len(collector.changes))
Example #2
0
    def test_fast_limiter(self):
        collector = HitChangesCollector()
        sensitivity = 1.0/60.0 # 1 hit a second

        # 10 hits every second allowed
        total_hits = 3600 * 10
        remaining_hits = 3600 * 10

        limiter = RateLimiter(sensitivity, collector)

        limiter.update(total_hits, remaining_hits)
        self.assertEqual(1, len(collector.changes))

        # hit the api once a second
        for i in range(10):
            time.sleep(1)
            limiter.update(total_hits, remaining_hits)
            remaining_hits -= 1

        self.assertEqual(2, len(collector.changes))
        self.assertEqual(int(collector.changes[1]), int(collector.changes[0] + sensitivity))
Example #3
0
    def test_slow_limiter(self):
        collector = HitChangesCollector()
        sensitivity = 1/60.0 # 1 hit a minute

        # 1 hit every second allowed
        total_hits = 3600
        remaining_hits = 3600

        limiter = RateLimiter(sensitivity, collector)

        limiter.update(total_hits, remaining_hits)
        self.assertEqual(1, len(collector.changes))

        # hit the api 100 times in 1/10 sec
        for i in range(100):
            time.sleep(0.001)
            limiter.update(total_hits, remaining_hits)
            remaining_hits -= 1

        self.assertEqual(2, len(collector.changes))
        self.assertEqual(int(collector.changes[1]), int(collector.changes[0] - sensitivity))