Esempio n. 1
0
    def test_if_activation_activate(self):
        flow_task_mock = mock.Mock(spec=flow.If(lambda act: True))
        flow_task_mock._outgoing = mock.Mock(return_value=[])
        prev_activation_mock = mock.Mock(spec=activation.StartActivation())

        act = gates.IfActivation.activate(flow_task_mock, prev_activation_mock,
                                          Token('start'))
        act.task.save.assert_has_calls(())
Esempio n. 2
0
    def test_view_activation_activate(self):
        flow_task_mock = mock.Mock(
            spec=flow.View(lambda *args, **kwargs: None))
        flow_task_mock._outgoing = mock.Mock(return_value=[])
        prev_activation_mock = mock.Mock(spec=activation.StartActivation())

        act = activation.TaskActivation.activate(flow_task_mock,
                                                 prev_activation_mock,
                                                 Token('start'))

        act.task.save.assert_has_calls(())
Esempio n. 3
0
    def test_switch_activation_activate(self):
        flow_task_mock = mock.Mock(spec=flow.Split())
        flow_task_mock._outgoing = mock.Mock(return_value=[])
        type(flow_task_mock).branches = mock.PropertyMock(
            return_value=[(mock.Mock(), lambda p: True)])
        prev_activation_mock = mock.Mock(spec=activation.StartActivation())

        act = gates.SplitActivation.activate(flow_task_mock,
                                             prev_activation_mock,
                                             Token('start'))
        act.task.save.assert_has_calls(())
Esempio n. 4
0
    def test_job_activation_activate(self):
        flow_task_mock = mock.Mock(
            spec=celery.Job(lambda *args, **kwargs: None))
        flow_task_mock._outgoing = mock.Mock(return_value=[])
        prev_activation_mock = mock.Mock(spec=activation.StartActivation())

        with mock.patch('viewflow.contrib.celery.get_task_ref'):
            act = celery.JobActivation.activate(flow_task_mock,
                                                prev_activation_mock,
                                                Token('start'))
            act.task.save.assert_has_calls(())
            self.assertEqual(1, flow_task_mock.job.apply_async.call_count)
Esempio n. 5
0
    def test_start_activation_lifecycle(self):
        flow_task_mock = mock.Mock(spec=flow.Start())
        flow_task_mock._outgoing = mock.Mock(return_value=[])

        act = activation.StartActivation()
        act.initialize(flow_task_mock)
        act.prepare()
        act.done()

        act.task.prepare.assert_called_once_with()
        act.task.done.assert_called_once_with()
        act.process.start.assert_called_once_with()
        flow_task_mock._outgoing.assert_any_call()
Esempio n. 6
0
    def test_job_activation_lifecycle(self):
        flow_task_mock = mock.Mock(
            spec=celery.Job(lambda *args, **kwargs: None))
        flow_task_mock._outgoing = mock.Mock(return_value=[])
        task_mock = mock.Mock(spec=Task())

        act = celery.JobActivation()
        act.initialize(flow_task_mock, task_mock)
        act.prepare()
        act.start()
        act.done(result=None)

        act.task.done.assert_called_once_with()
        flow_task_mock._outgoing.assert_any_call()
Esempio n. 7
0
    def test_view_activation_lifecycle(self):
        flow_task_mock = mock.Mock(
            spec=flow.View(lambda *args, **kwargs: None))
        flow_task_mock._outgoing = mock.Mock(return_value=[])
        task_mock = mock.Mock(spec=Task())

        act = activation.TaskActivation()
        act.initialize(flow_task_mock, task_mock)
        act.prepare()
        act.done()

        act.task.prepare.assert_called_once_with()
        act.task.done.assert_called_once_with()
        flow_task_mock._outgoing.assert_any_call()
