コード例 #1
0
def test_reference_tasks():
    x = Task("x")
    y = Task("y")
    z = Task("z")
    f = Flow(name="test", tasks=[x, y, z])

    f.set_reference_tasks([y])
    assert f.reference_tasks() == {y}
    f2 = FlowSchema().load(FlowSchema().dump(f))
    assert f2.reference_tasks() == {t for t in f2.tasks if t.name == "y"}
コード例 #2
0
ファイル: test_flow_runner.py プロジェクト: laisbsc/prefect
def test_flow_run_state_determined_by_reference_tasks():
    flow = Flow(name="test")
    t1 = ErrorTask()
    t2 = SuccessTask(trigger=prefect.triggers.all_finished)
    flow.add_edge(t1, t2)

    flow.set_reference_tasks([t1])
    flow_state = flow.run()
    assert isinstance(flow_state, Failed)
    assert isinstance(flow_state.result[t1], Failed)
    assert isinstance(flow_state.result[t2], Success)
コード例 #3
0
ファイル: test_flow_runner.py プロジェクト: zviri/prefect
def test_flow_run_state_not_determined_by_reference_tasks_if_terminal_tasks_are_not_finished():
    flow = Flow(name="test")
    t1 = ErrorTask()
    t2 = RaiseRetryTask(trigger=prefect.triggers.all_finished)
    flow.add_edge(t1, t2)

    flow.set_reference_tasks([t1])
    flow_state = FlowRunner(flow=flow).run(return_tasks=flow.tasks)
    assert flow_state.is_running()
    assert flow_state.result[t1].is_failed()
    assert flow_state.result[t2].is_retrying()
コード例 #4
0
ファイル: test_flows.py プロジェクト: tuantmtb/prefect
def test_serialize_flow_sorts_nested_schemas():
    a = Parameter("a", default=1)
    b = Parameter("b", default=2)
    c = Task("c")
    d = Task("d")
    f = Flow("test")
    d.set_upstream(c, flow=f)
    c.set_upstream(b, flow=f).set_upstream(a, flow=f)

    f.set_reference_tasks([d, c])

    # Must use `f.serialize` instead of `FlowSchema().dump` because task slugs
    # are not guaranteed to be set yet
    serialized = f.serialize()

    assert [param["slug"] for param in serialized["parameters"]] == ["a", "b"]
    assert [task["slug"] for task in serialized["tasks"]] == ["a", "b", "c-1", "d-1"]
    assert [
        (edge["upstream_task"]["slug"], edge["downstream_task"]["slug"])
        for edge in serialized["edges"]
    ] == [("a", "c-1"), ("b", "c-1"), ("c-1", "d-1")]
    assert [task["slug"] for task in serialized["reference_tasks"]] == ["c-1", "d-1"]