18
18
//! Err(io::Error::new(io::ErrorKind::Other, "An error happens here").into())
19
19
//! }
20
20
//!
21
- //! #[actix_web::main]
22
- //! async fn main() -> io::Result<()> {
23
- //! let _guard = sentry::init(());
21
+ //! fn main() -> io::Result<()> {
22
+ //! let _guard = sentry::init(sentry::ClientOptions {
23
+ //! release: sentry::release_name!(),
24
+ //! ..Default::default()
25
+ //! });
24
26
//! std::env::set_var("RUST_BACKTRACE", "1");
25
27
//!
26
- //! HttpServer::new(|| {
27
- //! App::new()
28
- //! .wrap(sentry_actix::Sentry::new())
29
- //! .service(failing)
28
+ //! let runtime = tokio::runtime::Builder::new_multi_thread()
29
+ //! .enable_all()
30
+ //! .build()?;
31
+ //! runtime.block_on(async move {
32
+ //! HttpServer::new(|| {
33
+ //! App::new()
34
+ //! .wrap(sentry_actix::Sentry::new())
35
+ //! .service(failing)
36
+ //! })
37
+ //! .bind("127.0.0.1:3001")?
38
+ //! .run()
39
+ //! .await
30
40
//! })
31
- //! .bind("127.0.0.1:3001")?
32
- //! .run()
33
- //! .await?;
34
- //!
35
- //! Ok(())
36
41
//! }
37
42
//! ```
38
43
//!
44
49
//!
45
50
//! ```
46
51
//! let _sentry = sentry::init(sentry::ClientOptions {
52
+ //! release: sentry::release_name!(),
47
53
//! session_mode: sentry::SessionMode::Request,
48
54
//! auto_session_tracking: true,
49
55
//! ..Default::default()
@@ -172,12 +178,11 @@ impl Default for Sentry {
172
178
}
173
179
}
174
180
175
- impl < S , B > Transform < S > for Sentry
181
+ impl < S , B > Transform < S , ServiceRequest > for Sentry
176
182
where
177
- S : Service < Request = ServiceRequest , Response = ServiceResponse < B > , Error = Error > ,
183
+ S : Service < ServiceRequest , Response = ServiceResponse < B > , Error = Error > ,
178
184
S :: Future : ' static ,
179
185
{
180
- type Request = ServiceRequest ;
181
186
type Response = ServiceResponse < B > ;
182
187
type Error = Error ;
183
188
type Transform = SentryMiddleware < S > ;
@@ -198,24 +203,23 @@ pub struct SentryMiddleware<S> {
198
203
inner : Sentry ,
199
204
}
200
205
201
- impl < S , B > Service for SentryMiddleware < S >
206
+ impl < S , B > Service < ServiceRequest > for SentryMiddleware < S >
202
207
where
203
- S : Service < Request = ServiceRequest , Response = ServiceResponse < B > , Error = Error > ,
208
+ S : Service < ServiceRequest , Response = ServiceResponse < B > , Error = Error > ,
204
209
S :: Future : ' static ,
205
210
{
206
- type Request = ServiceRequest ;
207
211
type Response = ServiceResponse < B > ;
208
212
type Error = Error ;
209
213
type Future = Pin < Box < dyn Future < Output = Result < Self :: Response , Self :: Error > > > > ;
210
214
211
215
fn poll_ready (
212
- & mut self ,
216
+ & self ,
213
217
cx : & mut std:: task:: Context < ' _ > ,
214
218
) -> std:: task:: Poll < Result < ( ) , Self :: Error > > {
215
219
self . service . poll_ready ( cx)
216
220
}
217
221
218
- fn call ( & mut self , req : ServiceRequest ) -> Self :: Future {
222
+ fn call ( & self , req : ServiceRequest ) -> Self :: Future {
219
223
let inner = self . inner . clone ( ) ;
220
224
let hub = Arc :: new ( Hub :: new_from_top (
221
225
inner. hub . clone ( ) . unwrap_or_else ( Hub :: main) ,
@@ -412,7 +416,7 @@ mod tests {
412
416
}
413
417
414
418
/// Test explicit events sent to the current Hub inside an Actix service.
415
- #[ actix_rt :: test]
419
+ #[ actix_web :: test]
416
420
async fn test_explicit_events ( ) {
417
421
let events = sentry:: test:: with_captured_events ( || {
418
422
block_on ( async {
@@ -428,7 +432,7 @@ mod tests {
428
432
HttpResponse :: Ok ( )
429
433
} ;
430
434
431
- let mut app = init_service (
435
+ let app = init_service (
432
436
App :: new ( )
433
437
. wrap ( Sentry :: builder ( ) . with_hub ( Hub :: current ( ) ) . finish ( ) )
434
438
. service ( web:: resource ( "/test" ) . to ( service) ) ,
@@ -438,7 +442,7 @@ mod tests {
438
442
// Call the service twice (sequentially) to ensure the middleware isn't sticky
439
443
for _ in 0 ..2 {
440
444
let req = TestRequest :: get ( ) . uri ( "/test" ) . to_request ( ) ;
441
- let res = call_service ( & mut app, req) . await ;
445
+ let res = call_service ( & app, req) . await ;
442
446
assert ! ( res. status( ) . is_success( ) ) ;
443
447
}
444
448
} )
@@ -455,7 +459,7 @@ mod tests {
455
459
}
456
460
457
461
/// Ensures errors returned in the Actix service trigger an event.
458
- #[ actix_rt :: test]
462
+ #[ actix_web :: test]
459
463
async fn test_response_errors ( ) {
460
464
let events = sentry:: test:: with_captured_events ( || {
461
465
block_on ( async {
@@ -467,7 +471,7 @@ mod tests {
467
471
Err ( io:: Error :: new ( io:: ErrorKind :: Other , "Test Error" ) . into ( ) )
468
472
}
469
473
470
- let mut app = init_service (
474
+ let app = init_service (
471
475
App :: new ( )
472
476
. wrap ( Sentry :: builder ( ) . with_hub ( Hub :: current ( ) ) . finish ( ) )
473
477
. service ( failing) ,
@@ -477,7 +481,7 @@ mod tests {
477
481
// Call the service twice (sequentially) to ensure the middleware isn't sticky
478
482
for _ in 0 ..2 {
479
483
let req = TestRequest :: get ( ) . uri ( "/test" ) . to_request ( ) ;
480
- let res = call_service ( & mut app, req) . await ;
484
+ let res = call_service ( & app, req) . await ;
481
485
assert ! ( res. status( ) . is_server_error( ) ) ;
482
486
}
483
487
} )
@@ -496,21 +500,21 @@ mod tests {
496
500
}
497
501
498
502
/// Ensures client errors (4xx) are not captured.
499
- #[ actix_rt :: test]
503
+ #[ actix_web :: test]
500
504
async fn test_client_errors_discarded ( ) {
501
505
let events = sentry:: test:: with_captured_events ( || {
502
506
block_on ( async {
503
507
let service = HttpResponse :: NotFound ;
504
508
505
- let mut app = init_service (
509
+ let app = init_service (
506
510
App :: new ( )
507
511
. wrap ( Sentry :: builder ( ) . with_hub ( Hub :: current ( ) ) . finish ( ) )
508
512
. service ( web:: resource ( "/test" ) . to ( service) ) ,
509
513
)
510
514
. await ;
511
515
512
516
let req = TestRequest :: get ( ) . uri ( "/test" ) . to_request ( ) ;
513
- let res = call_service ( & mut app, req) . await ;
517
+ let res = call_service ( & app, req) . await ;
514
518
assert ! ( res. status( ) . is_client_error( ) ) ;
515
519
} )
516
520
} ) ;
@@ -519,7 +523,7 @@ mod tests {
519
523
}
520
524
521
525
/// Ensures transaction name can be overridden in handler scope.
522
- #[ actix_rt :: test]
526
+ #[ actix_web :: test]
523
527
async fn test_override_transaction_name ( ) {
524
528
let events = sentry:: test:: with_captured_events ( || {
525
529
block_on ( async {
@@ -530,15 +534,15 @@ mod tests {
530
534
Err ( io:: Error :: new ( io:: ErrorKind :: Other , "Test Error" ) . into ( ) )
531
535
}
532
536
533
- let mut app = init_service (
537
+ let app = init_service (
534
538
App :: new ( )
535
539
. wrap ( Sentry :: builder ( ) . with_hub ( Hub :: current ( ) ) . finish ( ) )
536
540
. service ( original_transaction) ,
537
541
)
538
542
. await ;
539
543
540
544
let req = TestRequest :: get ( ) . uri ( "/test" ) . to_request ( ) ;
541
- let res = call_service ( & mut app, req) . await ;
545
+ let res = call_service ( & app, req) . await ;
542
546
assert ! ( res. status( ) . is_server_error( ) ) ;
543
547
} )
544
548
} ) ;
@@ -554,7 +558,7 @@ mod tests {
554
558
assert_eq ! ( request. method, Some ( "GET" . into( ) ) ) ;
555
559
}
556
560
557
- #[ actix_rt :: test]
561
+ #[ actix_web :: test]
558
562
async fn test_track_session ( ) {
559
563
let envelopes = sentry:: test:: with_captured_envelopes_options (
560
564
|| {
@@ -566,11 +570,11 @@ mod tests {
566
570
567
571
let middleware = Sentry :: builder ( ) . with_hub ( Hub :: current ( ) ) . finish ( ) ;
568
572
569
- let mut app = init_service ( App :: new ( ) . wrap ( middleware) . service ( hello) ) . await ;
573
+ let app = init_service ( App :: new ( ) . wrap ( middleware) . service ( hello) ) . await ;
570
574
571
575
for _ in 0 ..5 {
572
576
let req = TestRequest :: get ( ) . uri ( "/" ) . to_request ( ) ;
573
- call_service ( & mut app, req) . await ;
577
+ call_service ( & app, req) . await ;
574
578
}
575
579
} )
576
580
} ,
0 commit comments