[#146] Introduced SpanName

- Added aspect to provide better naming for @Async

fixes #146
This commit is contained in:
Marcin Grzejszczak
2016-02-09 15:25:36 +01:00
parent a0a79584f4
commit 1b0c8dfee5
54 changed files with 603 additions and 226 deletions

View File

@@ -21,7 +21,6 @@ import java.util.Optional;
import java.util.Random;
import java.util.stream.Collectors;
import integration.MessagingApplicationTests.IntegrationSpanCollectorConfig;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -33,6 +32,8 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import integration.MessagingApplicationTests.IntegrationSpanCollectorConfig;
import sample.SampleMessagingApplication;
import tools.AbstractIntegrationTest;
import zipkin.Constants;
@@ -116,7 +117,7 @@ public class MessagingApplicationTests extends AbstractIntegrationTest {
private Optional<Span> findLastHttpSpan() {
return this.integrationTestSpanCollector.hashedSpans.stream()
.filter(span -> "http/foo".equals(span.name)).findFirst();
.filter(span -> "http:/foo".equals(span.name)).findFirst();
}
private Optional<Span> findSpanWithAnnotation(List<Span> eventSpans, String annotationName) {
@@ -128,13 +129,13 @@ public class MessagingApplicationTests extends AbstractIntegrationTest {
private List<Span> findAllEventRelatedSpans() {
return this.integrationTestSpanCollector.hashedSpans.stream()
.filter(span -> "message/messages".equals(span.name) && span.parentId != null).collect(
.filter(span -> "message:messages".equals(span.name) && span.parentId != null).collect(
Collectors.toList());
}
private Optional<Span> findFirstHttpRequestSpan() {
return this.integrationTestSpanCollector.hashedSpans.stream()
.filter(span -> "http/".equals(span.name) && span.parentId != null).findFirst();
.filter(span -> "http:/".equals(span.name) && span.parentId != null).findFirst();
}
private void thenAllSpansArePresent(Optional<Span> firstHttpSpan,

View File

@@ -16,12 +16,16 @@
package sample;
import java.util.Random;
import java.util.concurrent.Callable;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.SpanAccessor;
import org.springframework.cloud.sleuth.SpanName;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.cloud.sleuth.sampler.AlwaysSampler;
import org.springframework.context.ApplicationListener;
@@ -29,9 +33,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.Random;
import java.util.concurrent.Callable;
/**
* @author Spencer Gibb
*/
@@ -93,7 +94,7 @@ ApplicationListener<EmbeddedServletContainerInitializedEvent> {
@SneakyThrows
@RequestMapping("/traced")
public String traced() {
Span span = this.tracer.startTrace("customTraceEndpoint",
Span span = this.tracer.startTrace(new SpanName("http", "customTraceEndpoint"),
new AlwaysSampler());
int millis = this.random.nextInt(1000);
log.info("Sleeping for {} millis", millis);

View File

@@ -15,6 +15,9 @@
*/
package integration;
import java.util.Collections;
import java.util.Random;
import example.ZipkinStreamServerApplication;
import org.junit.Before;
import org.junit.Test;
@@ -25,6 +28,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.boot.test.WebIntegrationTest;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.SpanName;
import org.springframework.cloud.sleuth.stream.Host;
import org.springframework.cloud.sleuth.stream.SleuthSink;
import org.springframework.cloud.sleuth.stream.Spans;
@@ -36,9 +40,6 @@ import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import tools.AbstractIntegrationTest;
import java.util.Collections;
import java.util.Random;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = { TestSupportBinderAutoConfiguration.class,
ZipkinStreamServerApplication.class })
@@ -62,7 +63,7 @@ public class ZipkinStreamTests extends AbstractIntegrationTest {
@Test
public void should_propagate_spans_to_zipkin() {
Span span = Span.builder().traceId(this.traceId).spanId(this.spanId).name("test").build();
Span span = Span.builder().traceId(this.traceId).spanId(this.spanId).name(new SpanName("http", "test")).build();
span.tag(getRequiredBinaryAnnotationName(), "10131");
this.input.send(messageWithSpan(span));

View File

@@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.SpanAccessor;
import org.springframework.cloud.sleuth.SpanName;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.cloud.sleuth.sampler.AlwaysSampler;
import org.springframework.context.ApplicationListener;
@@ -96,7 +97,7 @@ ApplicationListener<EmbeddedServletContainerInitializedEvent> {
@SneakyThrows
@RequestMapping("/traced")
public String traced() {
Span span = this.tracer.startTrace("customTraceEndpoint",
Span span = this.tracer.startTrace(new SpanName("http", "customTraceEndpoint"),
new AlwaysSampler());
int millis = this.random.nextInt(1000);
log.info("Sleeping for {} millis", millis);

View File

@@ -16,12 +16,16 @@
package sample;
import java.util.Random;
import java.util.concurrent.Callable;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.SpanAccessor;
import org.springframework.cloud.sleuth.SpanName;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.cloud.sleuth.sampler.AlwaysSampler;
import org.springframework.context.ApplicationListener;
@@ -29,9 +33,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.Random;
import java.util.concurrent.Callable;
/**
* @author Spencer Gibb
*/
@@ -93,7 +94,7 @@ ApplicationListener<EmbeddedServletContainerInitializedEvent> {
@SneakyThrows
@RequestMapping("/traced")
public String traced() {
Span span = this.tracer.startTrace("customTraceEndpoint",
Span span = this.tracer.startTrace(new SpanName("http", "customTraceEndpoint"),
new AlwaysSampler());
int millis = this.random.nextInt(1000);
log.info("Sleeping for {} millis", millis);