def test_deploy_flow_run_logs_flow_run_exceptions(monkeypatch, caplog, cloud_api): gql_return = MagicMock( return_value=MagicMock(data=MagicMock(write_run_logs=MagicMock(success=True))) ) client = MagicMock() client.return_value.write_run_logs = gql_return monkeypatch.setattr("prefect.agent.agent.Client", MagicMock(return_value=client)) agent = Agent() agent.deploy_flow = MagicMock(side_effect=Exception("Error Here")) agent._deploy_flow_run( flow_run=GraphQLResult( { "id": "id", "serialized_state": Scheduled().serialize(), "scheduled_start_time": str(pendulum.now()), "version": 1, "task_runs": [ GraphQLResult( { "id": "id", "version": 1, "serialized_state": Scheduled().serialize(), } ) ], } ) ) assert client.write_run_logs.called client.write_run_logs.assert_called_with( [dict(flow_run_id="id", level="ERROR", message="Error Here", name="agent")] ) assert "Exception encountered while deploying flow run id" in caplog.text
def test_deploy_flow_run_sleeps_until_start_time(monkeypatch, cloud_api): gql_return = MagicMock(return_value=MagicMock(data=MagicMock( write_run_logs=MagicMock(success=True)))) client = MagicMock() client.return_value.write_run_logs = gql_return monkeypatch.setattr("prefect.agent.agent.Client", MagicMock(return_value=client)) sleep = MagicMock() monkeypatch.setattr("time.sleep", sleep) dt = pendulum.now() agent = Agent() agent.deploy_flow = MagicMock() agent._deploy_flow_run(flow_run=GraphQLResult({ "id": "id", "serialized_state": Scheduled().serialize(), "scheduled_start_time": str(dt.add(seconds=10)), "version": 1, "task_runs": [ GraphQLResult({ "id": "id", "version": 1, "serialized_state": Scheduled().serialize(), }) ], })) sleep_time = sleep.call_args[0][0] assert 10 >= sleep_time > 9 agent.deploy_flow.assert_called_once()