@@ -102,6 +102,45 @@ def test_crumb_capture(sentry_init, capture_events):
102102 )
103103
104104
105+ @pytest .mark .parametrize ("send_default_pii" , [True , False ])
106+ def test_crumb_capture_span_streaming (sentry_init , capture_events , send_default_pii ):
107+ sentry_init (
108+ integrations = [StdlibIntegration ()],
109+ trace_lifecycle = "stream" ,
110+ send_default_pii = send_default_pii ,
111+ )
112+ events = capture_events ()
113+
114+ url = "http://localhost:{}/some/random/url" .format (PORT )
115+ urlopen (url )
116+
117+ capture_message ("Testing!" )
118+
119+ (event ,) = events
120+ (crumb ,) = event ["breadcrumbs" ]["values" ]
121+
122+ assert crumb ["type" ] == "http"
123+ assert crumb ["category" ] == "httplib"
124+
125+ if send_default_pii :
126+ assert crumb ["data" ] == ApproxDict (
127+ {
128+ SPANDATA .URL_FULL : url ,
129+ SPANDATA .HTTP_REQUEST_METHOD : "GET" ,
130+ SPANDATA .HTTP_STATUS_CODE : 200 ,
131+ SPANDATA .URL_FRAGMENT : "" ,
132+ SPANDATA .URL_QUERY : "" ,
133+ }
134+ )
135+ else :
136+ assert crumb ["data" ] == ApproxDict (
137+ {
138+ SPANDATA .HTTP_REQUEST_METHOD : "GET" ,
139+ SPANDATA .HTTP_STATUS_CODE : 200 ,
140+ }
141+ )
142+
143+
105144@pytest .mark .parametrize (
106145 "status_code,level" ,
107146 [
@@ -146,6 +185,65 @@ def test_crumb_capture_client_error(sentry_init, capture_events, status_code, le
146185 )
147186
148187
188+ @pytest .mark .parametrize (
189+ "status_code,level" ,
190+ [
191+ (200 , None ),
192+ (301 , None ),
193+ (403 , "warning" ),
194+ (405 , "warning" ),
195+ (500 , "error" ),
196+ ],
197+ )
198+ @pytest .mark .parametrize ("send_default_pii" , [True , False ])
199+ def test_crumb_capture_client_error_span_streaming (
200+ sentry_init , capture_events , status_code , level , send_default_pii
201+ ):
202+ sentry_init (
203+ integrations = [StdlibIntegration ()],
204+ trace_lifecycle = "stream" ,
205+ send_default_pii = send_default_pii ,
206+ )
207+ events = capture_events ()
208+
209+ url = f"http://localhost:{ PORT } /status/{ status_code } " # noqa:E231
210+ try :
211+ urlopen (url )
212+ except HTTPError :
213+ pass
214+
215+ capture_message ("Testing!" )
216+
217+ (event ,) = events
218+ (crumb ,) = event ["breadcrumbs" ]["values" ]
219+
220+ assert crumb ["type" ] == "http"
221+ assert crumb ["category" ] == "httplib"
222+
223+ if level is None :
224+ assert "level" not in crumb
225+ else :
226+ assert crumb ["level" ] == level
227+
228+ if send_default_pii :
229+ assert crumb ["data" ] == ApproxDict (
230+ {
231+ SPANDATA .URL_FULL : url ,
232+ SPANDATA .HTTP_REQUEST_METHOD : "GET" ,
233+ SPANDATA .HTTP_STATUS_CODE : status_code ,
234+ SPANDATA .URL_FRAGMENT : "" ,
235+ SPANDATA .URL_QUERY : "" ,
236+ }
237+ )
238+ else :
239+ assert crumb ["data" ] == ApproxDict (
240+ {
241+ SPANDATA .HTTP_REQUEST_METHOD : "GET" ,
242+ SPANDATA .HTTP_STATUS_CODE : status_code ,
243+ }
244+ )
245+
246+
149247def test_crumb_capture_hint (sentry_init , capture_events ):
150248 def before_breadcrumb (crumb , hint ):
151249 crumb ["data" ]["extra" ] = "foo"
@@ -180,6 +278,53 @@ def before_breadcrumb(crumb, hint):
180278 )
181279
182280
281+ @pytest .mark .parametrize ("send_default_pii" , [True , False ])
282+ def test_crumb_capture_hint_span_streaming (
283+ sentry_init , capture_events , send_default_pii
284+ ):
285+ def before_breadcrumb (crumb , hint ):
286+ crumb ["data" ]["extra" ] = "foo"
287+ return crumb
288+
289+ sentry_init (
290+ integrations = [StdlibIntegration ()],
291+ before_breadcrumb = before_breadcrumb ,
292+ send_default_pii = send_default_pii ,
293+ trace_lifecycle = "stream" ,
294+ )
295+ events = capture_events ()
296+
297+ url = "http://localhost:{}/some/random/url" .format (PORT )
298+ urlopen (url )
299+
300+ capture_message ("Testing!" )
301+
302+ (event ,) = events
303+ (crumb ,) = event ["breadcrumbs" ]["values" ]
304+ assert crumb ["type" ] == "http"
305+ assert crumb ["category" ] == "httplib"
306+
307+ if send_default_pii :
308+ assert crumb ["data" ] == ApproxDict (
309+ {
310+ SPANDATA .URL_FULL : url ,
311+ SPANDATA .HTTP_REQUEST_METHOD : "GET" ,
312+ SPANDATA .HTTP_STATUS_CODE : 200 ,
313+ "extra" : "foo" ,
314+ SPANDATA .URL_FRAGMENT : "" ,
315+ SPANDATA .URL_QUERY : "" ,
316+ }
317+ )
318+ else :
319+ assert crumb ["data" ] == ApproxDict (
320+ {
321+ SPANDATA .HTTP_REQUEST_METHOD : "GET" ,
322+ SPANDATA .HTTP_STATUS_CODE : 200 ,
323+ "extra" : "foo" ,
324+ }
325+ )
326+
327+
183328@pytest .mark .parametrize ("span_streaming" , [True , False ])
184329def test_empty_realurl (
185330 sentry_init ,
0 commit comments