示例#1
0
def test_get_runnable_steps_many_upstream_dependencies(pipeline_steps):
    upstream_dep = PipelineStep(uid='upstream_dep', url='http://null', params={}, requires=[])
    upstream_dep.state = 'completed'
    pipeline_steps[1].requires.append(upstream_dep.uid)
    pipeline_steps.append(upstream_dep)

    runnables = get_runnable_steps(pipeline_steps)
    assert [r.uid for r in runnables] == ['signoff1']

    pipeline_steps[0].state = 'completed'
    runnables = get_runnable_steps(pipeline_steps)
    assert [r.uid for r in runnables] == ['signoff2']
示例#2
0
def ticktock():

    try:
        print('In ticktock')
        running_pipelines = [(uid, status, steps)
                             for (uid, (status, steps)) in PIPELINES.items()
                             if status == 'running']

        print('running_pipelines', running_pipelines)
        for uid, status, steps in running_pipelines:
            refreshed_steps = refresh_pipeline_steps(steps)
            print('refreshed_steps', refreshed_steps)
            runnables = get_runnable_steps(refreshed_steps)
            running = get_running_steps(refreshed_steps)

            if len(runnables) == 0 and len(running) == 0:
                update_pipeline_state(uid,
                                      state='finished')  # May be not a success
                print('Pipeline "{}" finished'.format(uid))

            elif runnables:
                start_steps(runnables)
                print('Started', runnables)

            else:
                print('Nothing starts but things are running')
    except Exception as e:
        import traceback
        print('OH NOES!', e)
        traceback.print_exc()
示例#3
0
def test_get_runnable_steps_many_many_downstream_deps_run(pipeline_steps):
    downstream_dep = PipelineStep(uid='another_downstream_dep', url='http://null', params={}, requires=[])
    pipeline_steps.append(downstream_dep)

    pipeline_steps[0].state = 'completed'
    runnables = get_runnable_steps(pipeline_steps)
    assert [r.uid for r in runnables] == ['signoff2', 'another_downstream_dep']
示例#4
0
def ticktock():

    try:
        print("In ticktock")
        running_pipelines = [
            (uid, status, steps) for (uid, (status, steps)) in PIPELINES.items() if status == "running"
        ]

        print("running_pipelines", running_pipelines)
        for uid, status, steps in running_pipelines:
            refreshed_steps = refresh_pipeline_steps(steps)
            print("refreshed_steps", refreshed_steps)
            runnables = get_runnable_steps(refreshed_steps)
            running = get_running_steps(refreshed_steps)

            if len(runnables) == 0 and len(running) == 0:
                update_pipeline_state(uid, state="finished")  # May be not a success
                print('Pipeline "{}" finished'.format(uid))

            elif runnables:
                start_steps(runnables)
                print("Started", runnables)

            else:
                print("Nothing starts but things are running")
    except Exception as e:
        import traceback

        print("OH NOES!", e)
        traceback.print_exc()
示例#5
0
def test_get_runnable_steps_many_can_run_at_the_beginning(pipeline_steps):
    another_first_step = PipelineStep(uid='parallel_action_to_signoff1',
                                      url='http://null',
                                      params={},
                                      requires=[])
    pipeline_steps.append(another_first_step)
    runnables = get_runnable_steps(pipeline_steps)
    assert [r.uid
            for r in runnables] == ['signoff1', 'parallel_action_to_signoff1']
示例#6
0
def test_get_runnable_steps_many_can_run_at_the_beginning(pipeline_steps):
    another_first_step = PipelineStep(uid='parallel_action_to_signoff1', url='http://null', params={}, requires=[])
    pipeline_steps.append(another_first_step)
    runnables = get_runnable_steps(pipeline_steps)
    assert [r.uid for r in runnables] == ['signoff1', 'parallel_action_to_signoff1']
示例#7
0
def test_get_runnable_steps_state_changed2(pipeline_steps):
    pipeline_steps[0].state = 'completed'
    pipeline_steps[1].state = 'completed'
    runnables = get_runnable_steps(pipeline_steps)
    assert len(runnables) == 1
    assert runnables[0].uid == 'publish1'
示例#8
0
def test_get_runnable_steps_dependency_in_failure(pipeline_steps):
    pipeline_steps[0].state = 'exception'
    runnables = get_runnable_steps(pipeline_steps)
    assert len(runnables) == 0
示例#9
0
def test_get_runnable_steps_state_changed(pipeline_steps):
    pipeline_steps[0].state = 'completed'
    runnables = get_runnable_steps(pipeline_steps)
    assert len(runnables) == 1
    assert runnables[0].uid == 'signoff2'
示例#10
0
def test_get_runnable_steps_when_nothing_has_started(pipeline_steps):
    runnables = get_runnable_steps(pipeline_steps)
    assert len(runnables) == 1
    assert runnables[0].uid == 'signoff1'