Skip to content

Commit 4aa2585

Browse files
authored
test(integration): Grab captured events with default timeout (#5354)
1 parent ff0290d commit 4aa2585

34 files changed

+155
-194
lines changed

tests/integration/fixtures/mini_sentry.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,11 @@ def set_global_config_option(self, option_name, value):
203203
# must be called before initializing relay fixture
204204
self.global_config["options"][option_name] = value
205205

206+
def get_captured_event(self, *, timeout=None):
207+
return self.captured_events.get(timeout=timeout or self.timeout)
208+
206209
def get_client_report(self, timeout=None):
207-
envelope = self.captured_events.get(timeout=timeout or self.timeout)
210+
envelope = self.get_captured_event(timeout=timeout)
208211
items = envelope.items
209212
assert len(items) == 1
210213
item = items[0]
@@ -213,7 +216,7 @@ def get_client_report(self, timeout=None):
213216
return json.loads(item.payload.bytes)
214217

215218
def get_metrics(self, timeout=None):
216-
envelope = self.captured_events.get(timeout=timeout or self.timeout)
219+
envelope = self.get_captured_event(timeout=timeout)
217220
items = envelope.items
218221
assert len(items) == 1
219222
item = items[0]

tests/integration/test_attachments.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,7 @@ def test_attachments_pii(mini_sentry, relay):
172172
relay.send_attachments(project_id, event_id, [attachment])
173173

174174
payloads = {
175-
mini_sentry.captured_events.get(timeout=5).items[0].payload.bytes
176-
for _ in range(2)
175+
mini_sentry.get_captured_event().items[0].payload.bytes for _ in range(2)
177176
}
178177
assert payloads == {
179178
b"here's an IP that should get masked -> ********* <-",
@@ -217,9 +216,7 @@ def test_view_hierarchy_scrubbing(mini_sentry, relay, feature_flags, expected):
217216
relay.send_envelope(project_id, envelope)
218217

219218
relay.send_envelope(project_id, envelope)
220-
payload = json.loads(
221-
mini_sentry.captured_events.get(timeout=5).items[0].payload.bytes
222-
)
219+
payload = json.loads(mini_sentry.get_captured_event().items[0].payload.bytes)
223220
assert payload == {"rendering_system": "UIKIT", "identifier": expected}
224221

225222

@@ -270,7 +267,7 @@ def test_attachment_scrubbing_with_fallback(
270267

271268
relay.send_envelope(project_id, envelope)
272269

273-
payload = mini_sentry.captured_events.get(timeout=5).items[0].payload.bytes
270+
payload = mini_sentry.get_captured_event().items[0].payload.bytes
274271
assert payload == expected
275272

276273

@@ -294,9 +291,7 @@ def test_view_hierarchy_not_scrubbed_without_config(mini_sentry, relay):
294291
)
295292

296293
relay.send_envelope(project_id, envelope)
297-
payload = json.loads(
298-
mini_sentry.captured_events.get(timeout=5).items[0].payload.bytes
299-
)
294+
payload = json.loads(mini_sentry.get_captured_event().items[0].payload.bytes)
300295
assert payload == json_payload
301296

302297

@@ -330,7 +325,7 @@ def test_attachments_pii_logfile(mini_sentry, relay):
330325

331326
relay.send_envelope(project_id, envelope)
332327

333-
scrubbed_payload = mini_sentry.captured_events.get(timeout=5).items[0].payload.bytes
328+
scrubbed_payload = mini_sentry.get_captured_event().items[0].payload.bytes
334329

335330
assert (
336331
scrubbed_payload

tests/integration/test_basic.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import datetime
2-
import queue
32
import os
43
import gzip
54
import sqlite3
@@ -34,7 +33,7 @@ def get_project_config():
3433

3534
# When using the memory envelope buffer, we optimistically do not do anything on shutdown, which means that the
3635
# buffer will try and pop as always as long as it can (within the shutdown timeout).
37-
event = mini_sentry.captured_events.get(timeout=0).get_event()
36+
event = mini_sentry.get_captured_event().get_event()
3837
assert event["logentry"] == {"formatted": "Hello, World!"}
3938

4039

@@ -137,7 +136,7 @@ def get_project_config():
137136
sleep(0.5) # Give the event time to get stuck
138137

139138
relay.shutdown(sig=signal.SIGINT)
140-
pytest.raises(queue.Empty, lambda: mini_sentry.captured_events.get(timeout=1))
139+
assert mini_sentry.captured_events.empty()
141140

142141
failures = mini_sentry.current_test_failures()
143142
assert failures
@@ -177,7 +176,7 @@ def test_store_pixel_gif(mini_sentry, relay, input, trailing_slash):
177176
response.raise_for_status()
178177
assert response.headers["content-type"] == "image/gif"
179178

180-
event = mini_sentry.captured_events.get(timeout=1).get_event()
179+
event = mini_sentry.get_captured_event().get_event()
181180
assert event["logentry"]["formatted"] == "im in ur query params"
182181

183182

@@ -197,7 +196,7 @@ def test_store_post_trailing_slash(mini_sentry, relay, route):
197196
)
198197
response.raise_for_status()
199198

200-
event = mini_sentry.captured_events.get(timeout=1).get_event()
199+
event = mini_sentry.get_captured_event().get_event()
201200
assert event["logentry"]["formatted"] == "hi"
202201

203202

@@ -238,7 +237,7 @@ def test_store_allowed_origins_passes(mini_sentry, relay, allowed_origins):
238237
)
239238

240239
if should_be_allowed:
241-
mini_sentry.captured_events.get(timeout=1).get_event()
240+
assert mini_sentry.get_captured_event().get_event() is not None
242241
assert mini_sentry.captured_events.empty()
243242

244243

@@ -360,7 +359,7 @@ def send_transaction_with_dsc(mini_sentry, relay, project_id, sampling_project_k
360359
},
361360
)
362361

