def maintain(self): self.log("Checking for requests to move from pending to ready") yield pop_pending_add_ready( self.redis, self.config.redis_prefix, from_time=0, to_time=self.clock.seconds(), chunk_size=self.config.pop_chunk_size, tap=self.each_chunk)
def test_pop_pending_add_ready(self): k_p = pending_key('test') k_r = ready_key('test') for t in range(5, 40, 5): yield add_pending(self.redis, 'test', { 'owner_id': '1234', 'timestamp': t, 'attempts': 0, 'intervals': [10], 'request': {'foo': t} }) pending_reqs = [r for t, r in (yield zitems(self.redis, k_p))] yield pop_pending_add_ready(self.redis, 'test', 0, 50) self.assertEqual((yield lvalues(self.redis, k_r)), pending_reqs) self.assertEqual((yield zitems(self.redis, k_p)), [])
def test_pop_pending_add_ready_chunks_tap(self): k_p = pending_key('test') taps = [] for t in range(5, 40, 5): yield add_pending(self.redis, 'test', { 'owner_id': '1234', 'timestamp': t, 'attempts': 0, 'intervals': [10], 'request': {'foo': t} }) pending_reqs = yield self.redis.zrange(k_p, 0, -1) yield pop_pending_add_ready( self.redis, 'test', 0, 50, chunk_size=3, tap=taps.append) self.assertEqual(taps, [ pending_reqs[:3], pending_reqs[3:6], pending_reqs[6:], ])
def test_pop_pending_add_ready_chunks(self): calls = self.redis_spy('zrangebyscore') k = pending_key('test') for t in range(5, 40, 5): yield add_pending(self.redis, 'test', { 'owner_id': '1234', 'timestamp': t, 'attempts': 0, 'intervals': [10], 'request': {'foo': t} }) yield pop_pending_add_ready( self.redis, 'test', 0, 50, chunk_size=3) self.assertEqual(calls, 4 * [ ((k, 0, 50), { 'offset': 0, 'count': 3 }), ])