Skip to content

Commit 3b4cd57

Browse files
committed
update stress
1 parent 37823e7 commit 3b4cd57

File tree

2 files changed

+50
-10
lines changed

2 files changed

+50
-10
lines changed

stress/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ tracing-subscriber = { workspace = true, features = ["registry", "std"] }
5252
num-format = "0.4.4"
5353
sysinfo = { version = "0.32", optional = true }
5454
libc = "=0.2.164" # https://github.com/GuillaumeGomez/sysinfo/issues/1392
55+
futures-executor = { workspace = true }
5556

5657
[features]
5758
stats = ["sysinfo"]

stress/src/logs.rs

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,75 @@
1111

1212
use opentelemetry::InstrumentationScope;
1313
use opentelemetry_appender_tracing::layer;
14-
use opentelemetry_sdk::logs::{LogProcessor, LoggerProvider};
14+
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter};
15+
use opentelemetry_sdk::logs::{LogProcessor, LogResult, LoggerProvider};
16+
use std::{
17+
os::unix::process,
18+
sync::{Arc, Mutex},
19+
};
1520
use tracing::error;
1621
use tracing_subscriber::prelude::*;
1722

1823
mod throughput;
1924

25+
#[derive(Clone, Debug, Default)]
26+
pub struct SimpleExporter;
27+
28+
impl LogExporter for SimpleExporter {
29+
fn export<'a>(
30+
&'a mut self,
31+
_batch: &'a LogBatch<'a>,
32+
) -> impl std::future::Future<Output = LogResult<()>> + Send + 'a {
33+
async { Ok(()) }
34+
}
35+
}
36+
2037
#[derive(Debug)]
21-
pub struct NoOpLogProcessor;
38+
pub struct NoOpLogProcessor {
39+
exporter: Arc<Mutex<SimpleExporter>>,
40+
}
41+
42+
impl NoOpLogProcessor {
43+
pub fn new(exporter: SimpleExporter) -> Self {
44+
Self {
45+
exporter: Arc::new(Mutex::new(exporter)),
46+
}
47+
}
48+
}
2249

2350
impl LogProcessor for NoOpLogProcessor {
24-
fn emit(
25-
&self,
26-
_record: &mut opentelemetry_sdk::logs::LogRecord,
27-
_scope: &InstrumentationScope,
28-
) {
51+
fn emit(&self, record: &mut opentelemetry_sdk::logs::LogRecord, scope: &InstrumentationScope) {
52+
let log_tuple = &[(record as &opentelemetry_sdk::logs::LogRecord, scope)];
53+
let log_batch = LogBatch::new(log_tuple);
54+
55+
// Access the exporter using the Mutex
56+
if let Ok(mut exporter) = self.exporter.lock() {
57+
match futures_executor::block_on(exporter.export(&log_batch)) {
58+
Err(err) => {
59+
eprintln!("Error: Export failed in NoOpLogProcessor. Error: {:?}", err);
60+
}
61+
_ => {}
62+
}
63+
} else {
64+
eprintln!("Error: Failed to acquire lock on exporter.");
65+
}
2966
}
3067

31-
fn force_flush(&self) -> opentelemetry_sdk::logs::LogResult<()> {
68+
fn force_flush(&self) -> LogResult<()> {
3269
Ok(())
3370
}
3471

35-
fn shutdown(&self) -> opentelemetry_sdk::logs::LogResult<()> {
72+
fn shutdown(&self) -> LogResult<()> {
3673
Ok(())
3774
}
3875
}
3976

4077
fn main() {
78+
let exporter = SimpleExporter::default();
79+
let processor = NoOpLogProcessor::new(exporter);
4180
// LoggerProvider with a no-op processor.
4281
let provider: LoggerProvider = LoggerProvider::builder()
43-
.with_log_processor(NoOpLogProcessor {})
82+
.with_log_processor(processor)
4483
.build();
4584

4685
// Use the OpenTelemetryTracingBridge to test the throughput of the appender-tracing.

0 commit comments

Comments
 (0)