package org.stagemonitor.tracing; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.module.SimpleSerializers; import com.fasterxml.jackson.databind.ser.std.StdSerializer; import org.stagemonitor.core.util.JsonUtils; import java.io.IOException; import java.util.Collections; import io.opentracing.Span; import io.opentracing.SpanContext; import io.opentracing.Tracer; import io.opentracing.propagation.Format; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; /** * @deprecated use {@link io.opentracing.mock.MockTracer} */ @Deprecated public class MockTracer implements Tracer { static { JsonUtils.getMapper().registerModule(new Module() { @Override public String getModuleName() { return "stagemonitor-noop-spans"; } @Override public Version version() { return new Version(1, 0, 0, "", "org.stagemonitor", "stagemonitor-requestmonitor"); } @Override public void setupModule(final SetupContext context) { context.addSerializers(new SimpleSerializers(Collections.<JsonSerializer<?>>singletonList(new StdSerializer<NoopSpan>(NoopSpan.class) { @Override public void serialize(NoopSpan value, JsonGenerator gen, SerializerProvider provider) throws IOException { } }))); } }); } @Override public SpanBuilder buildSpan(String operationName) { final SpanBuilder spanBuilder = mock(SpanBuilder.class); final Span mockSpan = spy(NoopSpan.INSTANCE); when(spanBuilder.start()).thenReturn(mockSpan); when(spanBuilder.asChildOf(any(SpanContext.class))).thenReturn(spanBuilder); when(spanBuilder.asChildOf(any(Span.class))).thenReturn(spanBuilder); when(spanBuilder.withStartTimestamp(anyLong())).thenReturn(spanBuilder); when(spanBuilder.withTag(any(), anyString())) .then(invocation -> { mockSpan.setTag(invocation.getArgument(0), invocation.<String>getArgument(1)); return spanBuilder; }); when(spanBuilder.withTag(any(), any(Number.class))) .then(invocation -> { mockSpan.setTag(invocation.getArgument(0), invocation.<Number>getArgument(1)); return spanBuilder; }); when(spanBuilder.withTag(any(), anyBoolean())) .then(invocation -> { mockSpan.setTag(invocation.getArgument(0), invocation.<Boolean>getArgument(1)); return spanBuilder; }); return spanBuilder; } @Override public <C> void inject(SpanContext spanContext, Format<C> format, C carrier) { } @Override public <C> SpanContext extract(Format<C> format, C carrier) { return mock(SpanContext.class); } }