Skip to content

Commit 75a7351

Browse files
committed
Test sync exporters
1 parent acf16ed commit 75a7351

File tree

3 files changed

+56
-11
lines changed

3 files changed

+56
-11
lines changed

opentelemetry-otlp/tests/integration_test/src/logs_asserter.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use opentelemetry_proto::tonic::logs::v1::{LogRecord, LogsData, ResourceLogs};
22
use std::fs::File;
3+
use anyhow::Result;
34

45
// Given two ResourceLogs, assert that they are equal except for the timestamps
56
pub struct LogsAsserter {
@@ -96,9 +97,9 @@ impl std::fmt::Debug for LogRecordWrapper {
9697
}
9798

9899
// read a file contains ResourceSpans in json format
99-
pub fn read_logs_from_json(file: File) -> Vec<ResourceLogs> {
100+
pub fn read_logs_from_json(file: File) -> Result<Vec<ResourceLogs>> {
100101
let reader = std::io::BufReader::new(file);
101102

102-
let log_data: LogsData = serde_json::from_reader(reader).unwrap();
103-
log_data.resource_logs
103+
let log_data: LogsData = serde_json::from_reader(reader)?;
104+
Ok(log_data.resource_logs)
104105
}

opentelemetry-otlp/tests/integration_test/tests/logs.rs

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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
///

opentelemetry-zipkin/src/exporter/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ pub struct ZipkinPipelineBuilder {
5454
impl Default for ZipkinPipelineBuilder {
5555
fn default() -> Self {
5656
let timeout = env::get_timeout();
57+
5758
ZipkinPipelineBuilder {
5859
#[cfg(feature = "reqwest-blocking-client")]
5960
client: Some(Arc::new(

0 commit comments

Comments
 (0)