Esempio n. 8
0
class ProcessStub(object):
    _default_manager = mock.Mock()

    def __init__(self, *args, **kwargs):
        pass

    def save(self):
        pass
    def test_failed_activate_next(self):
        job_task_mock = mock.Mock(spec=Task())
        gate_task_mock = mock.Mock(spec=Task())

        next_flow_task_mock = mock.Mock()
        next_flow_task_mock.flow_cls.task_cls = mock.Mock(
            return_value=gate_task_mock)
        next_flow_task_mock.dst.activate = \
            lambda prev_activation, token: activation.GateActivation().activate(next_flow_task_mock, prev_activation, token)  # NOQA

        flow_task_mock = mock.MagicMock(spec=celery.Job(lambda p: None))
        flow_task_mock.flow_cls.task_cls.objects.get = mock.Mock(
            return_value=job_task_mock)
        flow_task_mock.activation_cls = mock.Mock(
            return_value=celery.JobActivation())
        flow_task_mock._outgoing = mock.Mock(
            return_value=[next_flow_task_mock])

        with mock.patch('viewflow.flow.job.import_task_by_ref',
                        return_value=flow_task_mock):
            successful_job(flow_task_strref='unit/TestFlow.job',
                           process_pk=-1,
                           task_pk=-1)

        job_task_mock.prepare.assert_called_once_with()
        job_task_mock.start.assert_called_once_with()
        job_task_mock.done.assert_called_once_with()
        self.assertFalse(job_task_mock.error.called)

        gate_task_mock.prepare.assert_called_once_with()
        gate_task_mock.error.assert_called_once_with()
        self.assertFalse(gate_task_mock.done.called)
    def test_failed_job(self):
        task_mock = mock.Mock(spec=Task())
        flow_task_mock = mock.MagicMock(spec=celery.Job(lambda p: None))
        flow_task_mock.flow_cls.task_cls.objects.get = mock.Mock(
            return_value=task_mock)
        flow_task_mock.activation_cls = mock.Mock(
            return_value=celery.JobActivation())

        with mock.patch('viewflow.flow.job.import_task_by_ref',
                        return_value=flow_task_mock):
            with self.assertRaises(NotImplementedError):
                failure_job(flow_task_strref='unit/TestFlow.job',
                            process_pk=-1,
                            task_pk=-1)

        task_mock.prepare.assert_called_once_with()
        task_mock.start.assert_called_once_with()
        task_mock.error.assert_called_once_with()
        self.assertFalse(task_mock.done.called)
Esempio n. 11
0
    class ProcessStub(object):
        _default_manager = mock.Mock()

        def __init__(self, flow_cls=None):
            self.flow_cls = flow_cls

        def active_tasks(self):
            return []

        def save(self):
            return
Esempio n. 12
0
class TaskStub(object):
    _default_manager = mock.Mock()

    def __init__(self, flow_task=None):
        self.flow_task = flow_task
        self.process_id = 1
        self.pk = 1
        self.status = STATUS.NEW

    @property
    def leading(self):
        from viewflow.models import Task
        return Task.objects.none()

    def save(self):
        return
Esempio n. 13
0
    def test_join_activation_activate(self):
        prev_task_mock = mock.Mock(spec=Task())
        prev_task_mock.token = Token('start/1_2')

        task_mock = mock.Mock(spec=Task())
        task_mock.previous.all = mock.Mock(return_value=[prev_task_mock])

        flow_task_mock = mock.Mock(spec=flow.Join())
        flow_task_mock._outgoing = mock.Mock(return_value=[])
        flow_task_mock.flow_cls.task_cls = mock.Mock(return_value=task_mock)
        flow_task_mock.flow_cls.task_cls._default_manager.filter = mock.Mock(
            return_value=Task.objects.none())

        prev_activation_mock = mock.Mock(spec=activation.StartActivation())

        act = gates.JoinActivation.activate(flow_task_mock,
                                            prev_activation_mock,
                                            Token('start'))
        act.task.save.assert_has_calls(())
        flow_task_mock._outgoing.assert_any_call()
Esempio n. 14
0
    def test_end_activation_activate(self):
        active_task_mock = mock.Mock()
        process_mock = mock.Mock(spec=Process())
        process_mock.active_tasks = mock.Mock(return_value=[active_task_mock])

        flow_task_mock = mock.Mock(spec=flow.End())
        flow_task_mock._outgoing = mock.Mock(return_value=[])
        flow_task_mock.flow_cls.process_cls._default_manager.get = mock.Mock(
            return_value=process_mock)
        prev_activation_mock = mock.Mock(spec=activation.StartActivation())

        act = activation.EndActivation.activate(flow_task_mock,
                                                prev_activation_mock,
                                                Token('start'))

        act.task.save.assert_has_calls(())
        act.process.finish.assert_has_calls(())
        active_task_mock.flow_task.deactivate.assert_called_once_with(mock.ANY)