Example #1
0
    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
            }),
        ])