1212import io .opentelemetry .api .trace .SpanBuilder ;
1313import io .opentelemetry .api .trace .Tracer ;
1414import io .opentelemetry .context .Scope ;
15+ import io .opentelemetry .contrib .inferredspans .InferredSpansProcessor ;
1516import io .opentelemetry .sdk .OpenTelemetrySdk ;
1617import io .opentelemetry .sdk .autoconfigure .AutoConfiguredOpenTelemetrySdk ;
1718import io .opentelemetry .sdk .autoconfigure .AutoConfiguredOpenTelemetrySdkBuilder ;
@@ -49,10 +50,10 @@ void durationAndFiltering() {
4950 // over duration threshold
5051 checkSpanWithStackTrace ("1ms" , msToNs (2 ));
5152 // under duration threshold
52- checkSpanWithoutStackTrace (YesPredicate .class , "2ms" , msToNs (1 ));
53+ checkSpanWithoutStackTrace (YesPredicate .class , "2ms" , msToNs (1 ), "test" );
5354
5455 // filtering out span
55- checkSpanWithoutStackTrace (NoPredicate .class , "1ms" , msToNs (20 ));
56+ checkSpanWithoutStackTrace (NoPredicate .class , "1ms" , msToNs (20 ), "test" );
5657 }
5758
5859 public static class YesPredicate implements Predicate <ReadableSpan > {
@@ -75,12 +76,12 @@ void defaultConfig() {
7576 long expectedDefault = msToNs (5 );
7677 checkSpanWithStackTrace (null , expectedDefault );
7778 checkSpanWithStackTrace (null , expectedDefault + 1 );
78- checkSpanWithoutStackTrace (YesPredicate .class , null , expectedDefault - 1 );
79+ checkSpanWithoutStackTrace (YesPredicate .class , null , expectedDefault - 1 , "test" );
7980 }
8081
8182 @ Test
8283 void disabledConfig () {
83- checkSpanWithoutStackTrace (YesPredicate .class , "-1" , 5 );
84+ checkSpanWithoutStackTrace (YesPredicate .class , "-1" , 5 , "test" );
8485 }
8586
8687 @ Test
@@ -90,7 +91,13 @@ void spanWithExistingStackTrace() {
9091 "1ms" ,
9192 Duration .ofMillis (1 ).toNanos (),
9293 sb -> sb .setAttribute (CodeAttributes .CODE_STACKTRACE , "hello" ),
93- stacktrace -> assertThat (stacktrace ).isEqualTo ("hello" ));
94+ stacktrace -> assertThat (stacktrace ).isEqualTo ("hello" ),
95+ "test" );
96+ }
97+
98+ @ Test
99+ void spanFromInferredSpansIgnored () {
100+ checkSpanWithoutStackTrace (null , "1ms" , msToNs (1 ), InferredSpansProcessor .TRACER_NAME );
94101 }
95102
96103 private static void checkSpanWithStackTrace (String minDurationString , long spanDurationNanos ) {
@@ -102,27 +109,31 @@ private static void checkSpanWithStackTrace(String minDurationString, long spanD
102109 (stackTrace ) ->
103110 assertThat (stackTrace )
104111 .describedAs ("span stack trace should contain caller class name" )
105- .contains (StackTraceSpanProcessorTest .class .getCanonicalName ()));
112+ .contains (StackTraceSpanProcessorTest .class .getCanonicalName ()),
113+ "test" );
106114 }
107115
108116 private static void checkSpanWithoutStackTrace (
109117 Class <? extends Predicate <?>> predicateClass ,
110118 String minDurationString ,
111- long spanDurationNanos ) {
119+ long spanDurationNanos ,
120+ String scopeName ) {
112121 checkSpan (
113122 predicateClass ,
114123 minDurationString ,
115124 spanDurationNanos ,
116125 Function .identity (),
117- (stackTrace ) -> assertThat (stackTrace ).describedAs ("no stack trace expected" ).isNull ());
126+ (stackTrace ) -> assertThat (stackTrace ).describedAs ("no stack trace expected" ).isNull (),
127+ scopeName );
118128 }
119129
120130 private static void checkSpan (
121131 Class <? extends Predicate <?>> predicateClass ,
122132 String minDurationString ,
123133 long spanDurationNanos ,
124134 Function <SpanBuilder , SpanBuilder > customizeSpanBuilder ,
125- Consumer <String > stackTraceCheck ) {
135+ Consumer <String > stackTraceCheck ,
136+ String scopeName ) {
126137
127138 // must be re-created on every test as exporter is shut down on span processor close
128139 InMemorySpanExporter spansExporter = InMemorySpanExporter .create ();
@@ -153,7 +164,7 @@ private static void checkSpan(
153164
154165 try (OpenTelemetrySdk sdk = sdkBuilder .build ().getOpenTelemetrySdk ()) {
155166
156- Tracer tracer = sdk .getTracer ("test" );
167+ Tracer tracer = sdk .getTracer (scopeName );
157168
158169 Instant start = Instant .now ();
159170 Instant end = start .plusNanos (spanDurationNanos );
0 commit comments