@@ -568,7 +568,7 @@ mod tests {
568568 } ;
569569 use crate :: trace:: { SdkTracer , SpanEvents , SpanLinks , SpanProcessor } ;
570570 use opentelemetry:: trace:: {
571- self , SamplingResult , Span as _, SpanBuilder , TraceFlags , TraceId , Tracer , TracerProvider ,
571+ Span as _, SpanBuilder , SpanKind , TraceFlags , TraceId , Tracer , TracerProvider ,
572572 } ;
573573 use std:: time:: Duration ;
574574 use std:: vec;
@@ -579,7 +579,7 @@ mod tests {
579579 let data = SpanData {
580580 parent_span_id : SpanId :: from ( 0 ) ,
581581 parent_span_is_remote : false ,
582- span_kind : trace :: SpanKind :: Internal ,
582+ span_kind : SpanKind :: Internal ,
583583 name : "opentelemetry" . into ( ) ,
584584 start_time : opentelemetry:: time:: now ( ) ,
585585 end_time : opentelemetry:: time:: now ( ) ,
@@ -998,80 +998,60 @@ mod tests {
998998 assert_eq ! ( event_vec. len( ) , DEFAULT_MAX_EVENT_PER_SPAN as usize ) ;
999999 }
10001000
1001- fn make_test_span ( tracer : & SdkTracer , sampling_decision : trace:: SamplingDecision ) -> Span {
1002- tracer
1003- . span_builder ( "test_span" )
1004- . with_sampling_result ( SamplingResult {
1005- decision : sampling_decision,
1006- attributes : vec ! [ ] ,
1007- trace_state : Default :: default ( ) ,
1008- } )
1009- . with_attributes ( vec ! [ KeyValue :: new( "k" , "v" ) ] )
1010- . with_kind ( SpanKind :: Client )
1011- . with_events ( vec ! [ Event :: with_name( "test_event" ) ] )
1012- . with_links ( vec ! [ Link :: with_context( SpanContext :: new(
1013- TraceId :: from_bytes( ( 1234_u128 ) . to_ne_bytes( ) ) ,
1014- SpanId :: from_bytes( ( 5678_u64 ) . to_ne_bytes( ) ) ,
1015- Default :: default ( ) ,
1016- false ,
1017- Default :: default ( ) ,
1018- ) ) ] )
1019- . with_span_id ( SpanId :: from_bytes ( ( 1337_u64 ) . to_ne_bytes ( ) ) )
1020- . start ( tracer)
1001+ fn make_test_span ( tracer : & SdkTracer ) -> Span {
1002+ let mut span = tracer. start ( "test_span" ) ;
1003+ span. set_attribute ( KeyValue :: new ( "k" , "v" ) ) ;
1004+ span. add_event ( "test_event" , vec ! [ ] ) ;
1005+ span
10211006 }
10221007
10231008 #[ test]
1024- fn test_readable_span ( ) {
1009+ fn test_readable_span_recording ( ) {
10251010 use super :: ReadableSpan ;
10261011
10271012 let provider = crate :: trace:: SdkTracerProvider :: builder ( )
10281013 . with_simple_exporter ( NoopSpanExporter :: new ( ) )
10291014 . build ( ) ;
10301015 let tracer = provider. tracer ( "test" ) ;
1031- {
1032- // ReadableSpan trait methods for recording span
1033- let span = make_test_span ( & tracer, trace:: SamplingDecision :: RecordOnly ) ;
1034-
1035- assert_eq ! (
1036- span. context( ) . span_id( ) ,
1037- SpanId :: from_bytes( ( 1337_u64 ) . to_ne_bytes( ) )
1038- ) ;
1039-
1040- assert_eq ! ( span. name( ) , Some ( "test_span" ) ) ;
1041- assert_eq ! ( span. span_kind( ) , SpanKind :: Client ) ;
1042- assert ! ( span. start_time( ) . is_some( ) ) ;
1043- assert ! ( span. end_time( ) . is_some( ) ) ;
1044- assert_eq ! ( span. attributes( ) , & [ KeyValue :: new( "k" , "v" ) ] ) ;
1045- assert_eq ! ( span. dropped_attributes_count( ) , 0 ) ;
1046- assert_eq ! ( span. events( ) . len( ) , 1 ) ;
1047- assert_eq ! ( span. events( ) [ 0 ] . name, "test_event" ) ;
1048- assert_eq ! ( span. dropped_events_count( ) , 0 ) ;
1049- assert_eq ! ( span. links( ) . len( ) , 1 ) ;
1050- }
10511016
1052- {
1053- // ReadableSpan trait methods for non-recording span
1054- let span = make_test_span ( & tracer, trace:: SamplingDecision :: Drop ) ;
1055-
1056- assert_eq ! (
1057- span. context( ) . span_id( ) ,
1058- SpanId :: from_bytes( ( 1337_u64 ) . to_ne_bytes( ) )
1059- ) ;
1060-
1061- assert_eq ! ( span. name( ) , None ) ;
1062- assert_eq ! ( span. span_kind( ) , SpanKind :: Internal ) ;
1063- assert ! ( span. start_time( ) . is_none( ) ) ;
1064- assert ! ( span. end_time( ) . is_none( ) ) ;
1065- assert_eq ! ( span. attributes( ) , & [ ] ) ;
1066- assert_eq ! ( span. dropped_attributes_count( ) , 0 ) ;
1067- assert_eq ! ( span. events( ) . len( ) , 0 ) ;
1068- assert_eq ! ( span. dropped_events_count( ) , 0 ) ;
1069- assert_eq ! ( span. links( ) . len( ) , 0 ) ;
1070- assert_eq ! (
1071- span. context( ) . span_id( ) ,
1072- SpanId :: from_bytes( ( 1337_u64 ) . to_ne_bytes( ) )
1073- ) ;
1074- }
1017+ // ReadableSpan trait methods for recording span
1018+ let span = make_test_span ( & tracer) ;
1019+
1020+ assert ! ( span. context( ) . span_id( ) != SpanId :: INVALID ) ;
1021+ assert_eq ! ( span. name( ) , Some ( "test_span" ) ) ;
1022+ assert ! ( span. start_time( ) . is_some( ) ) ;
1023+ assert ! ( span. end_time( ) . is_some( ) ) ;
1024+ assert_eq ! ( span. attributes( ) , & [ KeyValue :: new( "k" , "v" ) ] ) ;
1025+ assert_eq ! ( span. dropped_attributes_count( ) , 0 ) ;
1026+ assert_eq ! ( span. events( ) . len( ) , 1 ) ;
1027+ assert_eq ! ( span. events( ) [ 0 ] . name, "test_event" ) ;
1028+ assert_eq ! ( span. dropped_events_count( ) , 0 ) ;
1029+ }
1030+
1031+ #[ test]
1032+ fn test_readable_span_non_recording ( ) {
1033+ use super :: ReadableSpan ;
1034+ use crate :: trace:: Sampler ;
1035+
1036+ let provider = crate :: trace:: SdkTracerProvider :: builder ( )
1037+ . with_sampler ( Sampler :: AlwaysOff )
1038+ . with_simple_exporter ( NoopSpanExporter :: new ( ) )
1039+ . build ( ) ;
1040+ let tracer = provider. tracer ( "test" ) ;
1041+
1042+ // Non-recording span (sampler dropped it)
1043+ let span = make_test_span ( & tracer) ;
1044+
1045+ assert ! ( span. context( ) . span_id( ) != SpanId :: INVALID ) ;
1046+ assert_eq ! ( span. name( ) , None ) ;
1047+ assert_eq ! ( span. span_kind( ) , SpanKind :: Internal ) ;
1048+ assert ! ( span. start_time( ) . is_none( ) ) ;
1049+ assert ! ( span. end_time( ) . is_none( ) ) ;
1050+ assert_eq ! ( span. attributes( ) , & [ ] ) ;
1051+ assert_eq ! ( span. dropped_attributes_count( ) , 0 ) ;
1052+ assert_eq ! ( span. events( ) . len( ) , 0 ) ;
1053+ assert_eq ! ( span. dropped_events_count( ) , 0 ) ;
1054+ assert_eq ! ( span. links( ) . len( ) , 0 ) ;
10751055 }
10761056
10771057 #[ test]
@@ -1103,21 +1083,15 @@ mod tests {
11031083 struct TestSpanProcessor ;
11041084 impl SpanProcessor for TestSpanProcessor {
11051085 fn on_end ( & self , span : & mut FinishedSpan ) {
1106- assert_eq ! (
1107- span. context( ) . span_id( ) ,
1108- SpanId :: from_bytes( ( 1337_u64 ) . to_ne_bytes( ) )
1109- ) ;
1110-
1086+ assert ! ( span. context( ) . span_id( ) != SpanId :: INVALID ) ;
11111087 assert_eq ! ( span. name( ) , Some ( "test_span" ) ) ;
1112- assert_eq ! ( span. span_kind( ) , SpanKind :: Client ) ;
11131088 assert ! ( span. start_time( ) . is_some( ) ) ;
11141089 assert ! ( span. end_time( ) . is_some( ) ) ;
11151090 assert_eq ! ( span. attributes( ) , & [ KeyValue :: new( "k" , "v" ) ] ) ;
11161091 assert_eq ! ( span. dropped_attributes_count( ) , 0 ) ;
11171092 assert_eq ! ( span. events( ) . len( ) , 1 ) ;
11181093 assert_eq ! ( span. events( ) [ 0 ] . name, "test_event" ) ;
11191094 assert_eq ! ( span. dropped_events_count( ) , 0 ) ;
1120- assert_eq ! ( span. links( ) . len( ) , 1 ) ;
11211095
11221096 let _ = span. consume ( ) ;
11231097 }
@@ -1137,10 +1111,7 @@ mod tests {
11371111 . with_span_processor ( TestSpanProcessor )
11381112 . with_span_processor ( TestSpanProcessor )
11391113 . build ( ) ;
1140- drop ( make_test_span (
1141- & provider. tracer ( "test" ) ,
1142- trace:: SamplingDecision :: RecordAndSample ,
1143- ) ) ;
1114+ drop ( make_test_span ( & provider. tracer ( "test" ) ) ) ;
11441115 let res = provider. shutdown ( ) ;
11451116 println ! ( "{:?}" , res) ;
11461117 assert ! ( res. is_ok( ) ) ;
@@ -1170,10 +1141,7 @@ mod tests {
11701141 let provider = crate :: trace:: SdkTracerProvider :: builder ( )
11711142 . with_span_processor ( TestSpanProcessor )
11721143 . build ( ) ;
1173- drop ( make_test_span (
1174- & provider. tracer ( "test" ) ,
1175- trace:: SamplingDecision :: RecordAndSample ,
1176- ) ) ;
1144+ drop ( make_test_span ( & provider. tracer ( "test" ) ) ) ;
11771145
11781146 let res = provider. shutdown ( ) ;
11791147 println ! ( "{:?}" , res) ;
0 commit comments