def test_get_next_task_raise_shutdown_exception_if_locked_and_no_tasks_running(self): tm = TaskManager(conf={'worker': self._worker}) tm.lock() # ensure no tasks are running self.assertEqual(len(self._worker.worker.running_tasks()), 0) with self.assertRaises(ShutdownException): tm.get_next_task()
def test_get_next_task_runs_assigened_awaited_task_if_locked(self): t1 = Task.objects.create( worker=self._worker.worker, arch=self._arch, channel=self._channel, owner=self._user, method='DummyForegroundTask', state=TASK_STATES['OPEN'], ) t2 = Task.objects.create( worker=self._worker.worker, arch=self._arch, channel=self._channel, owner=self._user, method='DummyForegroundTask', state=TASK_STATES['ASSIGNED'], awaited=True, parent=t1, ) t3 = Task.objects.create( worker=self._worker.worker, arch=self._arch, channel=self._channel, owner=self._user, method='DummyForegroundTask', waiting=True, parent=t2, state=TASK_STATES['FREE'], ) self.assertEqual(t1.state, TASK_STATES['OPEN']) self.assertEqual(t2.state, TASK_STATES['ASSIGNED']) self.assertEqual(t3.state, TASK_STATES['FREE']) tm = TaskManager(conf={'worker': self._worker}) tm.lock() tm.get_next_task() # reload task info t1 = Task.objects.get(id=t1.id) self.assertEqual(t1.state, TASK_STATES['OPEN']) t2 = Task.objects.get(id=t2.id) self.assertEqual(t2.state, TASK_STATES['CLOSED']) t3 = Task.objects.get(id=t3.id) self.assertEqual(t3.state, TASK_STATES['FREE'])
def test_lock(self): tm = TaskManager(conf={'worker': self._worker}) self.assertFalse(tm.locked) tm.lock() self.assertTrue(tm.locked)