def test_req_count(self): self.assertEqual((yield get_req_count(self.redis, 'test', '1234')), 0) yield inc_req_count(self.redis, 'test', '1234') self.assertEqual((yield get_req_count(self.redis, 'test', '1234')), 1) yield dec_req_count(self.redis, 'test', '1234') self.assertEqual((yield get_req_count(self.redis, 'test', '1234')), 0) yield set_req_count(self.redis, 'test', '1234', 3) self.assertEqual((yield get_req_count(self.redis, 'test', '1234')), 3)
def test_requests(self): msgs = self.patch_log() k = pending_key('test') self.assertEqual( (yield get_req_count(self.app.redis, 'test', '1234')), 0) pop_all(msgs) resp = yield self.post('/requests/', { 'intervals': [30, 90], 'request': { 'url': 'http://www.example.org', 'method': 'GET', } }, headers={'X-Owner-ID': '1234'}) self.assertEqual(resp.code, http.OK) self.assertEqual((yield resp.content()), json.dumps({})) self.assertEqual(pop_all(msgs), [ ("Adding request to pending set", { 'owner_id': '1234', 'timestamp': 10, 'intervals': [30, 90], 'request': { 'url': 'http://www.example.org', 'method': 'GET', }, }) ]) self.assertEqual( (yield get_req_count(self.app.redis, 'test', '1234')), 1) self.assertEqual((yield zitems(self.app.redis, k)), [ (self.time + 30, { 'attempts': 0, 'timestamp': 10, 'owner_id': '1234', 'intervals': [30, 90], 'request': { 'url': 'http://www.example.org', 'method': 'GET', } }), ])
def test_retry_no_dec_req_count_on_reattempt(self): worker = yield self.mk_worker() srv = yield ToyServer.from_test(self) @srv.app.route('/') def route(req): req.setResponseCode(500) yield set_req_count(worker.redis, 'test', '1234', 3) yield worker.retry({ 'owner_id': '1234', 'timestamp': 5, 'attempts': 0, 'intervals': [10, 20], 'request': { 'url': srv.url, 'method': 'GET' } }) self.assertEqual( (yield get_req_count(worker.redis, 'test', '1234')), 3)
def req_limit_reached(self, owner_id): count = yield get_req_count(self.redis, self.prefix, owner_id) returnValue(count >= self.config.request_limit)