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)
Example #2
0
    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])
Example #3
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)