def test_revoking_schedule(self): global state dt = datetime.datetime(2011, 1, 1) dt2 = datetime.datetime(2037, 1, 1) r1 = modify_state.schedule(args=('k', 'v'), eta=dt, convert_utc=False) r2 = modify_state.schedule(args=('k2', 'v2'), eta=dt, convert_utc=False) r3 = modify_state.schedule(args=('k3', 'v3'), eta=dt2, convert_utc=False) r4 = modify_state.schedule(args=('k4', 'v4'), eta=dt2, convert_utc=False) # revoke r1 and r3 r1.revoke() r3.revoke() self.assertTrue(test_huey.is_revoked(r1.task)) self.assertFalse(test_huey.is_revoked(r2.task)) self.assertTrue(test_huey.is_revoked(r3.task)) self.assertFalse(test_huey.is_revoked(r4.task)) expected = [ #state, schedule ({}, 0), ({ 'k2': 'v2' }, 0), ({ 'k2': 'v2' }, 1), ({ 'k2': 'v2' }, 2), ] for i in range(4): curr_state, curr_sched = expected[i] # dequeue a *single* message task = test_huey.dequeue() self.worker(task) self.assertEqual(state, curr_state) self.assertEqual(test_huey.scheduled_count(), curr_sched) # lets pretend its 2037 future = dt2 + datetime.timedelta(seconds=1) self.scheduler(future) self.assertEqual(test_huey.scheduled_count(), 0) # There are two tasks in the queue now (r3 and r4) -- process both. for i in range(2): task = test_huey.dequeue() self.worker(task, future) self.assertEqual(state, {'k2': 'v2', 'k4': 'v4'})
def test_revoking_schedule(self): global state dt = datetime.datetime(2011, 1, 1) dt2 = datetime.datetime(2037, 1, 1) r1 = modify_state.schedule(args=('k', 'v'), eta=dt, convert_utc=False) r2 = modify_state.schedule(args=('k2', 'v2'), eta=dt, convert_utc=False) r3 = modify_state.schedule(args=('k3', 'v3'), eta=dt2, convert_utc=False) r4 = modify_state.schedule(args=('k4', 'v4'), eta=dt2, convert_utc=False) # revoke r1 and r3 r1.revoke() r3.revoke() self.assertTrue(test_huey.is_revoked(r1.task)) self.assertFalse(test_huey.is_revoked(r2.task)) self.assertTrue(test_huey.is_revoked(r3.task)) self.assertFalse(test_huey.is_revoked(r4.task)) expected = [ #state, schedule ({}, 0), ({'k2': 'v2'}, 0), ({'k2': 'v2'}, 1), ({'k2': 'v2'}, 2), ] for i in range(4): curr_state, curr_sched = expected[i] # dequeue a *single* message task = test_huey.dequeue() self.worker(task) self.assertEqual(state, curr_state) self.assertEqual(test_huey.scheduled_count(), curr_sched) # lets pretend its 2037 future = dt2 + datetime.timedelta(seconds=1) self.scheduler(future) self.assertEqual(test_huey.scheduled_count(), 0) # There are two tasks in the queue now (r3 and r4) -- process both. for i in range(2): task = test_huey.dequeue() self.worker(task, future) self.assertEqual(state, {'k2': 'v2', 'k4': 'v4'})