Skip to content

Commit 5bb8aa9

Browse files
committed
Add tests for GdsArrowClient.handle_flight_errors
1 parent 29214bc commit 5bb8aa9

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

graphdatascience/query_runner/gds_arrow_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ def handle_flight_error(e: Exception):
229229
)
230230
improved_message = re.sub(r"(\. )?gRPC client debug context: .+$", "", improved_message)
231231

232-
raise RuntimeError(improved_message)
232+
raise flight.FlightServerError(improved_message)
233233
else:
234234
raise e
235235

graphdatascience/tests/unit/test_gds_arrow_client.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import re
2+
13
import pytest
4+
from pyarrow import flight
25

3-
from graphdatascience.query_runner.gds_arrow_client import AuthMiddleware
6+
from graphdatascience.query_runner.gds_arrow_client import AuthMiddleware, GdsArrowClient
47

58

69
def test_auth_middleware() -> None:
@@ -27,3 +30,16 @@ def test_auth_middleware_bad_headers() -> None:
2730

2831
with pytest.raises(ValueError, match="Incompatible header value received from server: `12342`"):
2932
middleware.received_headers({"authorization": [12342]})
33+
34+
def test_handle_flight_error():
35+
with pytest.raises(
36+
flight.FlightServerError, match="FlightServerError: UNKNOWN: Graph with name `people-and-fruits` does not exist on database `neo4j`. It might exist on another database."
37+
):
38+
GdsArrowClient.handle_flight_error(flight.FlightServerError(
39+
"FlightServerError: Flight RPC failed with message: org.apache.arrow.flight.FlightRuntimeException: UNKNOWN: Graph with name `people-and-fruits` does not exist on database `neo4j`. It might exist on another database.. gRPC client debug context: UNKNOWN:Error received from peer ipv4:35.241.177.75:8491 {created_time:\"2024-08-29T15:59:03.828903999+02:00\", grpc_status:2, grpc_message:\"org.apache.arrow.flight.FlightRuntimeException: UNKNOWN: Graph with name `people-and-fruits` does not exist on database `neo4j`. It might exist on another database.\"}. Client context: IOError: Server never sent a data message. Detail: Internal"))
40+
41+
with pytest.raises(
42+
flight.FlightServerError, match=re.escape("FlightServerError: UNKNOWN: Unexpected configuration key(s): [undirectedRelationshipTypes]")
43+
):
44+
GdsArrowClient.handle_flight_error(flight.FlightServerError(
45+
"FlightServerError: Flight returned internal error, with message: org.apache.arrow.flight.FlightRuntimeException: UNKNOWN: Unexpected configuration key(s): [undirectedRelationshipTypes]"))

0 commit comments

Comments
 (0)