def test_absent_tasks(): # given dependencies = { 'a': {'b', 'c'}, } funcs = { 'a': a, 'b': b, 'c': c, } # then with pytest.raises(ValueError): # when taskmap.create_graph(funcs, dependencies)
def test_tasks_can_be_marked_done(): # given funcs = {'a': a, 'b': b} dependencies = {'a': ['b'], 'b': []} # when graph = taskmap.create_graph(funcs, dependencies, done=['b']) # then assert taskmap.get_ready_tasks(graph) == ['a']
def test_graph_ordered_ready(): # given dependencies = {'a': set(), 'b': set()} funcs = {'a': a, 'b': b} io_bound = ['a'] graph = taskmap.create_graph(funcs, dependencies, io_bound=io_bound) # when results = taskmap.get_ready_tasks(graph) # then assert results == ['a', 'b']
def test_async_parallel_speed(): # given funcs = {'r': r, 't': t, 'w': w, 'p': p} dependencies = {'r': [], 't': [], 'w': [], 'p': []} graph = taskmap.create_graph(funcs, dependencies, io_bound=['r', 't']) # when start = time.time() taskmap.run_parallel_async(graph, nprocs=2, sleep=.0001) end = time.time() # then assert end - start < .8
def test_parallel_speed(): # given funcs = {'x': u, 'y': v} dependencies = {'x': [], 'y': []} graph = taskmap.create_graph(funcs, dependencies) # when start = time.time() taskmap.run_parallel(graph, nprocs=2, sleep=.001) end = time.time() # then assert end - start < .8
def test_async_speed(): # given funcs = {'x': x, 'y': y} dependencies = {'x': [], 'y': []} graph = taskmap.create_graph(funcs, dependencies) # when start = time.time() taskmap.run_async(graph, sleep=0.001) end = time.time() # then assert end - start < .8
def test_async_error_handling(): # given dependencies = { 'c': ['e'], 'e': [], 'control': [], } funcs = { 'e': e, 'c': c, 'control': control, } # when graph = taskmap.create_graph(funcs.copy(), dependencies.copy()) graph = taskmap.run_async(graph, sleep=.001) graph_parallel = taskmap.create_graph(funcs.copy(), dependencies.copy()) graph_parallel = taskmap.run_parallel_async(graph_parallel, nprocs=2, sleep=.001) # then expected = { 'e': error, 'control': 5, 'c': 'Ancestor task e failed; task not run', } assert graph.results['c'] == expected['c'] assert graph.results['e'].__class__ == expected['e'].__class__ assert graph.results['e'].args == expected['e'].args assert graph.results['control'] == 5 assert graph_parallel.results['c'] == expected['c'] assert graph_parallel.results['e'].__class__ == expected['e'].__class__ assert graph_parallel.results['e'].args == expected['e'].args assert graph.results['control'] == 5
def test_logging_filename_change(): # given dependencies = {'a': []} funcs = {'a': a} name = 'test-taskmap-name' graph = taskmap.create_graph(funcs, dependencies, name=name, logging_config={'write': True}) # when graph = taskmap.run(graph) # then assert any(name in f for f in os.listdir('./'))
def test_cached_results_are_used(): # given funcs = {'a': a, 'b': b} dependencies = {'b': ['a'], 'a': []} results = {'a': 5} graph = taskmap.create_graph( funcs, dependencies, done=['a'], results=results) # when graph = taskmap.run(graph) # then assert graph.results['b'] == 15
def test_run_parllel_async(): # given dependencies = { 'ac': ['along_task', 'ab'], 'ab': ['along_task'], 'along_task': [], } funcs = { 'along_task': along_task, 'ab': ab, 'ac': ac, } graph = taskmap.create_graph(funcs, dependencies) # when graph = taskmap.run_parallel_async(graph, nprocs=2, sleep=.001) # then assert graph.results == {'along_task': 5, 'ab': 15, 'ac': 40}
def test_run_parallel(): # given dependencies = { 'c': ['long_task', 'b'], 'b': ['long_task'], 'long_task': [], } funcs = { 'long_task': long_task, 'b': b, 'c': c, } graph = taskmap.create_graph(funcs, dependencies) # when graph = taskmap.run_parallel(graph, nprocs=2, sleep=.001) # then assert graph.results == {'long_task': 5, 'b': 15, 'c': 40}
def test_run_pass_args(): # given dependencies = { 'c': ['a', 'b'], 'b': ['a'], 'a': [], } funcs = { 'a': a, 'b': b, 'c': c, } graph = taskmap.create_graph(funcs, dependencies) # when graph = taskmap.run(graph) # then assert graph.results == {'a': 5, 'b': 15, 'c': 40}
def test_graph_ready(): # given dependencies = { 'a': {'b', 'c'}, 'b': {'c'}, 'c': set(), } funcs = { 'a': a, 'b': b, 'c': c, } graph = taskmap.create_graph(funcs, dependencies) # when results = taskmap.get_ready_tasks(graph) # then assert results == ['c']
def test_mark_as_done_except(): # given dependencies = { 'a': {'b', 'c'}, 'b': {'c'}, 'c': set(), } funcs = { 'a': a, 'b': b, 'c': c, } graph = taskmap.create_graph(funcs, dependencies) graph = taskmap.mark_as_done_except(graph, ['c']) results = taskmap.get_ready_tasks(graph) # then assert results == ['c']
def test_rebuilding_graph_from_failure(): # given dependencies = { 'c': ['e'], 'e': [], 'w': [], } funcs = { 'e': e, 'c': c, 'w': w, } graph = taskmap.create_graph(funcs.copy(), dependencies.copy()) graph = taskmap.run_parallel_async(graph, nprocs=2, sleep=.001) # when new_graph = taskmap.reset_failed_tasks(graph) # then assert new_graph.done == ['w']