Beispiel #1
0
    def test_start_workflow_without_task(self):
        with db_api.transaction():
            self._create_workflow_execution({})

            wf_ctrl = reverse_wf.ReverseWorkflowController(self.wf_ex)

        self.assertRaises(exc.WorkflowException, wf_ctrl.continue_workflow)
Beispiel #2
0
    def test_start_workflow_task1(self):
        with db_api.transaction():
            self._create_workflow_execution({'task_name': 'task1'})

            wf_ctrl = reverse_wf.ReverseWorkflowController(self.wf_ex)

            cmds = wf_ctrl.continue_workflow()

        self.assertEqual(1, len(cmds))
        self.assertEqual('task1', cmds[0].task_spec.get_name())
Beispiel #3
0
    def test_start_workflow_task1(self, get_workflow_execution):
        get_workflow_execution.return_value = self.wf_ex

        wf_ctrl = reverse_wf.ReverseWorkflowController(self.wf_ex)

        self.wf_ex.params = {'task_name': 'task1'}

        cmds = wf_ctrl.continue_workflow()

        self.assertEqual(1, len(cmds))
        self.assertEqual('task1', cmds[0].task_spec.get_name())
Beispiel #4
0
    def setUp(self):
        super(ReverseWorkflowControllerTest, self).setUp()

        wb_spec = spec_parser.get_workbook_spec_from_yaml(WB)

        wf_ex = models.WorkflowExecution(
            id='1-2-3-4',
            spec=wb_spec.get_workflows().get('wf').to_dict(),
            state=states.RUNNING,
            params={}
        )

        self.wf_ex = wf_ex
        self.wb_spec = wb_spec
        self.wf_ctrl = reverse_wf.ReverseWorkflowController(wf_ex)
Beispiel #5
0
    def test_continue_workflow(self):
        with db_api.transaction():
            self._create_workflow_execution({'task_name': 'task2'})

            wf_ctrl = reverse_wf.ReverseWorkflowController(self.wf_ex)

            # Assume task1 completed.
            task1_ex = self._create_task_execution('task1', states.SUCCESS)

            task1_ex.executions.append(
                models.ActionExecution(
                    name='std.echo',
                    workflow_name='wf',
                    state=states.SUCCESS,
                    output={'result': 'Hey'},
                    accepted=True
                )
            )

            cmds = wf_ctrl.continue_workflow()

            task1_ex.processed = True

            self.assertEqual(1, len(cmds))
            self.assertEqual('task2', cmds[0].task_spec.get_name())

            # Now assume task2 completed.
            task2_ex = self._create_task_execution('task2', states.SUCCESS)

            task2_ex.executions.append(
                models.ActionExecution(
                    name='std.echo',
                    workflow_name='wf',
                    state=states.SUCCESS,
                    output={'result': 'Hi!'},
                    accepted=True
                )
            )

            cmds = wf_ctrl.continue_workflow()

            task1_ex.processed = True

            self.assertEqual(0, len(cmds))
Beispiel #6
0
    def test_start_workflow_without_task(self, get_workflow_execution):
        get_workflow_execution.return_value = self.wf_ex

        wf_ctrl = reverse_wf.ReverseWorkflowController(self.wf_ex)

        self.assertRaises(exc.WorkflowException, wf_ctrl.continue_workflow)