use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.
the class JaegerRequestAndResponseInterceptorIntegrationTest method verifyTracing.
private void verifyTracing(Span parentSpan) {
// Assert that traces are correctly emitted by the client
List<Span> spans = reporter.getSpans();
assertEquals(2, spans.size());
Span span = spans.get(1);
assertEquals("GET", span.getOperationName());
assertEquals(parentSpan.context().getSpanId(), span.context().getParentId());
// Assert traces and baggage are propagated correctly to server
HttpRequest[] httpRequests = mockServerClient.retrieveRecordedRequests(null);
assertEquals(1, httpRequests.length);
String traceData = httpRequests[0].getFirstHeader("uber-trace-id");
String[] split = traceData.split("%3A");
assertEquals(Long.toHexString(span.context().getTraceId()), split[0]);
assertEquals(Long.toHexString(span.context().getSpanId()), split[1]);
String baggage = httpRequests[0].getFirstHeader("uberctx-" + BAGGAGE_KEY);
assertEquals(BAGGAGE_VALUE, baggage);
}
use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.
the class ClientFilterTest method testFilter.
@Test
public void testFilter() throws Exception {
String method = "GET";
when(clientRequestContext.getMethod()).thenReturn(method);
when(clientRequestContext.getUri()).thenReturn(new URI("http://localhost/path"));
when(clientResponseContext.getStatus()).thenReturn(200);
undertest.filter(clientRequestContext);
assertNull(clientRequestContext.getProperty(CURRENT_SPAN_CONTEXT_KEY));
ArgumentCaptor<String> stringCaptor = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<Object> objectCaptor = ArgumentCaptor.forClass(Object.class);
Mockito.verify(clientRequestContext).setProperty(stringCaptor.capture(), objectCaptor.capture());
when(clientRequestContext.getProperty(stringCaptor.getValue())).thenReturn(objectCaptor.getValue());
undertest.filter(clientRequestContext, clientResponseContext);
assertNotNull(clientRequestContext.getProperty(CURRENT_SPAN_CONTEXT_KEY));
List<Span> spans = reporter.getSpans();
Map<String, Object> tags = spans.get(0).getTags();
assertEquals(200, tags.get(Tags.HTTP_STATUS.getKey()));
assertEquals("localhost", tags.get(Tags.PEER_HOSTNAME.getKey()));
assertEquals("http://localhost/path", tags.get(Tags.HTTP_URL.getKey()));
}
use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.
the class FilterIntegrationTest method testJerseyClientReceivesSpan.
@Test
public void testJerseyClientReceivesSpan() throws Exception {
WebTarget target = client.target(server.BASE_URI).path("jersey").path("hop1");
Span span = (Span) tracer.buildSpan("root-span").startManual();
span.setBaggageItem(BAGGAGE_KEY, BAGGAGE_VALUE);
tracer.scopeManager().activate(span, false);
Response resp = target.request(MediaType.APPLICATION_JSON_TYPE).get();
String responseStr = resp.readEntity(String.class);
CallTreeNode callTree = mapper.readValue(responseStr, CallTreeNode.class);
String strContext = span.context().contextAsString();
String traceId = strContext.substring(0, strContext.indexOf(':'));
boolean isSampled = true;
assertEquals(6, reporter.getSpans().size());
assertTrue(callTree.validateTraceIds(traceId, isSampled));
assertEquals(3L, metricsReporter.counters.get("jaeger:traces.sampled=y.state=joined").longValue());
assertEquals(6L, metricsReporter.counters.get("jaeger:finished_spans").longValue());
assertEquals(1L, metricsReporter.counters.get("jaeger:traces.sampled=y.state=started").longValue());
assertEquals(7L, metricsReporter.counters.get("jaeger:started_spans.sampled=y").longValue());
}
use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.
the class ThriftSpanConverter method convertSpan.
public static com.twitter.zipkin.thriftjava.Span convertSpan(Span span) {
Tracer tracer = span.getTracer();
Endpoint host = new Endpoint(tracer.getIpv4(), (short) 0, tracer.getServiceName());
SpanContext context = span.context();
return new com.twitter.zipkin.thriftjava.Span(context.getTraceId(), span.getOperationName(), context.getSpanId(), buildAnnotations(span, host), buildBinaryAnnotations(span, host)).setParent_id(context.getParentId()).setDebug(context.isDebug()).setTimestamp(span.getStart()).setDuration(span.getDuration());
}
use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.
the class ThriftSpanConverterTest method testExpectedLocalComponentNameUsed.
@Test
public void testExpectedLocalComponentNameUsed() {
String expectedComponentName = "local-name";
Span span = (com.uber.jaeger.Span) tracer.buildSpan("operation-name").startManual();
Tags.COMPONENT.set(span, expectedComponentName);
com.twitter.zipkin.thriftjava.Span zipkinSpan = ThriftSpanConverter.convertSpan(span);
String actualComponent = new String(zipkinSpan.getBinary_annotations().get(3).getValue(), StandardCharsets.UTF_8);
assertEquals(expectedComponentName, actualComponent);
}
Aggregations