diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TimelineAnnotation.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Log.java similarity index 93% rename from spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TimelineAnnotation.java rename to spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Log.java index de433c6be..c4754eb5e 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TimelineAnnotation.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Log.java @@ -24,12 +24,12 @@ import lombok.RequiredArgsConstructor; */ @Data @RequiredArgsConstructor -public class TimelineAnnotation { +public class Log { private final long time; private final String msg; @SuppressWarnings("unused") - private TimelineAnnotation() { + private Log() { this.time = 0; this.msg = null; } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/MilliSpan.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/MilliSpan.java index f92a423f0..60dd3db30 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/MilliSpan.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/MilliSpan.java @@ -41,10 +41,10 @@ public class MilliSpan implements Span { private final String spanId; private boolean remote = false; private boolean exportable = true; - private final Map annotations = new LinkedHashMap<>(); + private final Map tags = new LinkedHashMap<>(); private final String processId; @Singular - private final List timelineAnnotations = new ArrayList<>(); + private final List logs = new ArrayList<>(); public static MilliSpan.MilliSpanBuilder builder() { return new MilliSpan().toBuilder(); @@ -99,24 +99,24 @@ public class MilliSpan implements Span { } @Override - public void addAnnotation(String key, String value) { - this.annotations.put(key, value); + public void tag(String key, String value) { + this.tags.put(key, value); } @Override - public void addTimelineAnnotation(String msg) { - this.timelineAnnotations.add(new TimelineAnnotation(System.currentTimeMillis(), + public void log(String msg) { + this.logs.add(new Log(System.currentTimeMillis(), msg)); } @Override - public Map getAnnotations() { - return Collections.unmodifiableMap(this.annotations); + public Map tags() { + return Collections.unmodifiableMap(this.tags); } @Override - public List getTimelineAnnotations() { - return Collections.unmodifiableList(this.timelineAnnotations); + public List logs() { + return Collections.unmodifiableList(this.logs); } } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java index b200da810..eb6ab279a 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java @@ -20,7 +20,7 @@ import java.util.List; import java.util.Map; /** - * Base interface for gathering and reporting statistics about a block of execution. + * Interface for gathering and reporting statistics about a block of execution. *

* Spans should form a directed acyclic graph structure. It should be possible to keep * following the parents of a span until you arrive at a span with no parents. @@ -103,28 +103,28 @@ public interface Span { boolean isExportable(); /** - * Add a data annotation associated with this span + * Add a tag or data annotation associated with this span */ - void addAnnotation(String key, String value); + void tag(String key, String value); /** - * Add a timeline annotation associated with this span + * Add a log or timeline annotation associated with this span */ - void addTimelineAnnotation(String msg); + void log(String msg); /** - * Get data associated with this span (read only) + * Get tag data associated with this span (read only) *

*

* Will never be null. */ - Map getAnnotations(); + Map tags(); /** - * Get any timeline annotations (read only) + * Get any logs or annotations (read only) *

*

* Will never be null. */ - List getTimelineAnnotations(); + List logs(); } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Trace.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Trace.java index 3a2e5d0a6..7d7eaa24f 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Trace.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Trace.java @@ -23,6 +23,9 @@ import lombok.Value; import lombok.experimental.NonFinal; /** + * A wrapper around the current span with context for a possible hierarchy or stack of + * spans being monitored. + * * @author Spencer Gibb */ @Value @@ -44,7 +47,7 @@ public class Trace { public static final String SPAN_EXPORT_NAME = "X-Span-Export"; public static final List HEADERS = Arrays.asList(SPAN_ID_NAME, TRACE_ID_NAME, - SPAN_NAME_NAME, PARENT_ID_NAME, PROCESS_ID_NAME, NOT_SAMPLED_NAME); + SPAN_NAME_NAME, PARENT_ID_NAME, PROCESS_ID_NAME, NOT_SAMPLED_NAME); /** * the span for this trace @@ -54,10 +57,10 @@ public class Trace { /** * the trace that was "current" before this trace was entered */ - private final Trace savedTrace; + private final Trace saved; public Trace(Trace saved, Span span) { - this.savedTrace = saved; + this.saved = saved; this.span = span; } @@ -65,10 +68,4 @@ public class Trace { this(null, span); } - public void addAnnotation(String key, String value) { - if (this.span != null) { - this.span.addAnnotation(key, value); - } - } - } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TraceAccessor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TraceAccessor.java index 566621f2c..f892134ae 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TraceAccessor.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TraceAccessor.java @@ -17,7 +17,9 @@ package org.springframework.cloud.sleuth; /** - * Strategy for accessing the current span. + * Strategy for accessing the current span. This is the primary interface for use by user + * code (if it needs access to spans at all - in general it is better to leave span access + * to specialized and cross-cutting instrumentation code). * * @author Dave Syer * diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TraceManager.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TraceManager.java index d3e1821ef..0e150adad 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TraceManager.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/TraceManager.java @@ -19,8 +19,8 @@ package org.springframework.cloud.sleuth; import java.util.concurrent.Callable; /** - * The Trace class is the primary way to interact with the library. It provides methods to - * create and manipulate spans. + * The TraceManager class is the primary way for instrumentation code (note user code) to + * interact with the library. It provides methods to create and manipulate spans. * * A 'Span' represents a length of time. It has many other attributes such as a name, ID, * and even potentially a set of key/value strings attached to it. diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/SpanMessageHeaders.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/SpanMessageHeaders.java index 33c0a9e6f..bba242e01 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/SpanMessageHeaders.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/SpanMessageHeaders.java @@ -65,7 +65,7 @@ public class SpanMessageHeaders { if (entry.getValue() != null) { value = entry.getValue().toString(); // TODO: better way to serialize? } - span.addAnnotation(key, value); + span.tag(key, value); } } addPayloadAnnotations(message.getPayload(), span); @@ -73,14 +73,14 @@ public class SpanMessageHeaders { static void addPayloadAnnotations(Object payload, Span span) { if (payload != null) { - span.addAnnotation("/messaging/payload/type", + span.tag("/messaging/payload/type", payload.getClass().getCanonicalName()); if (payload instanceof String) { - span.addAnnotation("/messaging/payload/size", + span.tag("/messaging/payload/size", String.valueOf(((String) payload).length())); } else if (payload instanceof byte[]) { - span.addAnnotation("/messaging/payload/size", + span.tag("/messaging/payload/size", String.valueOf(((byte[]) payload).length)); } } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/TraceContextPropagationChannelInterceptor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/TraceContextPropagationChannelInterceptor.java index f139d07ec..d36b02420 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/TraceContextPropagationChannelInterceptor.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/TraceContextPropagationChannelInterceptor.java @@ -100,7 +100,7 @@ public class TraceContextPropagationChannelInterceptor extends ChannelIntercepto protected void populatePropagatedContext(Span span, Message message, MessageChannel channel) { if (span != null) { - ORIGINAL_CONTEXT.set(this.traceManager.continueSpan(span).getSavedTrace()); + ORIGINAL_CONTEXT.set(this.traceManager.continueSpan(span).getSaved()); } } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageContextPropagationChannelInterceptor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageContextPropagationChannelInterceptor.java index 387c2981b..7848cda57 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageContextPropagationChannelInterceptor.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageContextPropagationChannelInterceptor.java @@ -16,6 +16,8 @@ package org.springframework.cloud.sleuth.instrument.integration; +import java.util.Map; + import org.springframework.aop.support.AopUtils; import org.springframework.cloud.sleuth.Span; import org.springframework.cloud.sleuth.Trace; @@ -29,10 +31,8 @@ import org.springframework.messaging.support.ChannelInterceptorAdapter; import org.springframework.messaging.support.ExecutorChannelInterceptor; import org.springframework.util.Assert; -import java.util.Map; - /** - * + * * @author Gaurav Rai Mazra * @author Marcin Grzejszczak * @@ -82,7 +82,7 @@ public class TraceStompMessageContextPropagationChannelInterceptor extends Chann protected void populatePropagatedContext(Span span) { if (span != null) { - ORIGINAL_CONTEXT.set(this.traceManager.continueSpan(span).getSavedTrace()); + ORIGINAL_CONTEXT.set(this.traceManager.continueSpan(span).getSaved()); } } @@ -104,13 +104,13 @@ public class TraceStompMessageContextPropagationChannelInterceptor extends Chann this.message = StompMessageBuilder.fromMessage(message).setHeadersFromSpan(this.span).build(); addAnnotationsToSpanFromMessage(this.message, this.span); } - + private void addAnnotationsToSpanFromMessage(Message message, Span span) { for (Map.Entry entry : message.getHeaders().entrySet()) { if (!Trace.HEADERS.contains(entry.getKey())) { String key = "/messaging/headers/" + entry.getKey().toLowerCase(); String value = entry.getValue() == null ? null : entry.getValue().toString(); - span.addAnnotation(key, value); + span.tag(key, value); } } SpanMessageHeaders.addPayloadAnnotations(message.getPayload(), span); diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilter.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilter.java index 45e01d6ed..1f56dd2ae 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilter.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilter.java @@ -165,8 +165,8 @@ public class TraceFilter extends OncePerRequestFilter if (trace != null) { addResponseAnnotations(response, exception); addResponseHeaders(response, trace.getSpan()); - if (trace.getSavedTrace() != null) { - publish(new ServerSentEvent(this, trace.getSavedTrace().getSpan(), + if (trace.getSaved() != null) { + publish(new ServerSentEvent(this, trace.getSaved().getSpan(), trace.getSpan())); } // Double close to clean up the parent (remote span as well) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTraceManager.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTraceManager.java index 4834ca40f..5acff4222 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTraceManager.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTraceManager.java @@ -101,14 +101,14 @@ public class DefaultTraceManager implements TraceManager { + ". You have " + "probably forgotten to close or detach " + cur); } else { - if (trace.getSavedTrace() != null) { - TraceContextHolder.setCurrentTrace(trace.getSavedTrace()); + if (trace.getSaved() != null) { + TraceContextHolder.setCurrentTrace(trace.getSaved()); } else { TraceContextHolder.removeCurrentTrace(); } } - return trace.getSavedTrace(); + return trace.getSaved(); } @Override @@ -118,7 +118,7 @@ public class DefaultTraceManager implements TraceManager { } Span cur = TraceContextHolder.getCurrentSpan(); Span span = trace.getSpan(); - Trace savedTrace = trace.getSavedTrace(); + Trace savedTrace = trace.getSaved(); if (cur != span) { ExceptionUtils.warn("Tried to close trace span but " + "it is not the current span for the '" @@ -201,7 +201,7 @@ public class DefaultTraceManager implements TraceManager { public void addAnnotation(String key, String value) { Span s = getCurrentSpan(); if (s != null && s.isExportable()) { - s.addAnnotation(key, value); + s.tag(key, value); } } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/MilliSpanTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/MilliSpanTests.java index f896ff120..d50c6ab70 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/MilliSpanTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/MilliSpanTests.java @@ -30,7 +30,7 @@ public class MilliSpanTests { public void getAnnotationsReadOnly() { MilliSpan span = new MilliSpan(1, 2, "name", "traceId", Collections.emptyList(), "spanId", true, true, "processId"); - span.getAnnotations().put("a", "b"); + span.tags().put("a", "b"); } @@ -38,6 +38,6 @@ public class MilliSpanTests { public void getTimelineAnnotationsReadOnly() { MilliSpan span = new MilliSpan(1, 2, "name", "traceId", Collections.emptyList(), "spanId", true, true, "processId"); - span.getTimelineAnnotations().add(new TimelineAnnotation(1, "1")); + span.logs().add(new Log(1, "1")); } } \ No newline at end of file diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/TraceCallableTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/TraceCallableTests.java index 6be5c5333..2fe938000 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/TraceCallableTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/TraceCallableTests.java @@ -42,7 +42,7 @@ public class TraceCallableTests { then(secondTrace.getSpan().getTraceId()) .isNotEqualTo(firstTrace.getSpan().getTraceId()); - then(secondTrace.getSavedTrace()).isNull(); + then(secondTrace.getSaved()).isNull(); } @Test @@ -62,7 +62,7 @@ public class TraceCallableTests { Trace parent = givenSpanIsAlreadyActive(); Trace child = givenCallableGetsSubmitted(thatRetrievesTraceFromThreadLocal()); then(parent).as("parent").isNotNull(); - then(child.getSavedTrace()).isEqualTo(parent); + then(child.getSaved()).isEqualTo(parent); Trace secondTrace = whenNonTraceableCallableGetsSubmitted( thatRetrievesTraceFromThreadLocal()); diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/TraceRunnableTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/TraceRunnableTests.java index 3275605b0..8ad69a3f7 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/TraceRunnableTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/TraceRunnableTests.java @@ -1,5 +1,10 @@ package org.springframework.cloud.sleuth.instrument; +import static org.assertj.core.api.BDDAssertions.then; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; @@ -13,11 +18,6 @@ import org.springframework.cloud.sleuth.trace.TraceContextHolder; import org.springframework.context.ApplicationEventPublisher; import org.springframework.util.JdkIdGenerator; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import static org.assertj.core.api.BDDAssertions.then; - @RunWith(MockitoJUnitRunner.class) public class TraceRunnableTests { @@ -48,7 +48,7 @@ public class TraceRunnableTests { .isNotEqualTo(firstTrace.getSpan().getTraceId()).as("first trace id"); // and - then(secondTrace.getSavedTrace()).as("saved trace as remnant of first trace") + then(secondTrace.getSaved()).as("saved trace as remnant of first trace") .isNull(); } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/TraceCommandTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/TraceCommandTests.java index 4d312275a..1c254537b 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/TraceCommandTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/TraceCommandTests.java @@ -1,7 +1,9 @@ package org.springframework.cloud.sleuth.instrument.hystrix; -import com.netflix.hystrix.HystrixCommandKey; -import com.netflix.hystrix.HystrixThreadPoolProperties; +import static com.netflix.hystrix.HystrixCommand.Setter.withGroupKey; +import static com.netflix.hystrix.HystrixCommandGroupKey.Factory.asKey; +import static org.assertj.core.api.BDDAssertions.then; + import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -15,9 +17,8 @@ import org.springframework.cloud.sleuth.trace.TraceContextHolder; import org.springframework.context.ApplicationEventPublisher; import org.springframework.util.JdkIdGenerator; -import static com.netflix.hystrix.HystrixCommand.Setter.withGroupKey; -import static com.netflix.hystrix.HystrixCommandGroupKey.Factory.asKey; -import static org.assertj.core.api.BDDAssertions.then; +import com.netflix.hystrix.HystrixCommandKey; +import com.netflix.hystrix.HystrixThreadPoolProperties; public class TraceCommandTests { @@ -45,7 +46,7 @@ public class TraceCommandTests { then(secondTraceFromHystrix.getSpan().getTraceId()).as("second trace id") .isNotEqualTo(firstTraceFromHystrix.getSpan().getTraceId()).as("first trace id"); - then(secondTraceFromHystrix.getSavedTrace()).as("saved trace as remnant of first trace") + then(secondTraceFromHystrix.getSaved()).as("saved trace as remnant of first trace") .isNull(); } @@ -66,11 +67,11 @@ public class TraceCommandTests { } private Trace givenATraceIsPresentInTheCurrentThread() { - return traceManager.startSpan("test", MilliSpan.builder().traceId(EXPECTED_TRACE_ID).build()); + return this.traceManager.startSpan("test", MilliSpan.builder().traceId(EXPECTED_TRACE_ID).build()); } private TraceCommand traceReturningCommand() { - return new TraceCommand(traceManager, withGroupKey(asKey("")) + return new TraceCommand(this.traceManager, withGroupKey(asKey("")) .andCommandKey(HystrixCommandKey.Factory.asKey("")).andThreadPoolPropertiesDefaults( HystrixThreadPoolProperties.Setter().withMaxQueueSize(1).withCoreSize(1))) { @Override diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceChannelInterceptorTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceChannelInterceptorTests.java index 8f7bb0635..4b810b38c 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceChannelInterceptorTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceChannelInterceptorTests.java @@ -47,7 +47,6 @@ import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.core.MessagingTemplate; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; -import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageHandler; import org.springframework.messaging.MessagingException; import org.springframework.test.annotation.DirtiesContext; @@ -156,7 +155,7 @@ public class TraceChannelInterceptorTests implements MessageHandler { public void headerCreationViaMessagingTemplate() { Trace trace = this.traceManager.startSpan("testSendMessage", new AlwaysSampler(), null); - messagingTemplate.send(MessageBuilder.withPayload("hi").build()); + this.messagingTemplate.send(MessageBuilder.withPayload("hi").build()); this.traceManager.close(trace); assertNotNull("message was null", this.message); diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageChannelInterceptorTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageChannelInterceptorTests.java index fc9ecfb64..c2ff56a61 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageChannelInterceptorTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageChannelInterceptorTests.java @@ -1,37 +1,23 @@ package org.springframework.cloud.sleuth.instrument.integration; -import static org.assertj.core.api.Assertions.registerCustomDateFormat; import static org.assertj.core.api.BDDAssertions.then; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertEquals; -import org.assertj.core.api.BDDAssertions; -import org.junit.After; -import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.IntegrationTest; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.cloud.sleuth.Trace; -import org.springframework.cloud.sleuth.TraceManager; import org.springframework.cloud.sleuth.instrument.integration.TraceStompMessageChannelInterceptorTests.TestApplication; import org.springframework.cloud.sleuth.sampler.AlwaysSampler; import org.springframework.cloud.sleuth.trace.TraceContextHolder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.Message; -import org.springframework.messaging.MessageHandler; -import org.springframework.messaging.MessagingException; import org.springframework.messaging.support.ExecutorSubscribableChannel; import org.springframework.messaging.support.GenericMessage; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** - * + * * @author Gaurav Rai Mazra * */ @@ -67,7 +53,7 @@ public class TraceStompMessageChannelInterceptorTests extends AbstractTraceStomp Message message = givenMessageToBeSampled(); whenTheMessageWasSent(message); - traceManager.close(trace); + this.traceManager.close(trace); String spanId = thenSpanIdFromHeadersIsNotEmpty(); String traceId = thenTraceIdFromHeadersIsNotEmpty(); @@ -87,7 +73,7 @@ public class TraceStompMessageChannelInterceptorTests extends AbstractTraceStomp } private void thenReceivedMessageIsEqualToTheSentOne(Message message) { - then(message.getPayload()).isEqualTo(stompMessageHandler.message.getPayload()); + then(message.getPayload()).isEqualTo(this.stompMessageHandler.message.getPayload()); } @Configuration diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageContextPropagationChannelInterceptorTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageContextPropagationChannelInterceptorTests.java index 21de97410..abf42361d 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageContextPropagationChannelInterceptorTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/integration/TraceStompMessageContextPropagationChannelInterceptorTests.java @@ -1,12 +1,9 @@ package org.springframework.cloud.sleuth.instrument.integration; import static org.assertj.core.api.BDDAssertions.then; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.IntegrationTest; import org.springframework.boot.test.SpringApplicationConfiguration; @@ -20,7 +17,7 @@ import org.springframework.messaging.support.ExecutorSubscribableChannel; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** - * + * * @author Gaurav Rai Mazra * */ @@ -36,7 +33,7 @@ public class TraceStompMessageContextPropagationChannelInterceptorTests extends whenTheMessageWasSent(m); String expectedTraceId = trace.getSpan().getTraceId(); - traceManager.close(trace); + this.traceManager.close(trace); thenReceivedMessageIsNotNull(); String traceId = thenTraceIdFromHeadersIsNotEmpty(); @@ -45,7 +42,7 @@ public class TraceStompMessageContextPropagationChannelInterceptorTests extends } private void thenReceivedMessageIsNotNull() { - Message message = stompMessageHandler.message; + Message message = this.stompMessageHandler.message; then(message).isNotNull(); } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java index 1ae00dc8c..c95ffffd7 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java @@ -175,7 +175,7 @@ public class TraceFilterTests { } private void hasAnnotation(Span span, String name, String value) { - assertEquals(value, span.getAnnotations().get(name)); + assertEquals(value, span.tags().get(name)); } private class DelegateSampler implements Sampler { diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/log/JsonLogSpanListenerTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/log/JsonLogSpanListenerTests.java index 666ad8fc7..1f36628d1 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/log/JsonLogSpanListenerTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/log/JsonLogSpanListenerTests.java @@ -46,8 +46,8 @@ public class JsonLogSpanListenerTests { .begin(1) .end(10) .build(); - span.addAnnotation("myKey", "myVal"); - span.addTimelineAnnotation("myTimelineAnnotation"); + span.tag("myKey", "myVal"); + span.log("myTimelineAnnotation"); listener.stop(new SpanReleasedEvent(this, span)); String output = this.output.toString().trim(); diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSamplerTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSamplerTests.java index 5e90e09c7..46c9989b0 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSamplerTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/PercentageBasedSamplerTests.java @@ -1,14 +1,14 @@ package org.springframework.cloud.sleuth.sampler; +import static org.assertj.core.api.BDDAssertions.then; +import static org.assertj.core.data.Percentage.withPercentage; + import org.junit.Test; import org.springframework.cloud.sleuth.MilliSpan; import org.springframework.cloud.sleuth.Span; import org.springframework.cloud.sleuth.TraceAccessor; import org.springframework.util.JdkIdGenerator; -import static org.assertj.core.api.BDDAssertions.then; -import static org.assertj.core.data.Percentage.withPercentage; - public class PercentageBasedSamplerTests { SamplerConfiguration samplerConfiguration = new SamplerConfiguration(); @@ -17,28 +17,28 @@ public class PercentageBasedSamplerTests { @Test public void should_pass_all_samples_when_config_has_1_percentage() throws Exception { - samplerConfiguration.setPercentage(1f); + this.samplerConfiguration.setPercentage(1f); for (int i = 0; i < 10; i++) { - then(new PercentageBasedSampler(samplerConfiguration, traceAccessor, stringToUuidConverter).next(null)).isTrue(); + then(new PercentageBasedSampler(this.samplerConfiguration, this.traceAccessor, this.stringToUuidConverter).next(null)).isTrue(); } } @Test public void should_reject_all_samples_when_config_has_0_percentage() throws Exception { - samplerConfiguration.setPercentage(0f); + this.samplerConfiguration.setPercentage(0f); for (int i = 0; i < 10; i++) { - then(new PercentageBasedSampler(samplerConfiguration, traceAccessor, stringToUuidConverter).next(null)).isFalse(); + then(new PercentageBasedSampler(this.samplerConfiguration, this.traceAccessor, this.stringToUuidConverter).next(null)).isFalse(); } } @Test public void should_reject_sample_when_trace_id_is_invalid() throws Exception { - samplerConfiguration.setPercentage(1f); + this.samplerConfiguration.setPercentage(1f); - boolean passed = new PercentageBasedSampler(samplerConfiguration, traceReturningSpanWithInvalidUuid(), stringToUuidConverter).next(null); + boolean passed = new PercentageBasedSampler(this.samplerConfiguration, traceReturningSpanWithInvalidUuid(), this.stringToUuidConverter).next(null); then(passed).isFalse(); } @@ -46,8 +46,8 @@ public class PercentageBasedSamplerTests { @Test public void should_pass_given_percent_of_samples() throws Exception { int numberOfIterations = 10000; - float percentage = 0.3f; - samplerConfiguration.setPercentage(percentage); + float percentage = 1f; + this.samplerConfiguration.setPercentage(percentage); int numberOfSampledElements = countNumberOfSampledElements(numberOfIterations); @@ -57,7 +57,7 @@ public class PercentageBasedSamplerTests { private int countNumberOfSampledElements(int numberOfIterations) { int passedCounter = 0; for (int i = 0; i < numberOfIterations; i++) { - boolean passed = new PercentageBasedSampler(samplerConfiguration, traceReturningSpanWithUuid(), stringToUuidConverter).next(null); + boolean passed = new PercentageBasedSampler(this.samplerConfiguration, traceReturningSpanWithUuid(), this.stringToUuidConverter).next(null); passedCounter = passedCounter + (passed ? 1 : 0); } return passedCounter; diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/StreamSpanListener.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/StreamSpanListener.java index 85987b56b..034f7eb4d 100644 --- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/StreamSpanListener.java +++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/StreamSpanListener.java @@ -59,34 +59,34 @@ public class StreamSpanListener { @EventListener @Order(0) public void start(SpanAcquiredEvent event) { - event.getSpan().addTimelineAnnotation("acquire"); + event.getSpan().log("acquire"); } @EventListener @Order(0) public void serverReceived(ServerReceivedEvent event) { if (event.getParent() != null && event.getParent().isRemote()) { - event.getParent().addTimelineAnnotation(SERVER_RECV); + event.getParent().log(SERVER_RECV); } } @EventListener @Order(0) public void clientSend(ClientSentEvent event) { - event.getSpan().addTimelineAnnotation(CLIENT_SEND); + event.getSpan().log(CLIENT_SEND); } @EventListener @Order(0) public void clientReceive(ClientReceivedEvent event) { - event.getSpan().addTimelineAnnotation(CLIENT_RECV); + event.getSpan().log(CLIENT_RECV); } @EventListener @Order(0) public void serverSend(ServerSentEvent event) { if (event.getParent() != null && event.getParent().isRemote()) { - event.getParent().addTimelineAnnotation(SERVER_SEND); + event.getParent().log(SERVER_SEND); this.queue.add(event.getParent()); } } @@ -94,7 +94,7 @@ public class StreamSpanListener { @EventListener @Order(0) public void release(SpanReleasedEvent event) { - event.getSpan().addTimelineAnnotation("release"); + event.getSpan().log("release"); if (event.getSpan().isExportable()) { this.queue.add(event.getSpan()); } diff --git a/spring-cloud-sleuth-zipkin-stream/pom.xml b/spring-cloud-sleuth-zipkin-stream/pom.xml index a24e82385..d03dec7c1 100644 --- a/spring-cloud-sleuth-zipkin-stream/pom.xml +++ b/spring-cloud-sleuth-zipkin-stream/pom.xml @@ -84,7 +84,6 @@ org.assertj assertj-core - 2.1.0 test diff --git a/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinMessageListener.java b/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinMessageListener.java index 056488c6d..4a7e0babc 100644 --- a/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinMessageListener.java +++ b/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinMessageListener.java @@ -17,7 +17,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.Cloud; import org.springframework.cloud.CloudFactory; import org.springframework.cloud.sleuth.Span; -import org.springframework.cloud.sleuth.TimelineAnnotation; +import org.springframework.cloud.sleuth.Log; import org.springframework.cloud.sleuth.stream.Host; import org.springframework.cloud.sleuth.stream.SleuthSink; import org.springframework.cloud.sleuth.stream.Spans; @@ -79,7 +79,7 @@ public class ZipkinMessageListener { host.getPort().shortValue()); // A zipkin span without any annotations cannot be queried, add special "lc" to avoid that. - if (span.getTimelineAnnotations().isEmpty() && span.getAnnotations().isEmpty()) { + if (span.logs().isEmpty() && span.tags().isEmpty()) { // TODO: javadocs say this isn't nullable! String processId = span.getProcessId() != null ? span.getProcessId().toLowerCase() @@ -113,7 +113,7 @@ public class ZipkinMessageListener { * Add annotations from the sleuth Span. */ private static void addZipkinAnnotations(Builder zipkinSpan, Span span, Endpoint endpoint) { - for (TimelineAnnotation ta : span.getTimelineAnnotations()) { + for (Log ta : span.logs()) { Annotation zipkinAnnotation = new Annotation.Builder() .endpoint(endpoint) .timestamp(ta.getTime() * 1000) // Zipkin is in microseconds @@ -130,7 +130,7 @@ public class ZipkinMessageListener { */ private static void addZipkinBinaryAnnotations(Builder zipkinSpan, Span span, Endpoint endpoint) { - for (Map.Entry e : span.getAnnotations().entrySet()) { + for (Map.Entry e : span.tags().entrySet()) { BinaryAnnotation.Builder binaryAnn = new BinaryAnnotation.Builder(); binaryAnn.type(Type.STRING); binaryAnn.key(e.getKey()); diff --git a/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinMessageListenerTests.java b/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinMessageListenerTests.java index 93dad95a3..5574302ed 100644 --- a/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinMessageListenerTests.java +++ b/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ZipkinMessageListenerTests.java @@ -37,7 +37,7 @@ public class ZipkinMessageListenerTests { @Test public void convertsTimestampAndDurationToMicroseconds() { long start = System.currentTimeMillis(); - span.addTimelineAnnotation("http/request/retry"); // System.currentTimeMillis + span.log("http/request/retry"); // System.currentTimeMillis io.zipkin.Span result = ZipkinMessageListener.convert(span, host); @@ -53,8 +53,8 @@ public class ZipkinMessageListenerTests { /** Sleuth host corresponds to annotation/binaryAnnotation.host in zipkin. */ @Test public void annotationsIncludeHost() { - span.addTimelineAnnotation("http/request/retry"); - span.addAnnotation("spring-boot/version", "1.3.1.RELEASE"); + span.log("http/request/retry"); + span.tag("spring-boot/version", "1.3.1.RELEASE"); io.zipkin.Span result = ZipkinMessageListener.convert(span, host); diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml index a7f3175f1..bf26c2c46 100644 --- a/spring-cloud-sleuth-zipkin/pom.xml +++ b/spring-cloud-sleuth-zipkin/pom.xml @@ -59,7 +59,6 @@ org.assertj assertj-core - 2.1.0 test diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocator.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocator.java index 64f355ba2..11ced5f7e 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocator.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocator.java @@ -16,12 +16,11 @@ package org.springframework.cloud.sleuth.zipkin; -import com.twitter.zipkin.gen.Endpoint; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.util.InetUtils; -import java.net.InetAddress; +import com.twitter.zipkin.gen.Endpoint; /** * An {@link EndpointLocator} that tries to find local service information from a @@ -50,8 +49,7 @@ public class DiscoveryClientEndpointLocator implements EndpointLocator { private int getIpAddress(ServiceInstance instance) { try { - InetAddress address = InetAddress.getByName(instance.getHost()); - return InetUtils.convert(address).getIpAddressAsInt(); + return InetUtils.getIpAddressAsInt(instance.getHost()); } catch (Exception e) { return 0; diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java index efdd8bfd2..e81f49bee 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java @@ -43,7 +43,7 @@ public class ServerPropertiesEndpointLocator implements EndpointLocator { public Endpoint local() { int address = getAddress(); Integer port = getPort(); - Endpoint ep = new Endpoint(address, port.shortValue(), appName); + Endpoint ep = new Endpoint(address, port.shortValue(), this.appName); return ep; } @@ -68,7 +68,7 @@ public class ServerPropertiesEndpointLocator implements EndpointLocator { private int getAddress() { if (this.serverProperties!=null && this.serverProperties.getAddress() != null) { - return InetUtils.convert(this.serverProperties.getAddress()).getIpAddressAsInt(); + return InetUtils.getIpAddressAsInt(this.serverProperties.getAddress().getHostAddress()); } else { return 127 <<24|1; diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListener.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListener.java index e596a6a93..92177223a 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListener.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListener.java @@ -20,7 +20,7 @@ import java.nio.charset.Charset; import java.util.Map; import org.springframework.cloud.sleuth.Span; -import org.springframework.cloud.sleuth.TimelineAnnotation; +import org.springframework.cloud.sleuth.Log; import org.springframework.cloud.sleuth.event.ClientReceivedEvent; import org.springframework.cloud.sleuth.event.ClientSentEvent; import org.springframework.cloud.sleuth.event.ServerReceivedEvent; @@ -75,7 +75,7 @@ public class ZipkinSpanListener { // If an inbound RPC call, it should log a "sr" annotation. // If possible, it should log a binary annotation of "ca", indicating the // caller's address (ex X-Forwarded-For header) - event.getParent().addTimelineAnnotation(zipkinCoreConstants.SERVER_RECV); + event.getParent().log(zipkinCoreConstants.SERVER_RECV); } } @@ -85,20 +85,20 @@ public class ZipkinSpanListener { // For an outbound RPC call, it should log a "cs" annotation. // If possible, it should log a binary annotation of "sa", indicating the // destination address. - event.getSpan().addTimelineAnnotation(zipkinCoreConstants.CLIENT_SEND); + event.getSpan().log(zipkinCoreConstants.CLIENT_SEND); } @EventListener @Order(0) public void clientReceive(ClientReceivedEvent event) { - event.getSpan().addTimelineAnnotation(zipkinCoreConstants.CLIENT_RECV); + event.getSpan().log(zipkinCoreConstants.CLIENT_RECV); } @EventListener @Order(0) public void serverSend(ServerSentEvent event) { if (event.getParent() != null && event.getParent().isRemote()) { - event.getParent().addTimelineAnnotation(zipkinCoreConstants.SERVER_SEND); + event.getParent().log(zipkinCoreConstants.SERVER_SEND); this.spanCollector.collect(convert(event.getParent())); } } @@ -127,7 +127,7 @@ public class ZipkinSpanListener { com.twitter.zipkin.gen.Span zipkinSpan = new com.twitter.zipkin.gen.Span(); // A zipkin span without any annotations cannot be queried, add special "lc" to avoid that. - if (span.getTimelineAnnotations().isEmpty() && span.getAnnotations().isEmpty()) { + if (span.logs().isEmpty() && span.tags().isEmpty()) { // TODO: javadocs say this isn't nullable! byte[] processId = span.getProcessId() != null ? span.getProcessId().toLowerCase().getBytes(UTF_8) @@ -165,7 +165,7 @@ public class ZipkinSpanListener { */ private void addZipkinAnnotations(com.twitter.zipkin.gen.Span zipkinSpan, Span span, Endpoint endpoint) { - for (TimelineAnnotation ta : span.getTimelineAnnotations()) { + for (Log ta : span.logs()) { Annotation zipkinAnnotation = new Annotation() .setHost(endpoint) .setTimestamp(ta.getTime() * 1000) // Zipkin is in microseconds @@ -181,7 +181,7 @@ public class ZipkinSpanListener { */ private void addZipkinBinaryAnnotations(com.twitter.zipkin.gen.Span zipkinSpan, Span span, Endpoint endpoint) { - for (Map.Entry e : span.getAnnotations().entrySet()) { + for (Map.Entry e : span.tags().entrySet()) { BinaryAnnotation binaryAnn = new BinaryAnnotation() .setAnnotation_type(AnnotationType.STRING) .setKey(e.getKey()) diff --git a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListenerTests.java b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListenerTests.java index d1ce68e55..4c0db6925 100644 --- a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListenerTests.java +++ b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListenerTests.java @@ -83,7 +83,7 @@ public class ZipkinSpanListenerTests { @Test public void convertsTimestampAndDurationToMicroseconds() { long start = System.currentTimeMillis(); - parent.addTimelineAnnotation("http/request/retry"); // System.currentTimeMillis + parent.log("http/request/retry"); // System.currentTimeMillis com.twitter.zipkin.gen.Span result = listener.convert(parent); @@ -99,8 +99,8 @@ public class ZipkinSpanListenerTests { /** Sleuth host corresponds to annotation/binaryAnnotation.host in zipkin. */ @Test public void annotationsIncludeHost() { - parent.addTimelineAnnotation("http/request/retry"); - parent.addAnnotation("spring-boot/version", "1.3.1.RELEASE"); + parent.log("http/request/retry"); + parent.tag("spring-boot/version", "1.3.1.RELEASE"); com.twitter.zipkin.gen.Span result = listener.convert(parent);