@@ -36,3 +36,62 @@ pub use sampler::{JaegerRemoteSampler, JaegerRemoteSamplerBuilder};
36
36
37
37
#[ cfg( test) ]
38
38
mod runtime_tests;
39
+
40
+ #[ cfg( all( test, feature = "testing" ) ) ]
41
+ mod tests {
42
+ use super :: * ;
43
+ use crate :: testing:: trace:: InMemorySpanExporterBuilder ;
44
+ use opentelemetry:: {
45
+ trace:: { Span , Tracer , TracerProvider as _} ,
46
+ KeyValue ,
47
+ } ;
48
+
49
+ #[ test]
50
+ fn tracing_in_span ( ) {
51
+ // Arrange
52
+ let exporter = InMemorySpanExporterBuilder :: new ( ) . build ( ) ;
53
+ let provider = TracerProvider :: builder ( )
54
+ . with_span_processor ( SimpleSpanProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) )
55
+ . build ( ) ;
56
+
57
+ // Act
58
+ let tracer = provider. tracer ( "test_tracer" ) ;
59
+ tracer. in_span ( "span_name" , |_cx| { } ) ;
60
+
61
+ provider. force_flush ( ) ;
62
+
63
+ // Assert
64
+ let exported_spans = exporter
65
+ . get_finished_spans ( )
66
+ . expect ( "Spans are expected to be exported." ) ;
67
+ assert_eq ! ( exported_spans. len( ) , 1 ) ;
68
+ let span = & exported_spans[ 0 ] ;
69
+ assert_eq ! ( span. name, "span_name" ) ;
70
+ assert_eq ! ( span. instrumentation_lib. name, "test_tracer" ) ;
71
+ }
72
+
73
+ #[ test]
74
+ fn tracing_tracer_start ( ) {
75
+ // Arrange
76
+ let exporter = InMemorySpanExporterBuilder :: new ( ) . build ( ) ;
77
+ let provider = TracerProvider :: builder ( )
78
+ . with_span_processor ( SimpleSpanProcessor :: new ( Box :: new ( exporter. clone ( ) ) ) )
79
+ . build ( ) ;
80
+
81
+ // Act
82
+ let tracer = provider. tracer ( "test_tracer" ) ;
83
+ let mut span = tracer. start ( "span_name" ) ;
84
+ span. set_attribute ( KeyValue :: new ( "key1" , "value1" ) ) ;
85
+ drop ( span) ;
86
+ provider. force_flush ( ) ;
87
+
88
+ // Assert
89
+ let exported_spans = exporter
90
+ . get_finished_spans ( )
91
+ . expect ( "Spans are expected to be exported." ) ;
92
+ assert_eq ! ( exported_spans. len( ) , 1 ) ;
93
+ let span = & exported_spans[ 0 ] ;
94
+ assert_eq ! ( span. name, "span_name" ) ;
95
+ assert_eq ! ( span. instrumentation_lib. name, "test_tracer" ) ;
96
+ }
97
+ }
0 commit comments