def test_iterflow(): from jobflow import Flow, JobOrder # test unconnected graph add_job1 = get_test_job() add_job2 = get_test_job() flow = Flow([add_job1, add_job2]) iterated = list(flow.iterflow()) assert len(iterated) == 2 assert iterated[0][0] == add_job1 assert len(iterated[0][1]) == 0 assert iterated[1][0] == add_job2 assert len(iterated[1][1]) == 0 # test unconnected graph, linear order add_job1 = get_test_job() add_job2 = get_test_job() flow = Flow([add_job1, add_job2], order=JobOrder.LINEAR) iterated = list(flow.iterflow()) assert len(iterated) == 2 assert iterated[0][0] == add_job1 assert len(iterated[0][1]) == 0 assert iterated[1][0] == add_job2 assert len(iterated[1][1]) == 1 # test connected graph, wrong order add_job1 = get_test_job() add_job2 = get_test_job() add_job1.function_args = (2, add_job2.output) flow = Flow([add_job1, add_job2]) iterated = list(flow.iterflow()) assert len(iterated) == 2 assert iterated[0][0] == add_job2 assert len(iterated[0][1]) == 0 assert iterated[1][0] == add_job1 assert len(iterated[1][1]) == 1 # test connected graph, linear order add_job1 = get_test_job() add_job2 = get_test_job() add_job1.function_args = (2, add_job2.output) flow = Flow([add_job1, add_job2], order=JobOrder.LINEAR) with pytest.raises(ValueError): list(flow.iterflow())
def test_dag_validation(): from jobflow import Flow, Job # test cycle detection of jobs job1 = Job(add, function_args=(1, 2)) job2 = Job(add, function_args=(job1.output, 2)) job1.function_args = (job2.output, 2) flow = Flow(jobs=[job1, job2]) with pytest.raises(ValueError): next(flow.iterflow())