MCPcopy Index your code
hub / github.com/coleifer/huey / test_revoke_task

Method test_revoke_task

huey/tests/test_api.py:202–246  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

200 self.assertEqual(self.huey.execute(task, t20), 6)
201
202 def test_revoke_task(self):
203 state = {}
204 @self.huey.task()
205 def task_a(n):
206 state[n] = n # Modify some state for extra visibility.
207 return n + 1
208
209 self.assertFalse(task_a.is_revoked())
210 task_a.revoke()
211 self.assertTrue(task_a.is_revoked())
212
213 r1, r2, r3 = task_a(1), task_a(2), task_a(3)
214 self.assertEqual(len(self.huey), 3)
215
216 # The result-wrapper will indicate the tasks are revoked.
217 for r in (r1, r2, r3):
218 self.assertTrue(r.is_revoked())
219 self.assertTrue(self.huey.is_revoked(r))
220 # We don't have the task class when using an ID so this doesn't
221 # work.
222 self.assertFalse(self.huey.is_revoked(r.task.id))
223
224 # Task is discarded and not executed, due to being revoked.
225 t1 = self.huey.dequeue()
226 self.assertTrue(self.huey.execute(t1) is None)
227 self.assertTrue(r1.get() is None)
228 self.assertEqual(state, {})
229
230 # Next task is also discarded.
231 self.assertTrue(r2.is_revoked())
232 self.assertTrue(self.execute_next() is None)
233 self.assertTrue(r2.get() is None)
234 self.assertEqual(state, {})
235
236 # Restore task, we will see side-effects and results of execution.
237 self.assertTrue(task_a.is_revoked()) # Still revoked.
238 self.assertTrue(r3.is_revoked())
239 self.assertTrue(task_a.restore())
240 self.assertFalse(task_a.is_revoked())
241 self.assertFalse(r3.is_revoked())
242
243 t3 = self.huey.dequeue()
244 self.assertEqual(self.huey.execute(t3), 4)
245 self.assertEqual(r3.get(), 4)
246 self.assertEqual(state, {3: 3})
247
248 def test_revoke_task_instance(self):
249 state = {}

Callers

nothing calls this directly

Calls 7

execute_nextMethod · 0.80
is_revokedMethod · 0.45
revokeMethod · 0.45
dequeueMethod · 0.45
executeMethod · 0.45
getMethod · 0.45
restoreMethod · 0.45

Tested by

no test coverage detected