Пример #1
0
def test_scheduling_unsubmitted_target(backend, monkeypatch):
    target = Target('TestTarget', inputs=[], outputs=[], options={}, working_dir='/some/dir')
    graph = Graph(targets={'TestTarget': target})
    monkeypatch.setattr(graph, 'should_run', lambda t: True)
    assert schedule(graph, backend, target) == True
    assert len(backend.submit.call_args_list) == 1
    assert call(target, dependencies=set()) in backend.submit.call_args_list
Пример #2
0
def test_scheduling_non_submitted_targets_that_should_not_run(backend, monkeypatch):
    target1 = Target('TestTarget1', inputs=[], outputs=['test_output1.txt'], options={}, working_dir='/some/dir')
    target2 = Target('TestTarget2', inputs=[], outputs=['test_output2.txt'], options={}, working_dir='/some/dir')
    target3 = Target('TestTarget3', inputs=['test_output1.txt', 'test_output2.txt'], outputs=['test_output3.txt'], options={}, working_dir='/some/dir')
    graph = Graph(targets={'TestTarget1': target1, 'TestTarget2': target2, 'TestTarget3': target3})
    monkeypatch.setattr(graph, 'should_run', lambda t: False)
    assert schedule(graph, backend, target3) == False
    assert backend.submit.call_args_list == []
Пример #3
0
def test_scheduling_target_with_deps_that_are_not_submitted(backend, monkeypatch):
    target1 = Target('TestTarget1', inputs=[], outputs=['test_output.txt'], options={}, working_dir='/some/dir')
    target2 = Target('TestTarget2', inputs=['test_output.txt'], outputs=[], options={}, working_dir='/some/dir')
    graph = Graph(targets={'TestTarget1': target1, 'TestTarget2': target2})
    monkeypatch.setattr(graph, 'should_run', lambda t: True)
    assert schedule(graph, backend, target2) == True
    assert len(backend.submit.call_args_list) == 2
    assert call(target1, dependencies=set()) in backend.submit.call_args_list
    assert call(target2, dependencies=set([target1])) in backend.submit.call_args_list
Пример #4
0
def test_scheduling_branch_and_join_structure(backend, monkeypatch):
    target1 = Target('TestTarget1', inputs=[], outputs=['output1.txt'], options={}, working_dir='/some/dir')
    target2 = Target('TestTarget2', inputs=['output1.txt'], outputs=['output2.txt'], options={}, working_dir='/some/dir')
    target3 = Target('TestTarget3', inputs=['output1.txt'], outputs=['output3.txt'], options={}, working_dir='/some/dir')
    target4 = Target('TestTarget4', inputs=['output2.txt', 'output3.txt'], outputs=['final.txt'], options={}, working_dir='/some/dir')
    graph = Graph(targets={'target1': target1, 'target2': target2, 'target3': target3, 'target4': target4})
    monkeypatch.setattr(graph, 'should_run', lambda t: True)
    assert schedule(graph, backend, target4) == True
    assert len(backend.submit.call_args_list) == 4
    assert call(target1, dependencies=set([])) in backend.submit.call_args_list
    assert call(target2, dependencies=set([target1])) in backend.submit.call_args_list
    assert call(target3, dependencies=set([target1])) in backend.submit.call_args_list
    assert call(target4, dependencies=set([target3, target2])) in backend.submit.call_args_list