Skip to content

Commit 9ca69c2

Browse files
committed
fix test case and invalid algo fallback logic
1 parent 96cec2d commit 9ca69c2

File tree

2 files changed

+31
-18
lines changed

2 files changed

+31
-18
lines changed

sentry_sdk/transport.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -234,28 +234,38 @@ def __init__(self, options):
234234
experiments.get("transport_zlib_compression_level"),
235235
)
236236
compression_algo = experiments.get(
237-
"transport_compression_algo", "br" if brotli is not None else "gzip"
237+
"transport_compression_algo",
238+
(
239+
"gzip"
240+
# if only compression level is set, assume gzip for backwards compatibility
241+
# if we don't have brotli available, fallback to gzip
242+
if compression_level is not None or brotli is None
243+
else "br"
244+
),
238245
)
246+
239247
if compression_algo == "br" and brotli is None:
240248
logger.warning(
241249
"You asked for brotli compression without the Brotli module, falling back to gzip -9"
242250
)
243251
compression_algo = "gzip"
244252
compression_level = None
245253

246-
self._compression_algo = compression_algo
247-
if compression_level is not None:
248-
self._compression_level = compression_level
249-
elif compression_algo == "gzip":
250-
self._compression_level = 9
251-
elif compression_algo == "br":
252-
self._compression_level = 4
253-
else:
254+
if compression_algo not in ("br", "gzip"):
254255
logger.warning(
255256
"Unknown compression algo %s, disabling compression", compression_algo
256257
)
257258
self._compression_level = 0
258259
self._compression_algo = None
260+
else:
261+
self._compression_algo = compression_algo
262+
263+
if compression_level is not None:
264+
self._compression_level = compression_level
265+
elif self._compression_algo == "gzip":
266+
self._compression_level = 9
267+
elif self._compression_algo == "br":
268+
self._compression_level = 4
259269

260270
def record_lost_event(
261271
self,

tests/test_transport.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def mock_transaction_envelope(span_count):
123123
@pytest.mark.parametrize("client_flush_method", ["close", "flush"])
124124
@pytest.mark.parametrize("use_pickle", (True, False))
125125
@pytest.mark.parametrize("compression_level", (0, 9, None))
126-
@pytest.mark.parametrize("compression_algo", ("gzip", "br", None))
126+
@pytest.mark.parametrize("compression_algo", ("gzip", "br", "<invalid>", None))
127127
@pytest.mark.parametrize(
128128
"http2", [True, False] if sys.version_info >= (3, 8) else [False]
129129
)
@@ -175,16 +175,19 @@ def test_transport_works(
175175
assert not err and not out
176176
assert capturing_server.captured
177177
should_compress = (
178-
(
179-
compression_level is None
180-
) # default is to compress with bortli if available, gzip otherwise
181-
or (
182-
compression_level > 0
183-
) # setting compression level to 0 means don't compress
178+
# default is to compress with brotli if available, gzip otherwise
179+
(compression_level is None)
184180
or (
185-
compression_algo is None
186-
) # if we couldn't resolve to a known algo, we don't compress
181+
# setting compression level to 0 means don't compress
182+
compression_level
183+
> 0
184+
)
185+
) and (
186+
# if we couldn't resolve to a known algo, we don't compress
187+
compression_algo
188+
!= "<invalid>"
187189
)
190+
188191
assert capturing_server.captured[0].compressed == should_compress
189192

190193
assert any("Sending envelope" in record.msg for record in caplog.records) == debug

0 commit comments

Comments
 (0)