1
1
from unittest import mock
2
2
3
3
import sentry_sdk
4
- from sentry_sdk .consts import OP
5
4
6
5
7
6
def test_breadcrumbs (sentry_init , capture_events ):
@@ -26,7 +25,7 @@ def test_breadcrumbs(sentry_init, capture_events):
26
25
},
27
26
}
28
27
29
- with sentry_sdk .start_transaction (name = "trx-breadcrumbs" ):
28
+ with sentry_sdk .start_span (name = "trx-breadcrumbs" ):
30
29
sentry_sdk .add_breadcrumb (message = "breadcrumb0" , ** add_breadcrumbs_kwargs )
31
30
32
31
with sentry_sdk .start_span (name = "span1" , op = "function" ):
@@ -37,41 +36,25 @@ def test_breadcrumbs(sentry_init, capture_events):
37
36
message = "breadcrumb2" , ** add_breadcrumbs_kwargs
38
37
)
39
38
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" ):
58
40
sentry_sdk .add_breadcrumb (
59
- message = "breadcrumb6 " , ** add_breadcrumbs_kwargs
41
+ message = "breadcrumb3 " , ** add_breadcrumbs_kwargs
60
42
)
61
43
62
44
try :
63
45
1 / 0
64
46
except ZeroDivisionError as ex :
65
47
sentry_sdk .capture_exception (ex )
66
48
67
- (error ,) = events
49
+ assert len (events ) == 2
50
+ error = events [0 ]
68
51
69
52
breadcrumbs = error ["breadcrumbs" ]["values" ]
70
53
71
54
for crumb in breadcrumbs :
72
55
print (crumb )
73
56
74
- assert len (breadcrumbs ) == 7
57
+ assert len (breadcrumbs ) == 4
75
58
76
59
# Check for my custom breadcrumbs
77
60
for i in range (0 , 3 ):
@@ -88,53 +71,16 @@ def test_breadcrumbs(sentry_init, capture_events):
88
71
}
89
72
assert breadcrumbs [i ]["timestamp" ] == mock .ANY
90
73
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"
97
80
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" ] == {
135
81
"string" : "foobar" ,
136
82
"number" : 4.2 ,
137
83
"array" : [1 , 2 , 3 ],
138
84
"dict" : {"foo" : "bar" },
139
85
}
140
- assert breadcrumbs [6 ]["timestamp" ] == mock .ANY
86
+ assert breadcrumbs [3 ]["timestamp" ] == mock .ANY
0 commit comments