def test_execute_multiple_single_queued_throttle_actions(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.side_effect = [ MockResponse(200, {"result": "success"}), MockResponse( 200, { "result": "partial", "completed": 1, "notCompleted": 1, "errors": [{ "index": 0, "step": 0, "errorCode": "test" }] }) ] conn = Connection(throttle_actions=2, **mock_connection_params) action0 = Action(top="top0").append(a="a0") action1 = Action(top="top1").append(a="a1") action2 = Action(top="top2").append(a="a2") action3 = Action(top="top3").append(a="a3") assert conn.execute_multiple([action0, action1, action2], immediate=False) == (1, 2, 2) local_status, server_status = conn.status(remote=False) assert server_status == { "status": "Never contacted", "endpoint": conn.endpoint } assert local_status == { "multiple-query-count": 0, "single-query-count": 0, "actions-sent": 2, "actions-completed": 2, "actions-queued": 1 } assert conn.execute_single(action3) == (0, 2, 1) local_status, _ = conn.status(remote=False) assert local_status == { "multiple-query-count": 0, "single-query-count": 0, "actions-sent": 4, "actions-completed": 3, "actions-queued": 0 } assert action0.execution_errors() == [] assert action1.execution_errors() == [] assert action2.execution_errors() == [{ "command": { "a": "a2" }, "target": { "top": "top2" }, "errorCode": "test" }] assert action3.execution_errors() == []
def test_execute_multiple_queued_throttle_actions_error(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.side_effect = [ MockResponse(500), MockResponse(200, {"result": "success"}), MockResponse(200, {"result": "success"}) ] conn = Connection(throttle_actions=2, **mock_connection_params) action0 = Action(top="top0").append(a="a0") action1 = Action(top="top1").append(a="a1") action2 = Action(top="top2").append(a="a2") action3 = Action(top="top3").append(a="a3") action4 = Action(top="top4").append(a="a4") action5 = Action(top="top5").append(a="a5") pytest.raises(BatchError, conn.execute_multiple, [action0, action1, action2, action3, action4, action5], immediate=False) local_status, _ = conn.status(remote=False) assert local_status == { "multiple-query-count": 0, "single-query-count": 0, "actions-sent": 6, "actions-completed": 4, "actions-queued": 0 }
def test_remote_status_failure(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(404, text="404 Not Found") conn = Connection(**mock_connection_params) _, remote_status = conn.status(remote=True) assert remote_status["status"].startswith("Unexpected")
def test_remote_status_error(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.side_effect = requests.ConnectionError conn = Connection(**mock_connection_params) _, remote_status = conn.status(remote=True) assert remote_status["status"].startswith("Unreachable")
def test_remote_status_success(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(200, body={ "build": "2559", "version": "2.1.54", "state": "LIVE" }) conn = Connection(**mock_connection_params) _, remote_status = conn.status(remote=True) assert remote_status == { "endpoint": "https://test/", "build": "2559", "version": "2.1.54", "state": "LIVE" }