Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4b77bd2

Browse files
authoredMar 19, 2024··
Merge branch 'main' into addlink
2 parents e3467a5 + a7a47a7 commit 4b77bd2

File tree

2 files changed

+22
-57
lines changed

2 files changed

+22
-57
lines changed
 

‎opentelemetry-sdk/src/testing/trace/span_exporters.rs

+1-46
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,12 @@ use crate::{
66
trace::{Config, SpanEvents, SpanLinks},
77
InstrumentationLibrary,
88
};
9-
use async_trait::async_trait;
109
use futures_util::future::BoxFuture;
1110
pub use opentelemetry::testing::trace::TestSpan;
1211
use opentelemetry::trace::{
1312
SpanContext, SpanId, SpanKind, Status, TraceFlags, TraceId, TraceState,
1413
};
15-
use std::{
16-
fmt::{Display, Formatter},
17-
sync::{Arc, Mutex},
18-
};
14+
use std::fmt::{Display, Formatter};
1915

2016
pub fn new_test_export_span_data() -> SpanData {
2117
let config = Config::default();
@@ -42,47 +38,6 @@ pub fn new_test_export_span_data() -> SpanData {
4238
}
4339
}
4440

45-
#[derive(Clone, Debug)]
46-
pub struct TestSpanExporter {
47-
pub export_called: Arc<Mutex<bool>>,
48-
pub shutdown_called: Arc<Mutex<bool>>,
49-
}
50-
51-
impl Default for TestSpanExporter {
52-
fn default() -> Self {
53-
Self::new()
54-
}
55-
}
56-
57-
impl TestSpanExporter {
58-
pub fn new() -> Self {
59-
TestSpanExporter {
60-
export_called: Arc::new(Mutex::new(false)),
61-
shutdown_called: Arc::new(Mutex::new(false)),
62-
}
63-
}
64-
65-
pub fn is_export_called(&self) -> bool {
66-
*self.export_called.lock().unwrap()
67-
}
68-
69-
pub fn is_shutdown_called(&self) -> bool {
70-
*self.shutdown_called.lock().unwrap()
71-
}
72-
}
73-
74-
#[async_trait]
75-
impl SpanExporter for TestSpanExporter {
76-
fn export(&mut self, _batch: Vec<SpanData>) -> BoxFuture<'static, ExportResult> {
77-
*self.export_called.lock().unwrap() = true;
78-
Box::pin(std::future::ready(Ok(())))
79-
}
80-
81-
fn shutdown(&mut self) {
82-
*self.shutdown_called.lock().unwrap() = true;
83-
}
84-
}
85-
8641
#[derive(Debug)]
8742
pub struct TokioSpanExporter {
8843
tx_export: tokio::sync::mpsc::UnboundedSender<SpanData>,

‎opentelemetry-sdk/src/trace/span_processor.rs

+21-11
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,7 @@ mod tests {
671671
use crate::export::trace::{ExportResult, SpanData, SpanExporter};
672672
use crate::runtime;
673673
use crate::testing::trace::{
674-
new_test_export_span_data, new_tokio_test_exporter, TestSpanExporter,
674+
new_test_export_span_data, new_tokio_test_exporter, InMemorySpanExporterBuilder,
675675
};
676676
use crate::trace::span_processor::{
677677
OTEL_BSP_EXPORT_TIMEOUT_DEFAULT, OTEL_BSP_MAX_EXPORT_BATCH_SIZE_DEFAULT,
@@ -685,16 +685,17 @@ mod tests {
685685

686686
#[test]
687687
fn simple_span_processor_on_end_calls_export() {
688-
let exporter = TestSpanExporter::new();
688+
let exporter = InMemorySpanExporterBuilder::new().build();
689689
let mut processor = SimpleSpanProcessor::new(Box::new(exporter.clone()));
690-
processor.on_end(new_test_export_span_data());
691-
assert!(exporter.is_export_called());
690+
let span_data = new_test_export_span_data();
691+
processor.on_end(span_data.clone());
692+
assert_eq!(exporter.get_finished_spans().unwrap()[0], span_data);
692693
let _result = processor.shutdown();
693694
}
694695

695696
#[test]
696697
fn simple_span_processor_on_end_skips_export_if_not_sampled() {
697-
let exporter = TestSpanExporter::new();
698+
let exporter = InMemorySpanExporterBuilder::new().build();
698699
let processor = SimpleSpanProcessor::new(Box::new(exporter.clone()));
699700
let unsampled = SpanData {
700701
span_context: SpanContext::empty_context(),
@@ -712,16 +713,19 @@ mod tests {
712713
instrumentation_lib: Default::default(),
713714
};
714715
processor.on_end(unsampled);
715-
assert!(!exporter.is_export_called());
716+
assert!(exporter.get_finished_spans().unwrap().is_empty());
716717
}
717718

718719
#[test]
719720
fn simple_span_processor_shutdown_calls_shutdown() {
720-
let exporter = TestSpanExporter::new();
721+
let exporter = InMemorySpanExporterBuilder::new().build();
721722
let mut processor = SimpleSpanProcessor::new(Box::new(exporter.clone()));
722-
assert!(!exporter.is_shutdown_called());
723+
let span_data = new_test_export_span_data();
724+
processor.on_end(span_data.clone());
725+
assert!(!exporter.get_finished_spans().unwrap().is_empty());
723726
let _result = processor.shutdown();
724-
assert!(exporter.is_shutdown_called());
727+
// Assume shutdown is called by ensuring spans are empty in the exporter
728+
assert!(exporter.get_finished_spans().unwrap().is_empty());
725729
}
726730

727731
#[test]
@@ -820,7 +824,10 @@ mod tests {
820824
(OTEL_BSP_EXPORT_TIMEOUT, Some("2046")),
821825
];
822826
temp_env::with_vars(env_vars.clone(), || {
823-
let builder = BatchSpanProcessor::builder(TestSpanExporter::new(), runtime::Tokio);
827+
let builder = BatchSpanProcessor::builder(
828+
InMemorySpanExporterBuilder::new().build(),
829+
runtime::Tokio,
830+
);
824831
// export batch size cannot exceed max queue size
825832
assert_eq!(builder.config.max_export_batch_size, 500);
826833
assert_eq!(
@@ -840,7 +847,10 @@ mod tests {
840847
env_vars.push((OTEL_BSP_MAX_QUEUE_SIZE, Some("120")));
841848

842849
temp_env::with_vars(env_vars, || {
843-
let builder = BatchSpanProcessor::builder(TestSpanExporter::new(), runtime::Tokio);
850+
let builder = BatchSpanProcessor::builder(
851+
InMemorySpanExporterBuilder::new().build(),
852+
runtime::Tokio,
853+
);
844854
assert_eq!(builder.config.max_export_batch_size, 120);
845855
assert_eq!(builder.config.max_queue_size, 120);
846856
});

0 commit comments

Comments
 (0)
Please sign in to comment.