예제 #1
0
def test_calculate_heartbeat():
    """Check methods that have set timeout.
    """

    @task.decorate(heartbeat=5)
    def task_a():
        pass

    current_runner = runner.BaseRunner(task_a)
    assert current_runner.heartbeat(EMPTY_CONTEXT) == 5

    @task.decorate(heartbeat=3)
    def task_b():
        pass

    current_runner = runner.BaseRunner(task_b)
    assert current_runner.heartbeat(EMPTY_CONTEXT) == 3

    @task.decorate(heartbeat=4498)
    def task_c():
        pass

    def task_d():
        pass

    current_runner = runner.BaseRunner(
        task_a, task_b, task_c, task_d)
    assert current_runner.heartbeat(EMPTY_CONTEXT) == 4498
예제 #2
0
def test_calculate_timeout():
    """Check methods that have set timeout.
    """

    timeout = 10

    @task.timeout(timeout)
    def task_a():
        pass

    current_runner = runner.BaseRunner(task_a)
    assert current_runner.timeout(EMPTY_CONTEXT) == timeout

    @task.decorate(timeout=timeout)
    def task_b():
        pass

    current_runner = runner.BaseRunner(task_b)
    assert current_runner.timeout(EMPTY_CONTEXT) == timeout

    def task_c():
        pass

    current_runner = runner.BaseRunner(task_a, task_c)
    current_timeout = current_runner.timeout(EMPTY_CONTEXT)
    expected_timeout = timeout + runner.DEFAULT_TASK_TIMEOUT
    assert current_timeout == expected_timeout
예제 #3
0
def test_create_activity_instance_input_with_zero_or_empty_values(monkeypatch):
    """Test the creation of a context for an activity instance input.
    """
    @task.decorate()
    def task_a(value1, value2, value3, value4):
        pass

    activity_mock = MagicMock()
    activity_mock.name = 'activity'
    activity_mock.runner = runner.BaseRunner(
        task_a.fill(value1='zero',
                    value2='empty_list',
                    value3='empty_dict',
                    value4='none'))
    instance = activity.ActivityInstance(activity_mock,
                                         local_context=dict(zero=0,
                                                            empty_list=[],
                                                            empty_dict={},
                                                            none=None))

    resp = instance.create_execution_input()

    assert len(resp) == 6
    assert resp.get('zero') == 0
    assert resp.get('empty_list') == []
    assert resp.get('empty_dict') == {}
    assert 'none' not in resp
예제 #4
0
def test_execute_default_task_runner():
    """Should throw an exception.
    """

    current_runner = runner.BaseRunner()
    with pytest.raises(NotImplementedError):
        current_runner.execute(None, None)
예제 #5
0
def test_runner_requirements_without_decoration():
    """Should just throw an exception.
    """
    def task_a():
        pass

    current_runner = runner.BaseRunner(task_a)

    with pytest.raises(runner.NoRunnerRequirementsFound):
        current_runner.requirements(EMPTY_CONTEXT)
예제 #6
0
def test_create_activity_instance_input_without_decorate(monkeypatch):
    """Test the creation of a context input without the use of a decorator.
    """
    def task_a(value):
        pass

    activity_mock = MagicMock()
    activity_mock.name = 'activity'
    context = dict(foo='bar')
    local_context = dict(context='yes')

    activity_mock.runner = runner.BaseRunner(task_a)
    instance = activity.ActivityInstance(activity_mock,
                                         local_context=local_context,
                                         execution_context=context)

    resp = instance.create_execution_input()
    assert resp.get('foo') == 'bar'
    assert resp.get('context') == 'yes'
예제 #7
0
def test_create_activity_instance_input(monkeypatch):
    """Test the creation of a context for an activity instance input.
    """
    @task.decorate()
    def task_a(value):
        pass

    activity_mock = MagicMock()
    activity_mock.name = 'activity'
    activity_mock.runner = runner.BaseRunner(task_a.fill(value='context'))
    instance = activity.ActivityInstance(
        activity_mock,
        local_context=dict(context='yes', unused='no'),
        execution_context=dict(somemore='values'))
    resp = instance.create_execution_input()

    assert len(resp) == 2
    assert resp.get('context') == 'yes'
    assert resp.get('somemore') == 'values'
예제 #8
0
def test_runner_requirements():
    """Test the requirements for the runner
    """
    @task.decorate()
    def task_a():
        pass

    @task.decorate(timeout=20)
    def task_b():
        pass

    value_1 = 'context.value'
    value_2 = 'context.value_1'
    current_runner = runner.BaseRunner(task_a.fill(foo=value_1),
                                       task_b.fill(foobar=value_2))

    requirements = current_runner.requirements(EMPTY_CONTEXT)
    assert len(requirements) == 2
    assert value_1 in requirements
    assert value_2 in requirements
예제 #9
0
def test_calculate_default_timeout():
    """Tasks that do not have a set timeout get the default timeout.
    """

    task_list = runner.BaseRunner(lambda x: x)
    assert task_list.timeout(EMPTY_CONTEXT) == runner.DEFAULT_TASK_TIMEOUT
예제 #10
0
def test_calculate_heartbeat_with_no_tasks():
    """Task list without tasks has no heartbeat.
    """

    task_list = runner.BaseRunner()
    assert task_list.heartbeat(EMPTY_CONTEXT) == 0
예제 #11
0
def test_calculate_timeout_with_no_tasks():
    """Task list without task has no timeout.
    """

    task_list = runner.BaseRunner()
    assert task_list.timeout(EMPTY_CONTEXT) == 0