def test_rate_limit_only_applies_to_same_url(self): before_call = datetime.datetime.now() response1 = flock.rateLimitedRequest('http://url1.com', 5.0) response2 = flock.rateLimitedRequest('http://url2.com', 5.0) after_call = datetime.datetime.now() delta = after_call - before_call self.assertLess(delta.seconds, 5.0)
def test_rate_limit_call_waits_no_longer_than_timeout_for_second_request(self): before_call = datetime.datetime.now() response = flock.rateLimitedRequest('http://url.com', 1.0) response = flock.rateLimitedRequest('http://url.com', 1.0) after_call = datetime.datetime.now() delta = after_call - before_call self.assertLess(delta.seconds, 2.0)
def test_rate_limit_call_waits_set_seconds_before_second_attempt(self): before_call = datetime.datetime.now() response = flock.rateLimitedRequest('http://url.com', 1.0) response = flock.rateLimitedRequest('http://url.com', 1.0) after_call = datetime.datetime.now() delta = after_call - before_call self.assertGreaterEqual(delta.seconds, 1.0)
def test_rate_limit_returns_urlopen_reponse(self): urlopen_response = io.StringIO(u'{}') flock.urllib2.urlopen = mock.MagicMock(return_value=urlopen_response) response = flock.rateLimitedRequest('url', 1.0) self.assertEquals(response, urlopen_response)
def test_rate_limit_calls_urlopen_when_timeout_has_passed(self): response = flock.rateLimitedRequest('url', 1.0) self.assertEqual(flock.urllib2.urlopen.call_count, 1)