def test_deserialize_mapped(): s = state.Success(message="1", result=1) f = state.Failed(message="2", result=2) serialized = StateSchema().dump(state.Mapped(message="message", map_states=[s, f])) deserialized = StateSchema().load(serialized) assert isinstance(deserialized, state.Mapped) assert len(deserialized.map_states) == 2 assert deserialized.map_states == [None, None] assert deserialized._result == NoResult
def test_serialize_mapped(): s = state.Success(message="1", result=1) f = state.Failed(message="2", result=2) serialized = StateSchema().dump(state.Mapped(message="message", map_states=[s, f])) assert isinstance(serialized, dict) assert serialized["type"] == "Mapped" assert serialized["message"] == "message" assert "_result" not in serialized assert "map_states" not in serialized assert serialized["n_map_states"] == 2 assert serialized["__version__"] == prefect.__version__
def test_raises_failed_state(self, mock_watch_flow_run, MockFlowRunView): MockFlowRunView.from_flow_run_id().get_latest().state = state.Failed( message="foo") with prefect.Flow("test") as flow: ref = wait_for_flow_run("flow-run-id", raise_final_state=True) flow_state = flow.run() task_state = flow_state.result[ref] assert task_state.is_failed() assert task_state.message == 'flow-run-id finished in state <Failed: "foo">' # The latest view is attached to the result assert task_state.result == MockFlowRunView.from_flow_run_id( ).get_latest() assert flow_state.is_failed()
class TestInitializeRun: def test_initialize_run_returns_state_and_context(self): state_, context = state.Pending(), {} s, c = Runner().initialize_run(state=state_, context=context) assert s is state_ assert c is context @pytest.mark.parametrize( "state", [ state.Success(), state.Failed(), state.Pending(), state.Scheduled(), state.Skipped(), state.Cached(), state.Retrying(), state.Running(), ], ) def test_initialize_run_returns_state(self, state): new_state, _ = Runner().initialize_run(state, context={}) assert new_state is state @pytest.mark.parametrize( "state", [ state.Submitted(state=state.Pending()), state.Submitted(state=state.Retrying()), state.Submitted(state=state.Scheduled()), state.Submitted(state=state.Resume()), state.Queued(state=state.Pending()), state.Queued(state=state.Retrying()), state.Queued(state=state.Scheduled()), state.Queued(state=state.Resume()), ], ) def test_initialize_run_gets_wrapped_state_from_submitted_states( self, state): new_state, _ = Runner().initialize_run(state, context={}) assert new_state is state.state def test_initialize_run_creates_pending_if_no_state_provided(self): new_state, _ = Runner().initialize_run(state=None, context={}) assert isinstance(new_state, state.Pending)
s.context = dict(tags=["foo", "bar"], info=dict(x=42), baz="99") serialized = StateSchema().dump(s) assert isinstance(serialized, dict) assert serialized["type"] == "Running" assert serialized["message"] == "hi" assert serialized["__version__"] == prefect.__version__ assert serialized["context"] == s.context deserialized = StateSchema().load(serialized) assert deserialized.is_running() assert deserialized.context == s.context def test_serialize_mapped(): s = state.Success(message="1", result=1) f = state.Failed(message="2", result=2) serialized = StateSchema().dump(state.Mapped(message="message", map_states=[s, f])) assert isinstance(serialized, dict) assert serialized["type"] == "Mapped" assert serialized["message"] == "message" assert "_result" not in serialized assert "map_states" not in serialized assert serialized["n_map_states"] == 2 assert serialized["__version__"] == prefect.__version__ def test_serialize_mapped_uses_set_n_map_states(): serialized = StateSchema().dump(state.Mapped(message="message", n_map_states=20)) assert isinstance(serialized, dict) assert serialized["type"] == "Mapped" assert serialized["message"] == "message"