diff --git a/pom.xml b/pom.xml index b0c66d9..b30be1d 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,9 @@ oauth2-ribbon ribbon-default-config ribbon-eureka + sleuth turbine + zipkin zuul zuul-config-discovery zuul-proxy diff --git a/sleuth/README.md b/sleuth/README.md new file mode 100755 index 0000000..7c781b8 --- /dev/null +++ b/sleuth/README.md @@ -0,0 +1 @@ +Test with zuul server only. No proxy and no eureka. diff --git a/sleuth/pom.xml b/sleuth/pom.xml new file mode 100644 index 0000000..490e3c5 --- /dev/null +++ b/sleuth/pom.xml @@ -0,0 +1,128 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-sample-sleuth + Brixton.BUILD-SNAPSHOT + jar + + spring-cloud-sample-sleuth + Demo project for Spring Cloud + + + org.springframework.cloud + spring-cloud-starter-parent + Brixton.BUILD-SNAPSHOT + + + + + UTF-8 + demo.DemoApplication + 1.7 + + + + + + org.springframework.cloud + spring-cloud-starter-parent + Brixton.BUILD-SNAPSHOT + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.cloud + spring-cloud-starter-zipkin + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + maven-deploy-plugin + + true + + + + + + + + spring-snapshots + Spring Snapshots + http://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + http://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + http://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + http://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + http://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + http://repo.spring.io/release + + false + + + + + diff --git a/sleuth/src/main/java/demo/TraceApplication.java b/sleuth/src/main/java/demo/TraceApplication.java new file mode 100644 index 0000000..ade624f --- /dev/null +++ b/sleuth/src/main/java/demo/TraceApplication.java @@ -0,0 +1,19 @@ +package demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.sleuth.sampler.AlwaysSampler; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class TraceApplication { + + @Bean + public AlwaysSampler alwaysSampler() { + return new AlwaysSampler(); + } + + public static void main(String[] args) { + SpringApplication.run(TraceApplication.class, args); + } +} diff --git a/sleuth/src/main/resources/application.yml b/sleuth/src/main/resources/application.yml new file mode 100644 index 0000000..1647069 --- /dev/null +++ b/sleuth/src/main/resources/application.yml @@ -0,0 +1,11 @@ +spring: + application: + name: sleuthSample + sleuth: + log: + json: + enabled: true + +logging: + pattern: + console: '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([trace=%X{X-Trace-Id:-},span=%X{X-Span-Id:-}]){yellow} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex' diff --git a/sleuth/src/test/java/demo/TraceApplicationTests.java b/sleuth/src/test/java/demo/TraceApplicationTests.java new file mode 100644 index 0000000..73d44e4 --- /dev/null +++ b/sleuth/src/test/java/demo/TraceApplicationTests.java @@ -0,0 +1,32 @@ +package demo; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.cloud.sleuth.Trace; +import org.springframework.cloud.sleuth.trace.DefaultTrace; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = TraceApplication.class) +@WebAppConfiguration +@DirtiesContext +public class TraceApplicationTests { + + @Autowired + Trace trace; + + @Test + public void contextLoads() { + } + + @Test + public void traceIsDefaultTrace() { + assertTrue("trace is wrong type", this.trace instanceof DefaultTrace); + } +} diff --git a/zipkin/README.md b/zipkin/README.md new file mode 100755 index 0000000..7c781b8 --- /dev/null +++ b/zipkin/README.md @@ -0,0 +1 @@ +Test with zuul server only. No proxy and no eureka. diff --git a/zipkin/pom.xml b/zipkin/pom.xml new file mode 100644 index 0000000..16f8ec3 --- /dev/null +++ b/zipkin/pom.xml @@ -0,0 +1,128 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-sample-zipkin + Brixton.BUILD-SNAPSHOT + jar + + spring-cloud-sample-zipkin + Demo project for Spring Cloud + + + org.springframework.cloud + spring-cloud-starter-parent + Brixton.BUILD-SNAPSHOT + + + + + UTF-8 + demo.DemoApplication + 1.7 + + + + + + org.springframework.cloud + spring-cloud-starter-parent + Brixton.BUILD-SNAPSHOT + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.cloud + spring-cloud-starter-zipkin + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + maven-deploy-plugin + + true + + + + + + + + spring-snapshots + Spring Snapshots + http://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + http://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + http://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + http://repo.spring.io/libs-snapshot-local + + true + + + + spring-milestones + Spring Milestones + http://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + http://repo.spring.io/release + + false + + + + + diff --git a/zipkin/src/main/java/demo/ZipkinApplication.java b/zipkin/src/main/java/demo/ZipkinApplication.java new file mode 100644 index 0000000..ce8039f --- /dev/null +++ b/zipkin/src/main/java/demo/ZipkinApplication.java @@ -0,0 +1,30 @@ +package demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.cloud.sleuth.sampler.AlwaysSampler; +import org.springframework.context.annotation.Bean; + +import com.github.kristofa.brave.LoggingSpanCollectorImpl; +import com.github.kristofa.brave.SpanCollector; + +@SpringBootApplication +public class ZipkinApplication { + + @Bean + public AlwaysSampler alwaysSampler() { + return new AlwaysSampler(); + } + + // Use this for debugging (or if there is no Zipkin collector running on port 9410) + @Bean + @ConditionalOnProperty(value="sample.zipkin.enabled", havingValue="false") + public SpanCollector spanCollector() { + return new LoggingSpanCollectorImpl(); + } + + public static void main(String[] args) { + SpringApplication.run(ZipkinApplication.class, args); + } +} diff --git a/zipkin/src/main/resources/application.yml b/zipkin/src/main/resources/application.yml new file mode 100644 index 0000000..1647069 --- /dev/null +++ b/zipkin/src/main/resources/application.yml @@ -0,0 +1,11 @@ +spring: + application: + name: sleuthSample + sleuth: + log: + json: + enabled: true + +logging: + pattern: + console: '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([trace=%X{X-Trace-Id:-},span=%X{X-Span-Id:-}]){yellow} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex' diff --git a/zipkin/src/test/java/demo/ZipkinApplicationTests.java b/zipkin/src/test/java/demo/ZipkinApplicationTests.java new file mode 100644 index 0000000..720edf3 --- /dev/null +++ b/zipkin/src/test/java/demo/ZipkinApplicationTests.java @@ -0,0 +1,31 @@ +package demo; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.cloud.sleuth.zipkin.ZipkinSpanListener; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = ZipkinApplication.class) +@WebAppConfiguration +@DirtiesContext +public class ZipkinApplicationTests { + + @Autowired + ZipkinSpanListener listener; + + @Test + public void contextLoads() { + } + + @Test + public void listenerIsInjected() { + assertTrue("listener is wrong type", this.listener instanceof ZipkinSpanListener); + } +}