363-
return mini_sentry.captured_events.get(timeout=1).get_transaction_event()
362+
return mini_sentry.get_captured_event().get_transaction_event()
364363

365364

366365
def test_root_project_disabled(mini_sentry, relay):

tests/integration/test_clock_drift.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ def test_clock_drift_applied_when_timestamp_is_too_old(mini_sentry, relay):
3737

3838
relay.send_envelope(project_id, envelope, headers={"Accept-Encoding": "gzip"})
3939

40-
transaction_event = mini_sentry.captured_events.get(
41-
timeout=1
42-
).get_transaction_event()
40+
transaction_event = mini_sentry.get_captured_event().get_transaction_event()
4341

4442
error_name, error_metadata = transaction_event["_meta"]["timestamp"][""]["err"][0]
4543
assert error_name == "clock_drift"
@@ -63,9 +61,7 @@ def test_clock_drift_not_applied_when_timestamp_is_recent(mini_sentry, relay):
6361

6462
relay.send_envelope(project_id, envelope, headers={"Accept-Encoding": "gzip"})
6563

66-
transaction_event = mini_sentry.captured_events.get(
67-
timeout=1
68-
).get_transaction_event()
64+
transaction_event = mini_sentry.get_captured_event().get_transaction_event()
6965
assert "_meta" not in transaction_event
7066
assert transaction_event["timestamp"] == five_minutes_ago.timestamp()
7167

