示例#1
0
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"}
示例#2
0
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])
示例#3
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"}
示例#4
0
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()
示例#5
0
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()