use of io.opentracing.Scope in project jaeger-client-java by jaegertracing.
the class ActiveSpanTest method testActiveSpanAutoReference.
@Test
public void testActiveSpanAutoReference() {
Span span = tracer.buildSpan("parent").start();
try (Scope ignored = tracer.activateSpan(span)) {
tracer.buildSpan("child").start().finish();
} finally {
span.finish();
}
assertEquals(2, reporter.getSpans().size());
JaegerSpan childSpan = reporter.getSpans().get(0);
assertEquals("child", childSpan.getOperationName());
assertEquals(1, childSpan.getReferences().size());
assertEquals(References.CHILD_OF, childSpan.getReferences().get(0).getType());
JaegerSpan parentSpan = reporter.getSpans().get(1);
assertEquals("parent", parentSpan.getOperationName());
assertTrue(parentSpan.getReferences().isEmpty());
JaegerSpanContext childSpanContext = childSpan.context();
JaegerSpanContext parentSpanContext = parentSpan.context();
assertEquals(parentSpan.context(), childSpan.getReferences().get(0).getSpanContext());
assertEquals(parentSpanContext.getTraceId(), childSpanContext.getTraceId());
assertEquals(parentSpanContext.getSpanId(), childSpanContext.getParentId());
}
use of io.opentracing.Scope in project jaeger-client-java by jaegertracing.
the class ActiveSpanTest method testCustomScopeManager.
@Test
public void testCustomScopeManager() {
Span span = mock(Span.class);
Scope scope = mock(Scope.class);
JaegerTracer tracer = new JaegerTracer.Builder("test").withReporter(new InMemoryReporter()).withSampler(new ConstSampler(true)).withScopeManager(new ScopeManager() {
@Override
public Scope activate(Span span) {
return scope;
}
@Override
public Span activeSpan() {
return span;
}
}).build();
assertEquals(span, tracer.scopeManager().activeSpan());
assertEquals(scope, tracer.scopeManager().activate(span));
}
use of io.opentracing.Scope in project jaeger-client-java by jaegertracing.
the class TraceBehaviorResourceTest method testStartTraceHttp.
@Test
public void testStartTraceHttp() throws Exception {
Span root = server.getTracer().buildSpan("root").start();
String expectedTraceId = ((JaegerSpanContext) root.context()).getTraceId();
String expectedBaggage = "baggage-example";
try (Scope scope = server.getTracer().activateSpan(root)) {
Downstream downstream = new Downstream(SERVICE_NAME, "127.0.0.1", String.valueOf(port), Constants.TRANSPORT_HTTP, "server", null);
StartTraceRequest startTraceRequest = new StartTraceRequest("server-role", expectedSampled, expectedBaggage, downstream);
Response resp = JerseyServer.client.target(String.format("http://%s/start_trace", hostPort)).request(MediaType.APPLICATION_JSON).post(Entity.json(startTraceRequest));
TraceResponse traceResponse = resp.readEntity(TraceResponse.class);
assertNotNull(traceResponse.getDownstream());
validateTraceResponse(traceResponse, expectedTraceId, expectedBaggage, 1);
}
}
use of io.opentracing.Scope in project jaeger-client-java by jaegertracing.
the class TraceBehaviorResourceTest method testJoinTraceHttp.
@Test
public void testJoinTraceHttp() throws Exception {
Span root = server.getTracer().buildSpan("root").start();
String expectedBaggage = "baggage-example";
root.setBaggageItem(Constants.BAGGAGE_KEY, expectedBaggage);
if (expectedSampled) {
Tags.SAMPLING_PRIORITY.set(root, 1);
}
try (Scope scope = server.getTracer().activateSpan(root)) {
Downstream bottomDownstream = new Downstream(SERVICE_NAME, "127.0.0.1", String.valueOf(port), Constants.TRANSPORT_HTTP, "server", null);
Downstream topDownstream = new Downstream(SERVICE_NAME, "127.0.0.1", String.valueOf(port), Constants.TRANSPORT_HTTP, "server", bottomDownstream);
JoinTraceRequest joinTraceRequest = new JoinTraceRequest("server-role", topDownstream);
Response resp = JerseyServer.client.target(String.format("http://%s/join_trace", hostPort)).request(MediaType.APPLICATION_JSON).post(Entity.json(joinTraceRequest));
TraceResponse traceResponse = resp.readEntity(TraceResponse.class);
assertNotNull(traceResponse.getDownstream());
validateTraceResponse(traceResponse, ((JaegerSpanContext) root.context()).getTraceId(), expectedBaggage, 2);
}
}
use of io.opentracing.Scope in project cxf by apache.
the class AbstractOpenTracingClientProvider method stopTraceSpan.
protected void stopTraceSpan(final TraceScopeHolder<TraceScope> holder, final int responseStatus) {
if (holder == null) {
return;
}
final TraceScope traceScope = holder.getScope();
if (traceScope != null) {
Span span = traceScope.getSpan();
Scope scope = traceScope.getScope();
// in another thread and should be re-attached to the current one.
if (holder.isDetached()) {
scope = tracer.scopeManager().activate(span);
}
span.setTag(Tags.HTTP_STATUS.getKey(), responseStatus);
span.setTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT);
span.finish();
scope.close();
}
}
Aggregations