From 3e2949000a017af9b325ef7bc1cfcf7d75c829c6 Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Sun, 30 Oct 2011 22:00:11 +0000 Subject: [PATCH] add a test of bandwidth limiting for small requests that fall within the burst threshold --- client/djrandom_client/test/test_throttle.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/client/djrandom_client/test/test_throttle.py b/client/djrandom_client/test/test_throttle.py index 50e0d75..cdf134d 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) -- GitLab