@@ -84,9 +80,7 @@ def test_clock_drift_not_applied_when_sent_at_is_not_supplied(mini_sentry, relay
8480

8581
relay.send_envelope(project_id, envelope, headers={"Accept-Encoding": "gzip"})
8682

87-
transaction_event = mini_sentry.captured_events.get(
88-
timeout=1
89-
).get_transaction_event()
83+
transaction_event = mini_sentry.get_captured_event().get_transaction_event()
9084
error_name, error_metadata = transaction_event["_meta"]["timestamp"][""]["err"][0]
9185
# In case clock drift is not run, we expect timestamps normalization to go into effect to mark timestamps as
9286
# past or future if they surpass a certain threshold.

tests/integration/test_dynamic_sampling.py

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,8 @@ def test_it_removes_events(mini_sentry, relay):
254254
# send the event, the transaction should be removed.
255255
relay.send_envelope(project_id, envelope)
256256
# the event should be removed by Relay sampling
257-
assert mini_sentry.captured_events.get(timeout=2) == only_items("metric_buckets")
258-
with pytest.raises(queue.Empty):
259-
mini_sentry.captured_events.get(timeout=1)
257+
assert mini_sentry.get_captured_event() == only_items("metric_buckets")
258+
assert mini_sentry.captured_events.empty()
260259

261260
outcomes = mini_sentry.captured_outcomes.get(timeout=2)
262261
assert outcomes is not None
@@ -285,7 +284,7 @@ def test_it_does_not_sample_error(mini_sentry, relay):
285284
# send the event, the transaction should be removed.
286285
relay.send_envelope(project_id, envelope)
287286
# test that error is kept by Relay
288-
envelope = mini_sentry.captured_events.get(timeout=1)
287+
envelope = mini_sentry.get_captured_event()
289288
assert envelope is not None
290289
# double check that we get back our object
291290
# we put the id in extra since Relay overrides the initial event_id
@@ -325,7 +324,7 @@ def test_it_tags_error(mini_sentry, relay, expected_sampled, sample_rate):
325324
# send the event, the transaction should be removed.
326325
relay.send_envelope(project_id, envelope)
327326
# test that error is kept by Relay
328-
envelope = mini_sentry.captured_events.get(timeout=1)
327+
envelope = mini_sentry.get_captured_event()
329328
assert envelope is not None
330329
# double check that we get back our object
331330
# we put the id in extra since Relay overrides the initial event_id
@@ -426,7 +425,7 @@ def test_it_keeps_events(mini_sentry, relay):
426425
# send the event, the transaction should be removed.
427426
relay.send_envelope(project_id, envelope)
428427
# the event should be left alone by Relay sampling
429-
envelope = mini_sentry.captured_events.get(timeout=1)
428+
envelope = mini_sentry.get_captured_event()
430429
assert envelope is not None
431430
# double check that we get back our object
432431
# we put the id in extra since Relay overrides the initial event_id
@@ -491,9 +490,8 @@ def test_uses_trace_public_key(mini_sentry, relay):
491490
# send the event, the transaction should be removed.
492491
relay.send_envelope(project_id2, envelope)
493492
# the event should be removed by Relay sampling
494-
assert mini_sentry.captured_events.get(timeout=2) == only_items("metric_buckets")
495-
with pytest.raises(queue.Empty):
496-
mini_sentry.captured_events.get(timeout=1)
493+
assert mini_sentry.get_captured_event() == only_items("metric_buckets")
494+
assert mini_sentry.captured_events.empty()
497495

498496
# and it should create an outcome
499497
outcomes = mini_sentry.captured_outcomes.get(timeout=2) # Spans
@@ -514,7 +512,7 @@ def test_uses_trace_public_key(mini_sentry, relay):
514512
relay.send_envelope(project_id1, envelope)
515513

516514
# the event should be passed along to upstream (with the transaction unchanged)
517-
evt = mini_sentry.captured_events.get(timeout=1).get_transaction_event()
515+
evt = mini_sentry.get_captured_event().get_transaction_event()
518516
assert evt is not None
519517

520518
# no outcome should be generated (since the event is passed along to the upstream)
@@ -570,11 +568,8 @@ def test_multi_item_envelope(mini_sentry, relay, rule_type, event_factory):
570568
# send the event, the transaction should be removed.
571569
relay.send_envelope(project_id, envelope)
572570
# the event should be removed by Relay sampling
573-
assert mini_sentry.captured_events.get(timeout=2) == only_items(
574-
"metric_buckets"
575-
)
576-
with pytest.raises(queue.Empty):
577-
mini_sentry.captured_events.get(timeout=1)
571+
assert mini_sentry.get_captured_event() == only_items("metric_buckets")
572+
assert mini_sentry.captured_events.empty()
578573

579574
outcomes = mini_sentry.captured_outcomes.get(timeout=2)
580575
assert outcomes is not None
@@ -602,7 +597,7 @@ def collect_events_batch(expected_count, timeout_per_event=0.1):
602597

603598
for _ in range(expected_count * 3): # Allow for some extra attempts
604599
try:
605-
received_envelope = mini_sentry.captured_events.get(
600+
received_envelope = mini_sentry.get_captured_event(
606601
timeout=timeout_per_event
607602
)
608603
if (
@@ -696,8 +691,7 @@ def test_relay_chain(
696691
)
697692
relay.send_envelope(project_id, envelope)
698693

699-
envelope = mini_sentry.captured_events.get(timeout=1)
700-
envelope.get_transaction_event()
694+
assert mini_sentry.get_captured_event().get_transaction_event() is not None
701695

702696

703697
@pytest.mark.parametrize("mode", ["default", "chain"])
@@ -892,4 +886,4 @@ def test_invalid_global_generic_filters_skip_dynamic_sampling(mini_sentry, relay
892886
envelope, _, _ = _create_transaction_envelope(public_key, client_sample_rate=0)
893887

894888
relay.send_envelope(project_id, envelope)
895-
assert mini_sentry.captured_events.get(timeout=1)
889+
assert mini_sentry.get_captured_event()

tests/integration/test_envelope.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def test_envelope(mini_sentry, relay_chain):
1515
project_id, envelope, headers={"Accept-Encoding": "gzip"}
1616
)
1717

18-
event = mini_sentry.captured_events.get(timeout=1).get_event()
18+
event = mini_sentry.get_captured_event().get_event()
1919
assert event["logentry"] == {"formatted": "Hello, World!"}
2020
# The response should not be compressed
2121
assert "content-encoding" not in response.headers
@@ -51,7 +51,7 @@ def test_envelope_close_connection(mini_sentry, relay):
5151
sock.close() # Close the connection
5252

5353
for _ in range(num_iterations):
54-
envelope = mini_sentry.captured_events.get(timeout=1)
54+
envelope = mini_sentry.get_captured_event()
5555
assert envelope
5656
assert mini_sentry.captured_events.empty()
5757

@@ -66,7 +66,7 @@ def test_envelope_empty(mini_sentry, relay):
6666

6767
# there is nothing sent to the upstream
6868
with pytest.raises(queue.Empty):
69-
mini_sentry.captured_events.get(timeout=1)
69+
mini_sentry.get_captured_event(timeout=1)
7070

7171

7272
def test_envelope_without_header(mini_sentry, relay):
@@ -82,7 +82,7 @@ def test_envelope_without_header(mini_sentry, relay):
8282
headers={"X-Sentry-Auth": ""}, # Empty auth header is ignored by Relay
8383
)
8484

85-
event = mini_sentry.captured_events.get(timeout=1).get_event()
85+
event = mini_sentry.get_captured_event().get_event()
8686
assert event["logentry"] == {"formatted": "Hello, World!"}
8787

8888

@@ -101,8 +101,8 @@ def test_unknown_item(mini_sentry, relay):
101101
relay.send_envelope(PROJECT_ID, envelope)
102102

103103
envelopes = [ # non-event items are split into separate envelopes, so fetch 2x here
104-
mini_sentry.captured_events.get(timeout=1),
105-
mini_sentry.captured_events.get(timeout=1),
104+
mini_sentry.get_captured_event(),
105+
mini_sentry.get_captured_event(),
106106
]
107107

108108
types = {
@@ -129,12 +129,11 @@ def test_drop_unknown_item(mini_sentry, relay):
129129
envelope.add_item(attachment)
130130
relay.send_envelope(PROJECT_ID, envelope)
131131

132-
envelope = mini_sentry.captured_events.get(timeout=1)
132+
envelope = mini_sentry.get_captured_event()
133133
assert len(envelope.items) == 1
134134
assert envelope.items[0].type == "attachment"
135135

136-
with pytest.raises(queue.Empty):
137-
mini_sentry.captured_events.get(timeout=1)
136+
assert mini_sentry.captured_events.empty()
138137

139138

140139
def generate_transaction_item():
@@ -218,8 +217,7 @@ def test_empty_measurement_interface(mini_sentry, relay_chain):
218217
envelope.add_transaction(transaction_item)
219218
relay.send_envelope(42, envelope)
220219

221-
envelope = mini_sentry.captured_events.get(timeout=1)
222-
event = envelope.get_transaction_event()
220+
event = mini_sentry.get_captured_event().get_transaction_event()
223221

224222
assert event["transaction"] == "/organizations/:orgId/performance/:eventSlug/"
225223
assert "measurements" not in event, event
@@ -509,7 +507,7 @@ def test_sample_rate_propagates_across_orgs(
509507
envelope.add_transaction(transaction_item)
510508
relay.send_envelope(downstream_project_id, envelope)
511509

512-
dsc = mini_sentry.captured_events.get(timeout=2).headers["trace"]
510+
dsc = mini_sentry.get_captured_event().headers["trace"]
513511

514512
# Because the organization IDs mismatch, the DSC should be regenerated
515513
assert dsc["public_key"] == downstream_public_key

tests/integration/test_ephemeral_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def test_store_via_ephemeral_relay(
8787

8888
raw_payload = {"message": "Hello, World!"}
8989
relay.send_event(project_id, payload=raw_payload)
90-
event = mini_sentry.captured_events.get(timeout=1).get_event()
90+
event = mini_sentry.get_captured_event().get_event()
9191

9292
if mode == "proxy":
9393
assert event == raw_payload

tests/integration/test_feedback.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def test_feedback_events_without_processing(mini_sentry, relay_chain):
130130
relay = relay_chain(min_relay_version="latest")
131131
relay.send_user_feedback(project_id, replay_item)
132132

133-
envelope = mini_sentry.captured_events.get(timeout=20)
133+
envelope = mini_sentry.get_captured_event()
134134
assert len(envelope.items) == 1
135135

136136
userfeedback = envelope.items[0]

tests/integration/test_filters.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,7 @@ def test_localhost_filter_no_local_header_ips(mini_sentry, relay, headers):
413413
event = {"user": {"ip_address": None}, "request": {"headers": headers}}
414414
relay.send_event(project_id, event)
415415

416-
envelope = mini_sentry.captured_events.get(timeout=1)
417-
event = envelope.get_event()
416+
event = mini_sentry.get_captured_event().get_event()
418417
assert event is not None
419418

420419

tests/integration/test_flags.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def test_event_with_flags(relay, mini_sentry):
3030

3131
relay.send_envelope(42, envelope)
3232

33-
envelope = mini_sentry.captured_events.get(timeout=1)
33+
envelope = mini_sentry.get_captured_event()
3434
assert envelope
3535
assert envelope.items[0].payload.json["contexts"] == {
3636
"flags": {
@@ -63,7 +63,7 @@ def test_event_with_flags_malformed(relay, mini_sentry):
6363
relay.send_envelope(42, envelope)
6464

6565
# Malformed fields are removed. Unknown fields are passed through.
66-
envelope = mini_sentry.captured_events.get(timeout=1)
66+
envelope = mini_sentry.get_captured_event()
6767
assert envelope
6868
assert envelope.items[0].payload.json["contexts"] == {
6969
"flags": {"values": None, "key": "value", "type": "flags"}
@@ -98,7 +98,7 @@ def test_event_with_flags_malformed_inner_object(relay, mini_sentry):
9898
relay.send_envelope(42, envelope)
9999

100100
# Malformed fields are removed. Unknown fields are passed through.
101-
envelope = mini_sentry.captured_events.get(timeout=1)
101+
envelope = mini_sentry.get_captured_event()
102102
assert envelope
103103
assert envelope.items[0].payload.json["contexts"] == {
104104
"flags": {"values": [{"flag": None, "key": "key"}, None], "type": "flags"}

0 commit comments

Comments
 (0)