Skip to content

Commit 863cdbc

Browse files
committed
fix(ot): Fix unit tests
1 parent d127624 commit 863cdbc

File tree

3 files changed

+110
-8
lines changed

3 files changed

+110
-8
lines changed

dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import datadog.trace.api.DDSpanId
33
import datadog.trace.api.DDTags
44
import datadog.trace.api.DDTraceId
55
import datadog.trace.api.interceptor.MutableSpan
6+
import datadog.trace.bootstrap.instrumentation.api.AgentTracer
67
import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities
78
import datadog.trace.core.propagation.PropagationTags
89
import datadog.trace.instrumentation.opentracing.DefaultLogHandler
@@ -154,24 +155,25 @@ class OpenTracing31Test extends AgentTestRunner {
154155

155156
def "test scopemanager"() {
156157
setup:
158+
AgentTracer.TracerAPI internalTracer = tracer.tracer.tracer
157159
def span = tracer.buildSpan("some name").start()
158160
def scope = tracer.scopeManager().activate(span, finishSpan)
159-
setAsyncPropagation(false)
161+
internalTracer.setAsyncPropagation(false)
160162

161163
expect:
162164
span instanceof MutableSpan
163165
scope instanceof TraceScope
164-
!(scope as TraceScope).isAsyncPropagating()
166+
!internalTracer.isAsyncPropagation()
165167
(scope as TraceScope).capture() == null
166168
(tracer.scopeManager().active().span().delegate == span.delegate)
167169

168170
when:
169-
setAsyncPropagation(true)
171+
internalTracer.setAsyncPropagation(true)
170172
def continuation = (scope as TraceScope).capture()
171173
continuation.cancel()
172174

173175
then:
174-
(scope as TraceScope).isAsyncPropagating()
176+
internalTracer.isAsyncPropagation()
175177
continuation instanceof TraceScope.Continuation
176178

177179
when: "attempting to close the span this way doesn't work because we lost the 'finishSpan' reference"

dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import datadog.trace.api.DDSpanId
33
import datadog.trace.api.DDTags
44
import datadog.trace.api.DDTraceId
55
import datadog.trace.api.interceptor.MutableSpan
6+
import datadog.trace.bootstrap.instrumentation.api.AgentTracer
67
import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities
78
import datadog.trace.context.TraceScope
89
import datadog.trace.core.DDSpan
@@ -164,24 +165,25 @@ class OpenTracing32Test extends AgentTestRunner {
164165

165166
def "test scopemanager"() {
166167
setup:
168+
AgentTracer.TracerAPI internalTracer = tracer.tracer.tracer
167169
def span = tracer.buildSpan("some name").start()
168170
def scope = tracer.scopeManager().activate(span, finishSpan)
169-
setAsyncPropagation(false)
171+
internalTracer.setAsyncPropagation(false)
170172

171173
expect:
172174
span instanceof MutableSpan
173175
scope instanceof TraceScope
174-
!(scope as TraceScope).isAsyncPropagating()
176+
!internalTracer.isAsyncPropagation()
175177
(scope as TraceScope).capture() == null
176178
(tracer.scopeManager().active().span().delegate == span.delegate)
177179

178180
when:
179-
setAsyncPropagation(true)
181+
internalTracer.setAsyncPropagation(true)
180182
def continuation = (scope as TraceScope).capture()
181183
continuation.cancel()
182184

183185
then:
184-
(scope as TraceScope).isAsyncPropagating()
186+
internalTracer.isAsyncPropagation()
185187
continuation instanceof TraceScope.Continuation
186188

187189
when: "attempting to close the span this way doesn't work because we lost the 'finishSpan' reference"

dd-trace-ot/src/test/groovy/datadog/opentracing/OpenTracingAPITest.groovy

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import datadog.trace.api.config.TracerConfig
55
import datadog.trace.api.interceptor.MutableSpan
66
import datadog.trace.api.interceptor.TraceInterceptor
77
import datadog.trace.api.scopemanager.ScopeListener
8+
import datadog.trace.bootstrap.instrumentation.api.AgentTracer
89
import datadog.trace.common.writer.ListWriter
10+
import datadog.trace.context.TraceScope
911
import datadog.trace.test.util.DDSpecification
1012
import io.opentracing.Scope
1113
import io.opentracing.Span
@@ -219,6 +221,102 @@ class OpenTracingAPITest extends DDSpecification {
219221
}
220222
}
221223

224+
def "span with async propagation"() {
225+
setup:
226+
AgentTracer.TracerAPI internalTracer = tracer.tracer
227+
228+
when:
229+
Scope scope = tracer.buildSpan("someOperation")
230+
.withTag(DDTags.SERVICE_NAME, "someService")
231+
.startActive(true)
232+
internalTracer.setAsyncPropagation(false)
233+
234+
then:
235+
scope instanceof TraceScope
236+
!internalTracer.isAsyncPropagation()
237+
238+
when:
239+
internalTracer.setAsyncPropagation(true)
240+
TraceScope.Continuation continuation = ((TraceScope) scope).capture()
241+
242+
then:
243+
internalTracer.isAsyncPropagation()
244+
continuation != null
245+
246+
when:
247+
continuation.cancel()
248+
scope.close()
249+
writer.waitForTraces(1)
250+
251+
then:
252+
1 * traceInterceptor.onTraceComplete({ it.size() == 1 }) >> { args -> args[0] }
253+
254+
assertTraces(writer, 1) {
255+
trace(1) {
256+
span {
257+
serviceName "someService"
258+
operationName "someOperation"
259+
resourceName "someOperation"
260+
tags {
261+
defaultTags()
262+
}
263+
}
264+
}
265+
}
266+
}
267+
268+
def "span inherits async propagation"() {
269+
setup:
270+
AgentTracer.TracerAPI internalTracer = tracer.tracer
271+
272+
when:
273+
Scope outer = tracer.buildSpan("someOperation")
274+
.withTag(DDTags.SERVICE_NAME, "someService")
275+
.startActive(true)
276+
internalTracer.setAsyncPropagation(false)
277+
278+
then:
279+
!internalTracer.isAsyncPropagation()
280+
281+
when:
282+
internalTracer.setAsyncPropagation(true)
283+
Scope inner = tracer.buildSpan("otherOperation")
284+
.withTag(DDTags.SERVICE_NAME, "otherService")
285+
.startActive(true)
286+
287+
then:
288+
internalTracer.isAsyncPropagation()
289+
290+
when:
291+
inner.close()
292+
outer.close()
293+
writer.waitForTraces(1)
294+
295+
then:
296+
1 * traceInterceptor.onTraceComplete({ it.size() == 2 }) >> { args -> args[0] }
297+
298+
assertTraces(writer, 1) {
299+
trace(2) {
300+
span {
301+
serviceName "someService"
302+
operationName "someOperation"
303+
resourceName "someOperation"
304+
tags {
305+
defaultTags()
306+
}
307+
}
308+
span {
309+
serviceName "otherService"
310+
operationName "otherOperation"
311+
resourceName "otherOperation"
312+
tags {
313+
defaultTags()
314+
}
315+
}
316+
}
317+
}
318+
}
319+
222320
def "SpanContext ids equal tracer ids"() {
223321
when:
224322
Span testSpan = tracer.buildSpan("someOperation")

0 commit comments

Comments
 (0)