use of com.palantir.tracing.api.Span in project conjure-java by palantir.
the class TracedEncodingTest method testSerializerOperationName.
@Test
public void testSerializerOperationName() throws IOException {
Tracer.setSampler(AlwaysSampler.INSTANCE);
Tracer.getAndClearTrace();
Encoding.Serializer<String> serializer = TracedEncoding.wrap(new StubEncoding()).serializer(new TypeMarker<String>() {
});
SpanObserver mockObserver = mock(SpanObserver.class);
Tracer.subscribe("test", mockObserver);
try {
serializer.serialize("value", ByteStreams.nullOutputStream());
} finally {
Tracer.unsubscribe("test");
}
ArgumentCaptor<Span> captor = ArgumentCaptor.forClass(Span.class);
verify(mockObserver).consume(captor.capture());
Span span = captor.getValue();
assertThat(span.getOperation()).isEqualTo("Undertow: serialize");
assertThat(span.getMetadata()).containsEntry("type", "String").containsEntry("contentType", "application/stub");
}
use of com.palantir.tracing.api.Span in project conjure-java by palantir.
the class TracedEncodingTest method testDeserializerOperationName.
@Test
public void testDeserializerOperationName() throws IOException {
Tracer.setSampler(AlwaysSampler.INSTANCE);
Tracer.getAndClearTrace();
Encoding.Deserializer<String> deserializer = TracedEncoding.wrap(new StubEncoding()).deserializer(new TypeMarker<String>() {
});
SpanObserver mockObserver = mock(SpanObserver.class);
Tracer.subscribe("test", mockObserver);
try {
deserializer.deserialize(new ByteArrayInputStream(new byte[0]));
} finally {
Tracer.unsubscribe("test");
}
ArgumentCaptor<Span> captor = ArgumentCaptor.forClass(Span.class);
verify(mockObserver).consume(captor.capture());
Span span = captor.getValue();
assertThat(span.getOperation()).isEqualTo("Undertow: deserialize");
assertThat(span.getMetadata()).containsEntry("type", "String").containsEntry("contentType", "application/stub");
}
use of com.palantir.tracing.api.Span in project tracing-java by palantir.
the class TracerTest method testDetached_metadata_translator.
@Test
public void testDetached_metadata_translator() {
assertThat(Tracer.hasTraceId()).isFalse();
Tracer.subscribe("1", observer1);
DetachedSpan detached = DetachedSpan.start("operation");
detached.complete(new TagTranslator<String>() {
@Override
public <T> void translate(TagAdapter<T> adapter, T target, String data) {
adapter.tag(target, "foo", data);
}
}, "bar");
Tracer.unsubscribe("1");
verify(observer1).consume(spanCaptor.capture());
Span span = spanCaptor.getValue();
assertThat(span.getMetadata()).containsEntry("foo", "bar");
}
use of com.palantir.tracing.api.Span in project tracing-java by palantir.
the class TracerTest method testMetadataNullIgnored.
@Test
public void testMetadataNullIgnored() {
Tracer.subscribe("1", observer1);
try {
Tracer.fastStartSpan("operation");
Tracer.fastCompleteSpan(new TagTranslator<String>() {
@Override
public <T> void translate(TagAdapter<T> adapter, T target, String _data) {
adapter.tag(target, "foo", null);
adapter.tag(target, null, "bar");
adapter.tag(target, "baz", "bang");
}
}, "str");
} finally {
Tracer.unsubscribe("1");
}
verify(observer1).consume(spanCaptor.capture());
Span span = spanCaptor.getValue();
assertThat(span.getOperation()).isEqualTo("operation");
assertThat(span.getMetadata()).containsExactlyInAnyOrderEntriesOf(ImmutableMap.of("baz", "bang"));
}
use of com.palantir.tracing.api.Span in project tracing-java by palantir.
the class TracerTest method testSubscribeUnsubscribe.
@Test
public void testSubscribeUnsubscribe() throws Exception {
// no error when completing span without a registered subscriber
startAndCompleteSpan();
Tracer.subscribe("1", observer1);
Tracer.subscribe("2", observer2);
Span span = startAndCompleteSpan();
verify(observer1).consume(span);
verify(observer2).consume(span);
verifyNoMoreInteractions(observer1, observer2);
assertThat(Tracer.unsubscribe("1")).isEqualTo(observer1);
span = startAndCompleteSpan();
verify(observer2).consume(span);
verifyNoMoreInteractions(observer1, observer2);
assertThat(Tracer.unsubscribe("2")).isEqualTo(observer2);
startAndCompleteSpan();
verifyNoMoreInteractions(observer1, observer2);
}
Aggregations