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

Method test_revoke_task_instance

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

Source from the content-addressed store, hash-verified

246 self.assertEqual(state, {3: 3})
247
248 def test_revoke_task_instance(self):
249 state = {}
250 @self.huey.task()
251 def task_a(n):
252 state[n] = n
253 return n + 1
254
255 r1, r2, r3 = [task_a(i) for i in (1, 2, 3)]
256 self.assertEqual(len(self.huey), 3)
257
258 r1.revoke()
259 r3.revoke()
260
261 self.assertTrue(r1.is_revoked())
262 self.assertFalse(r2.is_revoked())
263 self.assertTrue(r3.is_revoked())
264
265 self.assertTrue(self.huey.is_revoked(r1))
266 self.assertTrue(self.huey.is_revoked(r1.task.id))
267 self.assertFalse(self.huey.is_revoked(r2))
268 self.assertFalse(self.huey.is_revoked(r2.task.id))
269
270 # Task is discarded and not executed, due to being revoked.
271 t1 = self.huey.dequeue()
272 self.assertTrue(self.huey.execute(t1) is None)
273 self.assertTrue(r1.get() is None)
274 self.assertEqual(state, {})
275
276 # Second invocation will be executed normally.
277 t2 = self.huey.dequeue()
278 self.assertEqual(self.huey.execute(t2), 3)
279 self.assertEqual(r2.get(), 3)
280 self.assertEqual(state, {2: 2})
281
282 # Third invocation is also revoked, but we will restore it beforehand.
283 t3 = self.huey.dequeue()
284 r3.restore()
285 self.assertFalse(r3.is_revoked())
286 self.assertEqual(self.huey.execute(t3), 4)
287 self.assertEqual(r3.get(), 4)
288 self.assertEqual(state, {2: 2, 3: 3})
289
290 # Attempting to re-enqueue and re-execute the revoked t1 will now work,
291 # as it is only revoked once by default.
292 self.assertFalse(r1.is_revoked())
293 self.huey.enqueue(t1)
294 self.assertEqual(self.execute_next(), 2)
295 self.assertEqual(state, {1: 1, 2: 2, 3: 3})
296 self.assertFalse(r1.is_revoked()) # Still revoked.
297
298 def test_revoke_task_instance_persistent(self):
299 state = []

Callers

nothing calls this directly

Calls 8

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

Tested by

no test coverage detected