@@ -277,3 +277,84 @@ fn test_tracing_logs() {
277
277
_ => panic ! ( "expected item container" ) ,
278
278
}
279
279
}
280
+
281
+ #[ test]
282
+ fn test_combined_event_filters ( ) {
283
+ let sentry_layer = sentry_tracing:: layer ( ) . event_filter ( |md| match * md. level ( ) {
284
+ tracing:: Level :: ERROR => {
285
+ sentry_tracing:: EventFilter :: Breadcrumb | sentry_tracing:: EventFilter :: Event
286
+ }
287
+ tracing:: Level :: WARN => sentry_tracing:: EventFilter :: Event ,
288
+ _ => sentry_tracing:: EventFilter :: Ignore ,
289
+ } ) ;
290
+
291
+ let _dispatcher = tracing_subscriber:: registry ( )
292
+ . with ( sentry_layer)
293
+ . set_default ( ) ;
294
+
295
+ let events = sentry:: test:: with_captured_events ( || {
296
+ tracing:: error!( "Both a breadcrumb and an event" ) ;
297
+ tracing:: warn!( "An event" ) ;
298
+ } ) ;
299
+
300
+ assert_eq ! ( events. len( ) , 2 ) ;
301
+
302
+ assert_eq ! (
303
+ events[ 0 ] . message,
304
+ Some ( "Both a breadcrumb and an event" . to_owned( ) )
305
+ ) ;
306
+
307
+ assert_eq ! ( events[ 1 ] . message, Some ( "An event" . to_owned( ) ) ) ;
308
+ assert_eq ! ( events[ 1 ] . breadcrumbs. len( ) , 1 ) ;
309
+ assert_eq ! (
310
+ events[ 1 ] . breadcrumbs[ 0 ] . message,
311
+ Some ( "Both a breadcrumb and an event" . into( ) )
312
+ ) ;
313
+ }
314
+
315
+ #[ test]
316
+ fn test_combined_event_mapper ( ) {
317
+ let sentry_layer =
318
+ sentry_tracing:: layer ( ) . event_mapper ( |event, ctx| match * event. metadata ( ) . level ( ) {
319
+ tracing:: Level :: ERROR => {
320
+ let breadcrumb = sentry_tracing:: breadcrumb_from_event ( event, Some ( & ctx) ) ;
321
+ let sentry_event = sentry_tracing:: event_from_event ( event, Some ( & ctx) ) ;
322
+
323
+ sentry_tracing:: EventMapping :: Combined (
324
+ vec ! [
325
+ sentry_tracing:: EventMapping :: Breadcrumb ( breadcrumb) ,
326
+ sentry_tracing:: EventMapping :: Event ( sentry_event) ,
327
+ ]
328
+ . into ( ) ,
329
+ )
330
+ }
331
+ tracing:: Level :: WARN => {
332
+ let sentry_event = sentry_tracing:: event_from_event ( event, Some ( & ctx) ) ;
333
+ sentry_tracing:: EventMapping :: Event ( sentry_event)
334
+ }
335
+ _ => sentry_tracing:: EventMapping :: Ignore ,
336
+ } ) ;
337
+
338
+ let _dispatcher = tracing_subscriber:: registry ( )
339
+ . with ( sentry_layer)
340
+ . set_default ( ) ;
341
+
342
+ let events = sentry:: test:: with_captured_events ( || {
343
+ tracing:: error!( "Both a breadcrumb and an event" ) ;
344
+ tracing:: warn!( "An event" ) ;
345
+ } ) ;
346
+
347
+ assert_eq ! ( events. len( ) , 2 ) ;
348
+
349
+ assert_eq ! (
350
+ events[ 0 ] . message,
351
+ Some ( "Both a breadcrumb and an event" . to_owned( ) )
352
+ ) ;
353
+
354
+ assert_eq ! ( events[ 1 ] . message, Some ( "An event" . to_owned( ) ) ) ;
355
+ assert_eq ! ( events[ 1 ] . breadcrumbs. len( ) , 1 ) ;
356
+ assert_eq ! (
357
+ events[ 1 ] . breadcrumbs[ 0 ] . message,
358
+ Some ( "Both a breadcrumb and an event" . into( ) )
359
+ ) ;
360
+ }
0 commit comments