def test_already_completed_task(self):
     self._reset_task()
     execute(self.project.id, self.step.slug)
     with self.assertRaises(MachineExecutionError):
         execute(self.project.id, self.step.slug)
     self._assert_correct_machine_task_state(
         TaskAssignment.Status.SUBMITTED, Task.Status.COMPLETE)
 def test_marking_failed_task_assignment(self, mock_logger):
     self.machine_function_mock.side_effect = Exception('Function failed.')
     self._reset_task()
     execute(self.project.id, self.step.slug)
     self._assert_correct_machine_task_state(
         TaskAssignment.Status.FAILED, Task.Status.PROCESSING)
     mock_logger.exception.assert_called_with('Machine task has failed')
     self.machine_function_mock.side_effect = None
 def test_aborted_project(self):
     self._reset_task()
     self.project.status = Project.Status.ABORTED
     self.project.save()
     self.task.status = Task.Status.PROCESSING
     self.task.save()
     execute(self.project.id, self.step.slug)
     self._assert_correct_machine_task_state(
         TaskAssignment.Status.SUBMITTED, Task.Status.ABORTED)
Esempio n. 4
0
 def test_aborted_project(self):
     self._reset_task()
     self.project.status = Project.Status.ABORTED
     self.project.save()
     self.task.status = Task.Status.PROCESSING
     self.task.save()
     execute(self.project.id, self.step.slug)
     self._assert_correct_machine_task_state(
         TaskAssignment.Status.SUBMITTED, Task.Status.ABORTED)
Esempio n. 5
0
    def test_reassigning_failed_task_assignment(self):
        self._reset_task()
        execute(self.project.id, self.step.slug)

        # Pretend that the machine task failed
        self.task.status = Task.Status.PROCESSING
        self.task.save()
        assignment = self.task.assignments.first()
        assignment.status = TaskAssignment.Status.FAILED
        assignment.save()
        self.assertEquals(self.machine_function_mock.call_count, 1)
        self.machine_function_mock.call_count = 0

        # New machine picks up the failed task
        execute(self.project.id, self.step.slug)
        self._assert_correct_machine_task_state(
            TaskAssignment.Status.SUBMITTED, Task.Status.COMPLETE)
Esempio n. 6
0
    def test_already_processing_task(self):
        self._reset_task()
        execute(self.project.id, self.step.slug)

        # Pretend that the task is still processing
        self.task.status = Task.Status.PROCESSING
        self.task.save()
        assignment = self.task.assignments.first()
        assignment.status = TaskAssignment.Status.PROCESSING
        assignment.save()

        # Reset iteration for assignment
        assignment.iterations.all().delete()
        Iteration.objects.create(assignment=assignment,
                                 start_datetime=assignment.start_datetime)

        # Another machine attempts to perform task
        with self.assertRaises(MachineExecutionError):
            execute(self.project.id, self.step.slug)
        self._assert_correct_machine_task_state(
            TaskAssignment.Status.PROCESSING, Task.Status.PROCESSING)
    def test_already_processing_task(self):
        self._reset_task()
        execute(self.project.id, self.step.slug)

        # Pretend that the task is still processing
        self.task.status = Task.Status.PROCESSING
        self.task.save()
        assignment = self.task.assignments.first()
        assignment.status = TaskAssignment.Status.PROCESSING
        assignment.save()

        # Reset iteration for assignment
        assignment.iterations.all().delete()
        Iteration.objects.create(
            assignment=assignment,
            start_datetime=assignment.start_datetime)

        # Another machine attempts to perform task
        with self.assertRaises(MachineExecutionError):
            execute(self.project.id, self.step.slug)
        self._assert_correct_machine_task_state(
            TaskAssignment.Status.PROCESSING, Task.Status.PROCESSING)
Esempio n. 8
0
 def test_new_task(self):
     self._reset_task()
     execute(self.project.id, self.step.slug)
     self._assert_correct_machine_task_state(
         TaskAssignment.Status.SUBMITTED, Task.Status.COMPLETE)
 def schedule(self, project_id, step_slug):
     execute(project_id, step_slug)
Esempio n. 10
0
 def schedule(self, project_id, step_slug):
     execute(project_id, step_slug)