def test_get_ready_flow_runs_ignores_currently_submitting_runs(monkeypatch, cloud_api): Client = MagicMock() Client().graphql.return_value.data.get_runs_in_queue.flow_run_ids = ["id1", "id2"] monkeypatch.setattr("prefect.agent.agent.Client", Client) agent = Agent() agent.submitting_flow_runs.add("id2") assert agent._get_ready_flow_runs() == {"id1"}
def test_get_ready_flow_runs_ignores_currently_submitting_runs( monkeypatch, cloud_api): gql_return = MagicMock(return_value=MagicMock(data=MagicMock( get_runs_in_queue=MagicMock(flow_run_ids=["id1", "id2"]), flow_run=[ GraphQLResult({ "id": "id", "scheduled_start_time": str(pendulum.now()) }) ], ))) client = MagicMock() client.return_value.graphql = gql_return monkeypatch.setattr("prefect.agent.agent.Client", client) agent = Agent() agent.submitting_flow_runs.add("id2") agent._get_ready_flow_runs() assert len(gql_return.call_args_list) == 2 assert ('id: { _in: ["id1"] }' in list(gql_return.call_args_list[1][0][0]["query"].keys())[0])
def test_get_ready_flow_runs(monkeypatch, cloud_api): dt = pendulum.now() gql_return = MagicMock( return_value=MagicMock( data=MagicMock( get_runs_in_queue=MagicMock(flow_run_ids=["id"]), flow_run=[GraphQLResult({"id": "id", "scheduled_start_time": str(dt)})], ) ) ) client = MagicMock() client.return_value.graphql = gql_return monkeypatch.setattr("prefect.agent.agent.Client", client) agent = Agent() flow_runs = agent._get_ready_flow_runs() assert flow_runs == {"id"}
def test_get_ready_flow_runs_copies_submitting_flow_runs( monkeypatch, caplog, cloud_api): Client = MagicMock() Client().graphql.return_value.data.get_runs_in_queue.flow_run_ids = [ "already-submitted-id" ] monkeypatch.setattr("prefect.agent.agent.Client", Client) agent = Agent() agent.logger.setLevel(logging.DEBUG) agent.submitting_flow_runs = MagicMock() agent.submitting_flow_runs.copy.return_value = {"already-submitted-id"} flow_runs = agent._get_ready_flow_runs() assert flow_runs == set() assert "1 already being submitted: ['already-submitted-id']" in caplog.text agent.submitting_flow_runs.copy.assert_called_once_with()
def test_get_ready_flow_runs_does_not_use_submitting_flow_runs_directly( monkeypatch, caplog, cloud_api): gql_return = MagicMock(return_value=MagicMock(data=MagicMock( get_runs_in_queue=MagicMock(flow_run_ids=["already-submitted-id"]), flow_run=[{ "id": "id" }], ))) client = MagicMock() client.return_value.graphql = gql_return monkeypatch.setattr("prefect.agent.agent.Client", client) agent = Agent() agent.logger.setLevel(logging.DEBUG) copy_mock = MagicMock(return_value=set(["already-submitted-id"])) agent.submitting_flow_runs = MagicMock(copy=copy_mock) flow_runs = agent._get_ready_flow_runs() assert flow_runs == [] assert "1 already being submitted: ['already-submitted-id']" in caplog.text copy_mock.assert_called_once_with()