def test_bucket__put_get(self): x = buckets.TokenBucketQueue(fill_rate=10) x.put('The quick brown fox') self.assertEqual(x.get(), 'The quick brown fox') x.put_nowait('The lazy dog') time.sleep(0.2) self.assertEqual(x.get_nowait(), 'The lazy dog')
def test_can_consume(self): x = buckets.TokenBucketQueue(fill_rate=1) x.put("The quick brown fox") self.assertEqual(x.get(), "The quick brown fox") time.sleep(0.1) # Not yet ready for another token x.put("The lazy dog") self.assertRaises(x.RateLimitExceeded, x.get)
def test_fill_rate(self): x = buckets.TokenBucketQueue(fill_rate=10) # 20 items should take at least one second to complete time_start = time.time() [x.put(str(i)) for i in xrange(20)] for i in xrange(20): sys.stderr.write('.') x.wait() self.assertGreater(time.time() - time_start, 1.5)
def test_qsize(self): x = buckets.TokenBucketQueue(fill_rate=1) x.put('The quick brown fox') self.assertEqual(x.qsize(), 1) self.assertEqual(x.get_nowait(), 'The quick brown fox')
def test_expected_time(self): x = buckets.TokenBucketQueue(fill_rate=1) x.put_nowait('The quick brown fox') self.assertEqual(x.get_nowait(), 'The quick brown fox') self.assertFalse(x.expected_time())
def empty_queue_yields_QueueEmpty(self): x = buckets.TokenBucketQueue(fill_rate=10) with self.assertRaises(buckets.Empty): x.get()
def test__get_queue_for_type(self): x = buckets.TaskBucket(task_registry={}) x.buckets['foo'] = buckets.TokenBucketQueue(fill_rate=1) self.assertIs(x._get_queue_for_type('foo'), x.buckets['foo'].queue) x.buckets['bar'] = buckets.FastQueue() self.assertIs(x._get_queue_for_type('bar'), x.buckets['bar'])
def test__get_queue_for_type(self): x = buckets.TaskBucket(task_registry={}) x.buckets["foo"] = buckets.TokenBucketQueue(fill_rate=1) self.assertIs(x._get_queue_for_type("foo"), x.buckets["foo"].queue) x.buckets["bar"] = buckets.FastQueue() self.assertIs(x._get_queue_for_type("bar"), x.buckets["bar"])