Skip to content

Commit 8343f4a

Browse files
committed
Add simple processor to integration test
1 parent 27410b0 commit 8343f4a

File tree

1 file changed

+45
-6
lines changed
  • opentelemetry-otlp/tests/integration_test/tests

1 file changed

+45
-6
lines changed

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

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use opentelemetry_sdk::{logs as sdklogs, Resource};
99
use std::fs::File;
1010
use std::io::Read;
1111

12-
fn init_logs() -> Result<sdklogs::LoggerProvider> {
12+
fn init_logs(is_simple: bool) -> Result<sdklogs::LoggerProvider> {
1313
let exporter_builder = LogExporter::builder();
1414
#[cfg(feature = "tonic-client")]
1515
let exporter_builder = exporter_builder.with_tonic();
@@ -23,14 +23,22 @@ fn init_logs() -> Result<sdklogs::LoggerProvider> {
2323

2424
let exporter = exporter_builder.build()?;
2525

26-
Ok(LoggerProvider::builder()
27-
.with_batch_exporter(exporter)
26+
let mut logger_provider_builder = LoggerProvider::builder();
27+
if is_simple {
28+
logger_provider_builder = logger_provider_builder.with_simple_exporter(exporter)
29+
} else {
30+
logger_provider_builder = logger_provider_builder.with_batch_exporter(exporter)
31+
};
32+
33+
let logger_provider = logger_provider_builder
2834
.with_resource(
2935
Resource::builder_empty()
3036
.with_service_name("logs-integration-test")
3137
.build(),
3238
)
33-
.build())
39+
.build();
40+
41+
Ok(logger_provider)
3442
}
3543

3644
#[cfg(test)]
@@ -99,7 +107,7 @@ mod logtests {
99107
use crate::{assert_logs_results, init_logs};
100108
test_utils::start_collector_container().await?;
101109

102-
let logger_provider = init_logs().unwrap();
110+
let logger_provider = init_logs(false).unwrap();
103111
let layer = OpenTelemetryTracingBridge::new(&logger_provider);
104112
let subscriber = tracing_subscriber::registry().with(layer);
105113
// generate a random uuid and store it to expected guid
@@ -130,7 +138,38 @@ mod logtests {
130138
let logger_provider = rt.block_on(async {
131139
// While we're here setup our collector container too, as this needs tokio to run
132140
test_utils::start_collector_container().await?;
133-
init_logs()
141+
init_logs(false)
142+
})?;
143+
let layer = layer::OpenTelemetryTracingBridge::new(&logger_provider);
144+
let subscriber = tracing_subscriber::registry().with(layer);
145+
// generate a random uuid and store it to expected guid
146+
let expected_uuid = Uuid::new_v4().to_string();
147+
{
148+
let _guard = tracing::subscriber::set_default(subscriber);
149+
info!(target: "my-target", uuid = expected_uuid, "hello from {}. My price is {}.", "banana", 2.99);
150+
}
151+
152+
let _ = logger_provider.shutdown();
153+
std::thread::sleep(Duration::from_secs(5));
154+
assert_logs_results(test_utils::LOGS_FILE, expected_uuid.as_str())?;
155+
Ok(())
156+
}
157+
158+
#[test]
159+
#[cfg(any(feature = "tonic-client", feature = "reqwest-blocking-client"))]
160+
pub fn logs_simple_non_tokio_main() -> Result<()> {
161+
logs_simple_non_tokio_helper()
162+
}
163+
164+
fn logs_simple_non_tokio_helper() -> Result<()> {
165+
// Initialize the logger provider inside a tokio runtime
166+
// as this allows tonic client to capture the runtime,
167+
// but actual export occurs from the main non-tokio thread.
168+
let rt = tokio::runtime::Runtime::new()?;
169+
let logger_provider = rt.block_on(async {
170+
// While we're here setup our collector container too, as this needs tokio to run
171+
test_utils::start_collector_container().await?;
172+
init_logs(true)
134173
})?;
135174
let layer = layer::OpenTelemetryTracingBridge::new(&logger_provider);
136175
let subscriber = tracing_subscriber::registry().with(layer);

0 commit comments

Comments
 (0)