Search in sources :

Example 1 with Span

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);
}
Also used : HttpRequest(org.mockserver.model.HttpRequest) BasicHttpRequest(org.apache.http.message.BasicHttpRequest) Span(com.uber.jaeger.Span)

Example 2 with Span

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()));
}
Also used : URI(java.net.URI) Span(com.uber.jaeger.Span) Test(org.junit.Test) FilterIntegrationTest(com.uber.jaeger.propagation.FilterIntegrationTest)

Example 3 with Span

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());
}
Also used : Response(javax.ws.rs.core.Response) WebTarget(javax.ws.rs.client.WebTarget) Span(com.uber.jaeger.Span) Test(org.junit.Test)

Example 4 with Span

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());
}
Also used : SpanContext(com.uber.jaeger.SpanContext) Endpoint(com.twitter.zipkin.thriftjava.Endpoint) Tracer(com.uber.jaeger.Tracer) Span(com.uber.jaeger.Span)

Example 5 with Span

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);
}
Also used : Span(com.uber.jaeger.Span) Test(org.junit.Test)

Aggregations

Span (com.uber.jaeger.Span)34 Test (org.junit.Test)28 SpanContext (com.uber.jaeger.SpanContext)5 ArrayList (java.util.ArrayList)5 Response (javax.ws.rs.core.Response)5 BinaryAnnotation (com.twitter.zipkin.thriftjava.BinaryAnnotation)4 ObservedSpan (com.uber.jaeger.crossdock.api.ObservedSpan)4 TraceResponse (com.uber.jaeger.crossdock.api.TraceResponse)4 Annotation (com.twitter.zipkin.thriftjava.Annotation)3 Downstream (com.uber.jaeger.crossdock.api.Downstream)3 HashMap (java.util.HashMap)3 TreeMap (java.util.TreeMap)3 AutoExpandingBufferWriteTransport (org.apache.thrift.transport.AutoExpandingBufferWriteTransport)3 Tracer (com.uber.jaeger.Tracer)2 SenderException (com.uber.jaeger.exceptions.SenderException)2 FilterIntegrationTest (com.uber.jaeger.propagation.FilterIntegrationTest)2 Batch (com.uber.jaeger.thriftjava.Batch)2 Process (com.uber.jaeger.thriftjava.Process)2 TextMap (io.opentracing.propagation.TextMap)2 URI (java.net.URI)2