• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use std::thread::sleep;
2 use std::time::Duration;
3 use tracing::{span, Level};
4 use tracing_flame::FlameLayer;
5 use tracing_subscriber::{prelude::*, registry::Registry};
6 
7 #[test]
capture_supported()8 fn capture_supported() {
9     {
10         let tmp_dir = tempfile::Builder::new()
11             .prefix("tracing-flamegraph-test-")
12             .tempdir()
13             .expect("failed to create tempdir");
14         let (flame_layer, _guard) =
15             FlameLayer::with_file(tmp_dir.path().join("tracing.folded")).unwrap();
16 
17         let subscriber = Registry::default().with(flame_layer);
18 
19         tracing::subscriber::set_global_default(subscriber).expect("Could not set global default");
20 
21         {
22             let span = span!(Level::ERROR, "outer");
23             let _guard = span.enter();
24             sleep(Duration::from_millis(10));
25 
26             {
27                 let span = span!(Level::ERROR, "Inner");
28                 let _guard = span.enter();
29                 sleep(Duration::from_millis(50));
30 
31                 {
32                     let span = span!(Level::ERROR, "Innermost");
33                     let _guard = span.enter();
34                     sleep(Duration::from_millis(50));
35                 }
36             }
37 
38             sleep(Duration::from_millis(5));
39         }
40 
41         sleep(Duration::from_millis(500));
42 
43         tmp_dir.close().expect("failed to delete tempdir");
44     }
45 }
46