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);
}
}
}
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));
}
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);
}
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);
}
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);
}
}
Aggregations