@@ -39,18 +39,30 @@ mod logtests {
3939 use super :: * ;
4040 use integration_test_runner:: logs_asserter:: { read_logs_from_json, LogsAsserter } ;
4141 use std:: { fs:: File , time:: Duration } ;
42+ use tracing:: info;
43+ use tracing_subscriber:: layer:: SubscriberExt ;
44+ use opentelemetry_appender_tracing:: layer:: OpenTelemetryTracingBridge ;
45+
4246 #[ test]
4347 #[ should_panic( expected = "assertion `left == right` failed: body does not match" ) ]
4448 pub fn test_assert_logs_eq_failure ( ) {
45- let left = read_logs_from_json ( File :: open ( "./expected/logs.json" ) . unwrap ( ) ) ;
46- let right = read_logs_from_json ( File :: open ( "./expected/failed_logs.json" ) . unwrap ( ) ) ;
49+ let left = read_logs_from_json ( File :: open ( "./expected/logs.json" )
50+ . expect ( "failed to open expected file" ) )
51+ . expect ( "Failed to read logs from expected file" ) ;
52+
53+ let right = read_logs_from_json ( File :: open ( "./expected/failed_logs.json" )
54+ . expect ( "failed to open expected failed log file" ) )
55+ . expect ( "Failed to read logs from expected failed log file" ) ;
4756 LogsAsserter :: new ( right, left) . assert ( ) ;
57+
4858 }
4959
5060 #[ test]
51- pub fn test_assert_logs_eq ( ) {
52- let logs = read_logs_from_json ( File :: open ( "./expected/logs.json" ) . unwrap ( ) ) ;
61+ pub fn test_assert_logs_eq ( ) -> Result < ( ) > {
62+ let logs = read_logs_from_json ( File :: open ( "./expected/logs.json" ) ? ) ? ;
5363 LogsAsserter :: new ( logs. clone ( ) , logs) . assert ( ) ;
64+
65+ Ok ( ( ) )
5466 }
5567
5668 #[ tokio:: test( flavor = "multi_thread" , worker_threads = 4 ) ]
@@ -84,15 +96,46 @@ mod logtests {
8496
8597 Ok ( ( ) )
8698 }
99+
100+ #[ test]
101+ #[ cfg( any( feature = "tonic-client" , feature = "reqwest-blocking-client" ) ) ]
102+ pub fn logs_batch_non_tokio_main ( ) -> Result < ( ) > {
103+
104+ // Initialize the logger provider inside a tokio runtime
105+ // as this allows tonic client to capture the runtime,
106+ // but actual export occurs from the dedicated std::thread
107+ // created by BatchLogProcessor.
108+ let rt = tokio:: runtime:: Runtime :: new ( ) ?;
109+ let logger_provider = rt. block_on ( async {
110+ // While we're here setup our collector container too, as this needs tokio to run
111+ test_utils:: start_collector_container ( ) . await ?;
112+ init_logs ( )
113+ } ) ?;
114+
115+ info ! ( "LoggerProvider created" ) ;
116+ let layer = OpenTelemetryTracingBridge :: new ( & logger_provider) ;
117+ let subscriber = tracing_subscriber:: registry ( ) . with ( layer) ;
118+ {
119+ let _guard = tracing:: subscriber:: set_default ( subscriber) ;
120+ info ! ( target: "my-target" , "hello from {}. My price is {}." , "banana" , 2.99 ) ;
121+ }
122+ let _ = logger_provider. shutdown ( ) ;
123+ // tokio::time::sleep(Duration::from_secs(10)).await;
124+ assert_logs_results ( test_utils:: LOGS_FILE , "expected/logs.json" ) ;
125+
126+ Ok ( ( ) )
127+ }
128+
87129}
88130
89- pub fn assert_logs_results ( result : & str , expected : & str ) {
90- let left = read_logs_from_json ( File :: open ( expected) . unwrap ( ) ) ;
91- let right = read_logs_from_json ( File :: open ( result) . unwrap ( ) ) ;
131+ pub fn assert_logs_results ( result : & str , expected : & str ) -> Result < ( ) > {
132+ let left = read_logs_from_json ( File :: open ( expected) ? ) ? ;
133+ let right = read_logs_from_json ( File :: open ( result) ? ) ? ;
92134
93135 LogsAsserter :: new ( left, right) . assert ( ) ;
94136
95- assert ! ( File :: open( result) . unwrap( ) . metadata( ) . unwrap( ) . size( ) > 0 )
137+ assert ! ( File :: open( result) . unwrap( ) . metadata( ) . unwrap( ) . size( ) > 0 ) ;
138+ Ok ( ( ) )
96139}
97140
98141///
0 commit comments