Search in sources :

Example 1 with Span

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");
}
Also used : SpanObserver(com.palantir.tracing.api.SpanObserver) Span(com.palantir.tracing.api.Span) Test(org.junit.jupiter.api.Test)

Example 2 with Span

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");
}
Also used : SpanObserver(com.palantir.tracing.api.SpanObserver) ByteArrayInputStream(java.io.ByteArrayInputStream) Span(com.palantir.tracing.api.Span) Test(org.junit.jupiter.api.Test)

Example 3 with Span

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");
}
Also used : Span(com.palantir.tracing.api.Span) Test(org.junit.Test)

Example 4 with Span

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"));
}
Also used : Span(com.palantir.tracing.api.Span) Test(org.junit.Test)

Example 5 with Span

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

Aggregations

Span (com.palantir.tracing.api.Span)39 Test (org.junit.Test)26 SpanObserver (com.palantir.tracing.api.SpanObserver)9 OpenSpan (com.palantir.tracing.api.OpenSpan)6 Test (org.junit.jupiter.api.Test)5 SpanType (com.palantir.tracing.api.SpanType)4 HttpURLConnection (java.net.HttpURLConnection)4 HttpString (io.undertow.util.HttpString)3 Path (java.nio.file.Path)3 List (java.util.List)3 Map (java.util.Map)3 Optional (java.util.Optional)3 SafeArg (com.palantir.logsafe.SafeArg)2 UnsafeArg (com.palantir.logsafe.UnsafeArg)2 SafeRuntimeException (com.palantir.logsafe.exceptions.SafeRuntimeException)2 SafeLogger (com.palantir.logsafe.logger.SafeLogger)2 SafeLoggerFactory (com.palantir.logsafe.logger.SafeLoggerFactory)2 DetachedSpan (com.palantir.tracing.DetachedSpan)2 InvocationContext (com.palantir.tritium.event.InvocationContext)2 ByteArrayInputStream (java.io.ByteArrayInputStream)2