|
13 | 13 |
|
14 | 14 | from sentry_sdk import Hub, Client, add_breadcrumb, capture_message, Scope
|
15 | 15 | from sentry_sdk._compat import datetime_utcnow
|
16 |
| -from sentry_sdk.transport import _parse_rate_limits |
| 16 | +from sentry_sdk.transport import KEEP_ALIVE_SOCKET_OPTIONS, _parse_rate_limits |
17 | 17 | from sentry_sdk.envelope import Envelope, parse_json
|
18 | 18 | from sentry_sdk.integrations.logging import LoggingIntegration
|
19 | 19 |
|
@@ -167,6 +167,66 @@ def test_socket_options(make_client):
|
167 | 167 | assert options["socket_options"] == socket_options
|
168 | 168 |
|
169 | 169 |
|
| 170 | +def test_keep_alive_true(make_client): |
| 171 | + client = make_client(keep_alive=True) |
| 172 | + |
| 173 | + options = client.transport._get_pool_options([]) |
| 174 | + assert options["socket_options"] == KEEP_ALIVE_SOCKET_OPTIONS |
| 175 | + |
| 176 | + |
| 177 | +def test_keep_alive_off_by_default(make_client): |
| 178 | + client = make_client() |
| 179 | + options = client.transport._get_pool_options([]) |
| 180 | + assert "socket_options" not in options |
| 181 | + |
| 182 | + |
| 183 | +def test_socket_options_override_keep_alive(make_client): |
| 184 | + socket_options = [ |
| 185 | + (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1), |
| 186 | + (socket.SOL_TCP, socket.TCP_KEEPINTVL, 10), |
| 187 | + (socket.SOL_TCP, socket.TCP_KEEPCNT, 6), |
| 188 | + ] |
| 189 | + |
| 190 | + client = make_client(socket_options=socket_options, keep_alive=False) |
| 191 | + |
| 192 | + options = client.transport._get_pool_options([]) |
| 193 | + assert options["socket_options"] == socket_options |
| 194 | + |
| 195 | + |
| 196 | +def test_socket_options_merge_with_keep_alive(make_client): |
| 197 | + socket_options = [ |
| 198 | + (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 42), |
| 199 | + (socket.SOL_TCP, socket.TCP_KEEPINTVL, 42), |
| 200 | + ] |
| 201 | + |
| 202 | + client = make_client(socket_options=socket_options, keep_alive=True) |
| 203 | + |
| 204 | + options = client.transport._get_pool_options([]) |
| 205 | + try: |
| 206 | + assert options["socket_options"] == [ |
| 207 | + (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 42), |
| 208 | + (socket.SOL_TCP, socket.TCP_KEEPINTVL, 42), |
| 209 | + (socket.SOL_TCP, socket.TCP_KEEPIDLE, 45), |
| 210 | + (socket.SOL_TCP, socket.TCP_KEEPCNT, 6), |
| 211 | + ] |
| 212 | + except AttributeError: |
| 213 | + assert options["socket_options"] == [ |
| 214 | + (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 42), |
| 215 | + (socket.SOL_TCP, socket.TCP_KEEPINTVL, 42), |
| 216 | + (socket.SOL_TCP, socket.TCP_KEEPCNT, 6), |
| 217 | + ] |
| 218 | + |
| 219 | + |
| 220 | +def test_socket_options_override_defaults(make_client): |
| 221 | + # If socket_options are set to [], this doesn't mean the user doesn't want |
| 222 | + # any custom socket_options, but rather that they want to disable the urllib3 |
| 223 | + # socket option defaults, so we need to set this and not ignore it. |
| 224 | + client = make_client(socket_options=[]) |
| 225 | + |
| 226 | + options = client.transport._get_pool_options([]) |
| 227 | + assert options["socket_options"] == [] |
| 228 | + |
| 229 | + |
170 | 230 | def test_transport_infinite_loop(capturing_server, request, make_client):
|
171 | 231 | client = make_client(
|
172 | 232 | debug=True,
|
|
0 commit comments