MCPcopy Create free account
hub / github.com/mongodb/mongo-python-driver / got_app_error

Function got_app_error

test/test_discovery_and_monitoring.py:119–153  ·  view source on GitHub ↗
(topology, app_error)

Source from the content-addressed store, hash-verified

117
118
119def got_app_error(topology, app_error):
120 server_address = common.partition_node(app_error["address"])
121 server = topology.get_server_by_address(server_address)
122 error_type = app_error["type"]
123 generation = app_error.get("generation", server.pool.gen.get_overall())
124 when = app_error["when"]
125 max_wire_version = app_error["maxWireVersion"]
126 # XXX: We could get better test coverage by mocking the errors on the
127 # Pool/Connection.
128 try:
129 if error_type == "command":
130 _check_command_response(app_error["response"], max_wire_version)
131 _check_write_command_response(app_error["response"])
132 elif error_type == "network":
133 raise AutoReconnect("mock non-timeout network error")
134 elif error_type == "timeout":
135 raise NetworkTimeout("mock network timeout error")
136 else:
137 raise AssertionError(f"unknown error type: {error_type}")
138 raise AssertionError
139 except (AutoReconnect, NotPrimaryError, OperationFailure) as e:
140 if when == "beforeHandshakeCompletes":
141 # The pool would have added the SystemOverloadedError in this case.
142 if isinstance(e, AutoReconnect):
143 e._add_error_label("SystemOverloadedError")
144 completed_handshake = False
145 elif when == "afterHandshakeCompletes":
146 completed_handshake = True
147 else:
148 raise AssertionError(f"Unknown when field {when}")
149
150 topology.handle_error(
151 server_address,
152 _ErrorContext(e, max_wire_version, generation, completed_handshake, None),
153 )
154
155
156def get_type(topology, hostname):

Callers 1

run_scenarioFunction · 0.70

Calls 10

_check_command_responseFunction · 0.90
AutoReconnectClass · 0.90
NetworkTimeoutClass · 0.90
_ErrorContextClass · 0.90
_add_error_labelMethod · 0.80
get_server_by_addressMethod · 0.45
getMethod · 0.45
get_overallMethod · 0.45
handle_errorMethod · 0.45

Tested by

no test coverage detected