def test_requests_limit_reached(self):
        msgs = self.patch_log()
        yield set_req_count(self.app.redis, 'test', '1234', 500)

        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(pop_all(msgs), [
            ("Request limit reached for 1234 at a request count of 500",)
        ])

        self.assertEqual(resp.code, 429)
        self.assertEqual(json.loads((yield resp.content())), {
            'errors': [{
                'type': 'too_many_requests',
                'message': "Only 500 unfinished requests are "
                           "allowed per owner"
            }]
        })
    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_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)