Skip to content

Commit 83442f5

Browse files
committed
Fix test_breadcrumbs
1 parent b2b6315 commit 83442f5

File tree

2 files changed

+17
-69
lines changed

2 files changed

+17
-69
lines changed

sentry_sdk/tracing.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,8 +1253,10 @@ def __init__(
12531253

12541254
# Prepopulate some attrs so that they're accessible in traces_sampler
12551255
attributes = attributes or {}
1256-
attributes[SentrySpanAttribute.OP] = op
1257-
attributes[SentrySpanAttribute.SOURCE] = source
1256+
if op is not None:
1257+
attributes[SentrySpanAttribute.OP] = op
1258+
if source is not None:
1259+
attributes[SentrySpanAttribute.SOURCE] = source
12581260
if sampled is not None:
12591261
attributes[SentrySpanAttribute.CUSTOM_SAMPLED] = sampled
12601262

tests/test_breadcrumbs.py

Lines changed: 13 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from unittest import mock
22

33
import sentry_sdk
4-
from sentry_sdk.consts import OP
54

65

76
def test_breadcrumbs(sentry_init, capture_events):
@@ -26,7 +25,7 @@ def test_breadcrumbs(sentry_init, capture_events):
2625
},
2726
}
2827

29-
with sentry_sdk.start_transaction(name="trx-breadcrumbs"):
28+
with sentry_sdk.start_span(name="trx-breadcrumbs"):
3029
sentry_sdk.add_breadcrumb(message="breadcrumb0", **add_breadcrumbs_kwargs)
3130

3231
with sentry_sdk.start_span(name="span1", op="function"):
@@ -37,41 +36,25 @@ def test_breadcrumbs(sentry_init, capture_events):
3736
message="breadcrumb2", **add_breadcrumbs_kwargs
3837
)
3938

40-
# Spans that create breadcrumbs automatically
41-
with sentry_sdk.start_span(name="span3", op=OP.DB_REDIS) as span3:
42-
span3.set_data("span3_data", "data on the redis span")
43-
span3.set_tag("span3_tag", "tag on the redis span")
44-
45-
with sentry_sdk.start_span(name="span4", op=OP.HTTP_CLIENT) as span4:
46-
span4.set_data("span4_data", "data on the http.client span")
47-
span4.set_tag("span4_tag", "tag on the http.client span")
48-
49-
with sentry_sdk.start_span(name="span5", op=OP.SUBPROCESS) as span5:
50-
span5.set_data("span5_data", "data on the subprocess span")
51-
span5.set_tag("span5_tag", "tag on the subprocess span")
52-
53-
with sentry_sdk.start_span(name="span6", op="function") as span6:
54-
# This data on the span is not added to custom breadcrumbs.
55-
# Data from the span is only added to automatic breadcrumbs shown above
56-
span6.set_data("span6_data", "data on span6")
57-
span6.set_tag("span6_tag", "tag on the span6")
39+
with sentry_sdk.start_span(name="span3", op="function"):
5840
sentry_sdk.add_breadcrumb(
59-
message="breadcrumb6", **add_breadcrumbs_kwargs
41+
message="breadcrumb3", **add_breadcrumbs_kwargs
6042
)
6143

6244
try:
6345
1 / 0
6446
except ZeroDivisionError as ex:
6547
sentry_sdk.capture_exception(ex)
6648

67-
(error,) = events
49+
assert len(events) == 2
50+
error = events[0]
6851

6952
breadcrumbs = error["breadcrumbs"]["values"]
7053

7154
for crumb in breadcrumbs:
7255
print(crumb)
7356

74-
assert len(breadcrumbs) == 7
57+
assert len(breadcrumbs) == 4
7558

7659
# Check for my custom breadcrumbs
7760
for i in range(0, 3):
@@ -88,53 +71,16 @@ def test_breadcrumbs(sentry_init, capture_events):
8871
}
8972
assert breadcrumbs[i]["timestamp"] == mock.ANY
9073

91-
# Check automatic redis breadcrumbs
92-
assert breadcrumbs[3]["message"] == "span3"
93-
assert breadcrumbs[3]["type"] == "redis"
94-
assert breadcrumbs[3]["category"] == "redis"
95-
assert "level" not in breadcrumbs[3]
96-
assert "origin" not in breadcrumbs[3]
74+
# Check for custom breadcrumbs on span3
75+
assert breadcrumbs[3]["message"] == "breadcrumb3"
76+
assert breadcrumbs[3]["type"] == "navigation"
77+
assert breadcrumbs[3]["category"] == "unit_tests.breadcrumbs"
78+
assert breadcrumbs[3]["level"] == "fatal"
79+
assert breadcrumbs[3]["origin"] == "unit-tests"
9780
assert breadcrumbs[3]["data"] == {
98-
"span3_tag": "tag on the redis span",
99-
}
100-
assert breadcrumbs[3]["timestamp"] == mock.ANY
101-
102-
# Check automatic http.client breadcrumbs
103-
assert "message" not in breadcrumbs[4]
104-
assert breadcrumbs[4]["type"] == "http"
105-
assert breadcrumbs[4]["category"] == "httplib"
106-
assert "level" not in breadcrumbs[4]
107-
assert "origin" not in breadcrumbs[4]
108-
assert breadcrumbs[4]["data"] == {
109-
"thread.id": mock.ANY,
110-
"thread.name": mock.ANY,
111-
"span4_data": "data on the http.client span",
112-
}
113-
assert breadcrumbs[4]["timestamp"] == mock.ANY
114-
115-
# Check automatic subprocess breadcrumbs
116-
assert breadcrumbs[5]["message"] == "span5"
117-
assert breadcrumbs[5]["type"] == "subprocess"
118-
assert breadcrumbs[5]["category"] == "subprocess"
119-
assert "level" not in breadcrumbs[5]
120-
assert "origin" not in breadcrumbs[5]
121-
assert breadcrumbs[5]["data"] == {
122-
"thread.id": mock.ANY,
123-
"thread.name": mock.ANY,
124-
"span5_data": "data on the subprocess span",
125-
}
126-
assert breadcrumbs[5]["timestamp"] == mock.ANY
127-
128-
# Check for custom breadcrumbs on span6
129-
assert breadcrumbs[6]["message"] == "breadcrumb6"
130-
assert breadcrumbs[6]["type"] == "navigation"
131-
assert breadcrumbs[6]["category"] == "unit_tests.breadcrumbs"
132-
assert breadcrumbs[6]["level"] == "fatal"
133-
assert breadcrumbs[6]["origin"] == "unit-tests"
134-
assert breadcrumbs[6]["data"] == {
13581
"string": "foobar",
13682
"number": 4.2,
13783
"array": [1, 2, 3],
13884
"dict": {"foo": "bar"},
13985
}
140-
assert breadcrumbs[6]["timestamp"] == mock.ANY
86+
assert breadcrumbs[3]["timestamp"] == mock.ANY

0 commit comments

Comments
 (0)