Search in sources :

Example 21 with Span

use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.

the class ThriftSpanConverterTest method testTracerTags.

@Test
@UseDataProvider("dataProviderTracerTags")
public void testTracerTags(SpanType spanType, Map<String, String> expectedTags) throws Exception {
    InMemoryReporter spanReporter = new InMemoryReporter();
    Tracer tracer = new Tracer.Builder("x", spanReporter, new ConstSampler(true)).withZipkinSharedRpcSpan().withTag("tag.str", "y").withTag("tag.bool", true).withTag("tag.num", 1).build();
    Span span = (Span) tracer.buildSpan("root").startManual();
    if (spanType == SpanType.CHILD) {
        span = (Span) tracer.buildSpan("child").asChildOf(span).startManual();
    } else if (spanType == SpanType.RPC_SERVER) {
        span = (Span) tracer.buildSpan("rpc-server").asChildOf(span).withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER).startManual();
    }
    com.twitter.zipkin.thriftjava.Span zipkinSpan = ThriftSpanConverter.convertSpan(span);
    List<BinaryAnnotation> annotations = zipkinSpan.getBinary_annotations();
    for (Map.Entry<String, String> entry : expectedTags.entrySet()) {
        String key = entry.getKey();
        Object expectedValue = entry.getValue();
        BinaryAnnotation anno = findBinaryAnnotation(annotations, key);
        if (expectedValue.equals(UNDEF)) {
            assertNull("Not expecting " + key + " for " + spanType, anno);
        } else if (expectedValue.equals(ANY)) {
            assertEquals(key, anno.getKey());
        } else {
            String actualValue = new String(anno.getValue(), StandardCharsets.UTF_8);
            assertEquals("Expecting " + key + " for " + spanType, expectedValue, actualValue);
        }
    }
}
Also used : InMemoryReporter(com.uber.jaeger.reporters.InMemoryReporter) Tracer(com.uber.jaeger.Tracer) Span(com.uber.jaeger.Span) BinaryAnnotation(com.twitter.zipkin.thriftjava.BinaryAnnotation) ConstSampler(com.uber.jaeger.samplers.ConstSampler) HashMap(java.util.HashMap) Map(java.util.Map) TextMap(io.opentracing.propagation.TextMap) TreeMap(java.util.TreeMap) Test(org.junit.Test) UseDataProvider(com.tngtech.java.junit.dataprovider.UseDataProvider)

Example 22 with Span

use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.

the class ThriftSpanConverterTest method testSpanDetectsIsServer.

@Test
public void testSpanDetectsIsServer() {
    Span span = (Span) tracer.buildSpan("test-service-operation").startManual();
    Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER);
    assertTrue(ThriftSpanConverter.isRpc(span));
    assertFalse(ThriftSpanConverter.isRpcClient(span));
}
Also used : Span(com.uber.jaeger.Span) Test(org.junit.Test)

Example 23 with Span

use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.

the class ThriftSpanConverterTest method testSpanKindClientCreatesAnnotations.

@Test
public void testSpanKindClientCreatesAnnotations() {
    Span span = (com.uber.jaeger.Span) tracer.buildSpan("operation-name").startManual();
    Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT);
    com.twitter.zipkin.thriftjava.Span zipkinSpan = ThriftSpanConverter.convertSpan(span);
    List<Annotation> annotations = zipkinSpan.getAnnotations();
    boolean clientReceiveFound = false;
    boolean clientSendFound = false;
    for (Annotation anno : annotations) {
        if (anno.getValue().equals(zipkincoreConstants.CLIENT_RECV)) {
            clientReceiveFound = true;
        }
        if (anno.getValue().equals(zipkincoreConstants.CLIENT_SEND)) {
            clientSendFound = true;
        }
    }
    assertTrue(clientReceiveFound);
    assertTrue(clientSendFound);
}
Also used : Span(com.uber.jaeger.Span) BinaryAnnotation(com.twitter.zipkin.thriftjava.BinaryAnnotation) Annotation(com.twitter.zipkin.thriftjava.Annotation) Test(org.junit.Test)

Example 24 with Span

use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.

the class ZipkinSenderTest method testAppendSpanWithLogs.

@Test
public void testAppendSpanWithLogs() throws Exception {
    Span span = (Span) tracer.buildSpan("span-with-logs").startManual();
    span.log("event");
    // use sorted map for consistent ordering in test
    Map<String, Object> fields = new TreeMap<String, Object>();
    fields.put("event", "structured data");
    fields.put("string", "something");
    fields.put("number", 42);
    fields.put("boolean", true);
    span.log(fields);
    sender.append(span);
    sender.flush();
    List<List<zipkin.Span>> traces = zipkinRule.getTraces();
    assertEquals(1, traces.size());
    assertEquals(1, traces.get(0).size());
    zipkin.Span zipkinSpan = traces.get(0).get(0);
    assertEquals(2, zipkinSpan.annotations.size());
    // ignore order by using set
    Set<String> annotationValues = new HashSet<String>();
    for (Annotation annotation : zipkinSpan.annotations) {
        annotationValues.add(annotation.value);
    }
    Set<String> expectedValues = new HashSet<String>();
    expectedValues.add("event");
    expectedValues.add("{\"boolean\":true,\"event\":\"structured data\",\"number\":42,\"string\":\"something\"}");
    assertEquals("zipkin span should contain matching annotations for span logs", expectedValues, annotationValues);
}
Also used : ArrayList(java.util.ArrayList) List(java.util.List) TreeMap(java.util.TreeMap) Span(com.uber.jaeger.Span) Annotation(zipkin.Annotation) BinaryAnnotation(zipkin.BinaryAnnotation) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 25 with Span

use of com.uber.jaeger.Span in project jaeger-client-java by jaegertracing.

the class ZipkinSenderTest method testAppendSpanTooLarge.

@Test
public void testAppendSpanTooLarge() throws Exception {
    Span jaegerSpan = (Span) tracer.buildSpan("raza").startManual();
    String msg = "";
    for (int i = 0; i < 1001; i++) {
        msg += ".";
    }
    jaegerSpan.log(msg);
    try {
        sender.append(jaegerSpan);
        fail("The line above shoud throw");
    } catch (SenderException e) {
        assertEquals(e.getDroppedSpanCount(), 1);
    }
}
Also used : SenderException(com.uber.jaeger.exceptions.SenderException) 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