diff --git a/client/djrandom_client/test/test_throttle.py b/client/djrandom_client/test/test_throttle.py index 50e0d75340a57b38b871d83fce07f832cf7d9ce9..cdf134ddd895e1988da60e1cd701175c6b22d011 100644 --- a/client/djrandom_client/test/test_throttle.py +++ b/client/djrandom_client/test/test_throttle.py @@ -23,13 +23,17 @@ class TokenBucketTest(unittest.TestCase): self.assertAlmostEquals(1, tb.consume(512), 3) self.assertAlmostEquals(1, tb.consume(512), 3) + def test_token_bucket_overburst(self): + tb = throttle.TokenBucket(1024, 512) + # A very large request will wait. + self.assertEquals(18, tb.consume(10240)) + class HttpSinkHandler(BaseHTTPServer.BaseHTTPRequestHandler): def do_POST(self): clen = int(self.headers.get('Content-Length', 0)) data = self.rfile.read(clen) - print 'received %d bytes on %s' % (len(data), self.path) self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() @@ -89,8 +93,8 @@ class ThrottledHttpTest(unittest.TestCase): throttle.set_rate_limit(10) opener = urllib2.build_opener(throttle.ThrottledHTTPHandler) - testdata = "x" * (5 * 1024) - n_reqs = 10 + testdata = "x" * (1024) + n_reqs = 50 start = time.time() for i in xrange(n_reqs): @@ -105,7 +109,7 @@ class ThrottledHttpTest(unittest.TestCase): elapsed = end - start print >>sys.stderr, 'elapsed: %g secs' % elapsed - self.assertTrue(elapsed > 4.5 and elapsed < 5.5, + self.assertTrue(elapsed > 4.5 and elapsed < 6.5, 'elapsed time out of range: %g' % elapsed)