File tree Expand file tree Collapse file tree 2 files changed +32
-0
lines changed
Expand file tree Collapse file tree 2 files changed +32
-0
lines changed Original file line number Diff line number Diff line change 1+ import unittest .mock
2+
3+ import grpc
14import ydb
25import pytest
36
47from os import path
8+ from ydb .connection import _rpc_error_handler
9+
10+
11+ def _make_rpc_error (code , details ):
12+ error = unittest .mock .MagicMock (spec = grpc .Call )
13+ error .code .return_value = code
14+ error .details .return_value = details
15+ return error
16+
17+
18+ def test_resource_exhausted_large_message_returns_bad_request ():
19+ rpc_error = _make_rpc_error (
20+ grpc .StatusCode .RESOURCE_EXHAUSTED ,
21+ "CLIENT: Sent message larger than max (101289032 vs. 64000000)" ,
22+ )
23+ result = _rpc_error_handler ("test_rpc" , rpc_error )
24+ assert isinstance (result , ydb .issues .BadRequest )
25+
26+
27+ def test_resource_exhausted_other_reason_returns_connection_lost ():
28+ rpc_error = _make_rpc_error (
29+ grpc .StatusCode .RESOURCE_EXHAUSTED ,
30+ "Quota exceeded" ,
31+ )
32+ result = _rpc_error_handler ("test_rpc" , rpc_error )
33+ assert isinstance (result , ydb .issues .ConnectionLost )
534
635
736def test_scheme_error (driver_sync , database ):
Original file line number Diff line number Diff line change @@ -98,6 +98,9 @@ def _rpc_error_handler(
9898 return issues .Unimplemented ("Method or feature is not implemented on server!" )
9999 elif rpc_error .code () == grpc .StatusCode .CANCELLED :
100100 return issues .Cancelled (rpc_error .details ())
101+ elif rpc_error .code () == grpc .StatusCode .RESOURCE_EXHAUSTED :
102+ if "Sent message larger than max" in rpc_error .details ():
103+ return issues .BadRequest (rpc_error .details ())
101104 elif use_unavailable and rpc_error .code () == grpc .StatusCode .UNAVAILABLE :
102105 return issues .Unavailable (rpc_error .details ())
103106
You can’t perform that action at this time.
0 commit comments