def test_task_lock(self): mock_session = MockedSession() gobworkflow.storage.storage.session = mock_session result = task_lock(Task()) self.assertTrue(result) self.assertTrue(len(mock_session.update_args) == 1) self.assertTrue(type(mock_session.update_args[0]['lock']) == int)
def _abort_tasks(self, stepid): """Aborts all tasks belonging to stepid, as long as they are not queued or started yet. :param stepid: :return: """ all_tasks = get_tasks_for_stepid(stepid) new = [task for task in all_tasks if task.status == self.STATUS_NEW] for task in new: if task_lock(task): task_update({'id': task.id, 'status': self.STATUS_ABORTED}) task_unlock(task) # Finish self._publish_complete(all_tasks[0])
def _queue_free_tasks_for_jobstep(self, jobstep_id): """Queues the free tasks for jobstep. :param stepid: :return: """ tasks = get_tasks_for_stepid(jobstep_id) completed = [ task.name for task in tasks if task.status == self.STATUS_COMPLETED ] new = [task for task in tasks if task.status == self.STATUS_NEW] for task in new: if all([dep in completed for dep in task.dependencies]): if task_lock(task): if task_get(task.id).status == self.STATUS_NEW: self._queue_task(task) task_unlock(task)
def test_task_lock_fail(self): mock_session = MockedSession() gobworkflow.storage.storage.session = mock_session mock_session.update = lambda _: 0 result = task_lock(Task()) self.assertFalse(result)