From e6b78d267fca2d7dfe5e19e571dc30dff7b00bd4 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 8 Jul 2019 13:36:20 +0200 Subject: [PATCH] Migrates tests to separate modules (#1395) fixes #1394 --- pom.xml | 1 + spring-cloud-sleuth-core/pom.xml | 65 +- .../web/client/feign/LazyClient.java | 28 +- .../web/client/feign/SleuthFeignBuilder.java | 3 +- .../SleuthSpanCreatorAspectMonoTests.java | 53 +- ...TracingChannelInterceptorAutowireTest.java | 55 -- .../instrument/web/TraceWebFluxTests.java | 571 ------------------ .../src/test/resources/application-data.yml | 3 - .../src/test/resources/application.yml | 5 - .../src/test/resources/logback.xml | 1 + spring-cloud-sleuth-dependencies/pom.xml | 2 +- tests/pom.xml | 66 ++ .../pom.xml | 74 +++ .../async/DefaultTestAutoConfiguration.java | 36 ++ .../async/TraceAsyncIntegrationTests.java | 1 - .../async/issues/issue1212/GH1212Tests.java | 0 .../async/issues/issue410/Issue410Tests.java | 9 +- .../async/issues/issue546/Issue546Tests.java | 0 .../src/test/resources/application.yml | 3 + .../pom.xml | 91 +++ .../feign/issues/issue307/Issue307Tests.java | 2 +- .../feign/issues/issue350/Issue350Tests.java | 2 +- .../feign/issues/issue362/Issue362Tests.java | 2 +- .../feign/issues/issue393/Issue393Tests.java | 2 +- .../feign/issues/issue502/Issue502Tests.java | 2 +- .../src/test/resources/application.yml | 17 + .../pom.xml | 92 +++ .../grpc/GrpcTracingIntegrationTests.java | 0 .../instrument/grpc/stubs/HelloReply.java | 2 +- .../grpc/stubs/HelloReplyOrBuilder.java | 0 .../instrument/grpc/stubs/HelloRequest.java | 0 .../grpc/stubs/HelloRequestOrBuilder.java | 0 .../grpc/stubs/HelloServiceGrpc.java | 0 .../grpc/stubs/HelloServiceOuterClass.java | 0 .../src/test/resources/application.yml | 3 + .../pom.xml | 79 +++ .../hystrix/DefaultTestAutoConfiguration.java | 38 ++ .../HystrixAnnotationsIntegrationTests.java | 1 - .../src/test/resources/application.yml | 3 + .../pom.xml | 80 +++ .../TraceRedisAutoConfigurationTests.java | 0 .../src/test/resources/application.yml | 3 + .../pom.xml | 144 +++++ .../ITTracingChannelInterceptorTests.java | 0 .../JmsTracingConfigurationTest.java | 8 +- .../SleuthKafkaStreamsConfigurationTest.java | 0 ...extPropagationChannelInterceptorTests.java | 2 +- .../TraceMessagingAutoConfigurationTests.java | 0 .../issue_943/CustomExecutorConfig.java | 0 .../issue_943/HelloSpringIntegration.java | 0 .../issues/issue_943/HelloWorldImpl.java | 0 .../issue_943/HelloWorldRestController.java | 0 .../issues/issue_943/Issue943Tests.java | 0 .../issues/issue_943/MessagingGateway.java | 0 .../TraceWebSocketAutoConfigurationTests.java | 0 .../sleuth/instrument/util/SpanUtil.java | 56 ++ .../src/test/resources/application.yml | 3 + .../resources/beans/applicationContext.xml | 82 +++ .../src/test/resources/logback.xml | 32 + .../pom.xml | 79 +++ .../web/AbstractMvcIntegrationTest.java | 0 .../web/TraceAsyncIntegrationTests.java | 4 +- ...raceCustomFilterResponseInjectorTests.java | 0 .../web/TraceFilterIntegrationTests.java | 4 +- ...terWebIntegrationMultipleFiltersTests.java | 0 .../web/TraceFilterWebIntegrationTests.java | 0 .../instrument/web/TraceWebDisabledTests.java | 0 ...TraceWebServletAutoConfigurationTests.java | 0 ...eWebAsyncClientAutoConfigurationTests.java | 0 .../exceptionresolver/Issue585Tests.java | 0 .../sleuth/instrument/web/view/Issue469.java | 0 .../instrument/web/view/Issue469Tests.java | 0 .../cloud/sleuth/util/SpanUtil.java | 56 ++ .../src/test/resources/application.yml | 3 + .../pom.xml | 89 +++ .../reactor/Issue866Configuration.java | 0 .../ScopePassingSpanSubscriberTests.java | 0 .../reactor/SpanSubscriberTests.java | 0 ...utoConfigurationAccessorConfiguration.java | 52 ++ .../reactor/sample/FlatMapTests.java | 2 - .../reactor/sample/RequestSender.java | 0 .../src/test/resources/application.yml | 3 + .../pom.xml | 75 +++ .../SleuthRxJavaSchedulersHookTests.java | 0 .../instrument/rxjava/SleuthRxJavaTests.java | 0 .../src/test/resources/application.yml | 6 + .../pom.xml | 70 +++ .../scheduling/TracingOnScheduledTests.java | 7 +- .../src/test/resources/application.yml | 5 + .../pom.xml | 84 +++ .../sleuth/instrument/web}/GH1102Tests.java | 2 +- .../instrument/web/TraceWebFluxTests.java | 204 +++++++ .../cloud/sleuth/util/SpanUtil.java | 56 ++ .../src/test/resources/logback.xml | 33 + .../pom.xml | 74 +++ .../zuul/TraceZuulIntegrationTests.java | 0 .../zuul/issues/issue634/Issue634Tests.java | 0 .../src/test/resources/application.yml | 3 + 98 files changed, 1923 insertions(+), 710 deletions(-) delete mode 100644 spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TracingChannelInterceptorAutowireTest.java delete mode 100644 spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxTests.java delete mode 100644 spring-cloud-sleuth-core/src/test/resources/application-data.yml create mode 100644 tests/pom.xml create mode 100644 tests/spring-cloud-sleuth-instrumentation-async-tests/pom.xml create mode 100644 tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/DefaultTestAutoConfiguration.java rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-async-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncIntegrationTests.java (98%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-async-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue1212/GH1212Tests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-async-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue410/Issue410Tests.java (98%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-async-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue546/Issue546Tests.java (100%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-feign-tests/pom.xml rename {spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client => tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument}/feign/issues/issue307/Issue307Tests.java (97%) rename {spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client => tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument}/feign/issues/issue350/Issue350Tests.java (98%) rename {spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client => tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument}/feign/issues/issue362/Issue362Tests.java (98%) rename {spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client => tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument}/feign/issues/issue393/Issue393Tests.java (98%) rename {spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client => tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument}/feign/issues/issue502/Issue502Tests.java (97%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-grpc-tests/pom.xml rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-grpc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/GrpcTracingIntegrationTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-grpc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReply.java (99%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-grpc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReplyOrBuilder.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-grpc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequest.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-grpc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequestOrBuilder.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-grpc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceGrpc.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-grpc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceOuterClass.java (100%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-hystrix-tests/pom.xml create mode 100644 tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/DefaultTestAutoConfiguration.java rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-hystrix-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/HystrixAnnotationsIntegrationTests.java (97%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-lettuce-tests/pom.xml rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-lettuce-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisAutoConfigurationTests.java (100%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-lettuce-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-messaging-tests/pom.xml rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/ITTracingChannelInterceptorTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/JmsTracingConfigurationTest.java (96%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthKafkaStreamsConfigurationTest.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceContextPropagationChannelInterceptorTests.java (98%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfigurationTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/CustomExecutorConfig.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloSpringIntegration.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldImpl.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldRestController.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/Issue943Tests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/MessagingGateway.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-messaging-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/websocket/TraceWebSocketAutoConfigurationTests.java (100%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/util/SpanUtil.java create mode 100644 tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/beans/applicationContext.xml create mode 100644 tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/logback.xml create mode 100644 tests/spring-cloud-sleuth-instrumentation-mvc-tests/pom.xml rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/AbstractMvcIntegrationTest.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceAsyncIntegrationTests.java (98%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceCustomFilterResponseInjectorTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterIntegrationTests.java (99%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationMultipleFiltersTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebDisabledTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfigurationTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebAsyncClientAutoConfigurationTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/exceptionresolver/Issue585Tests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-mvc-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469Tests.java (100%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/util/SpanUtil.java create mode 100644 tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-reactor-tests/pom.xml rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-reactor-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/Issue866Configuration.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-reactor-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriberTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-reactor-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java (100%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/TraceReactorAutoConfigurationAccessorConfiguration.java rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-reactor-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/FlatMapTests.java (98%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-reactor-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/RequestSender.java (100%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-rxjava-tests/pom.xml rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-rxjava-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaSchedulersHookTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-rxjava-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaTests.java (100%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-rxjava-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-scheduling-tests/pom.xml rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-scheduling-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java (97%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-scheduling-tests/src/test/resources/application.yml create mode 100644 tests/spring-cloud-sleuth-instrumentation-webflux-tests/pom.xml rename {spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client => tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web}/GH1102Tests.java (98%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxTests.java create mode 100644 tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/util/SpanUtil.java create mode 100644 tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/resources/logback.xml create mode 100644 tests/spring-cloud-sleuth-instrumentation-zuul-tests/pom.xml rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-zuul-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/TraceZuulIntegrationTests.java (100%) rename {spring-cloud-sleuth-core => tests/spring-cloud-sleuth-instrumentation-zuul-tests}/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/issues/issue634/Issue634Tests.java (100%) create mode 100644 tests/spring-cloud-sleuth-instrumentation-zuul-tests/src/test/resources/application.yml diff --git a/pom.xml b/pom.xml index c0d08c174..d3cc667b2 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,7 @@ spring-cloud-sleuth-dependencies spring-cloud-sleuth-core + tests spring-cloud-sleuth-zipkin spring-cloud-starter-sleuth spring-cloud-starter-zipkin diff --git a/spring-cloud-sleuth-core/pom.xml b/spring-cloud-sleuth-core/pom.xml index 33051e856..5e9a16c80 100644 --- a/spring-cloud-sleuth-core/pom.xml +++ b/spring-cloud-sleuth-core/pom.xml @@ -96,6 +96,12 @@ org.springframework.cloud spring-cloud-starter-netflix-zuul true + + + com.google.guava + guava + + org.springframework.integration @@ -151,6 +157,12 @@ com.netflix.zuul zuul-core true + + + com.google.guava + guava + + io.reactivex @@ -252,13 +264,19 @@ io.github.lognet grpc-spring-boot-starter true + + + org.springframework.boot + spring-boot-starter + + io.zipkin.brave brave-instrumentation-grpc true - + io.lettuce lettuce-core @@ -279,6 +297,12 @@ com.netflix.archaius archaius-core test + + + com.google.guava + guava + + com.squareup.okhttp3 @@ -301,50 +325,11 @@ JUnitParams test - - org.springframework.boot - spring-boot-starter-data-jpa - test - - - org.springframework - spring-orm - test - - - com.h2database - h2 - test - org.springframework.cloud spring-cloud-starter-netflix-eureka-client test - - org.springframework.boot - spring-boot-starter-activemq - test - - - - javax.resource - javax.resource-api - 1.7.1 - test - - - org.apache.activemq - activemq-ra - test - - - - com.google.guava - guava - 20.0 - test - diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/LazyClient.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/LazyClient.java index 6c193909d..e90a938b7 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/LazyClient.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/LazyClient.java @@ -18,10 +18,12 @@ package org.springframework.cloud.sleuth.instrument.web.client.feign; import java.io.IOException; +import brave.http.HttpTracing; import feign.Client; import feign.Request; import feign.Response; +import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; /** @@ -33,18 +35,36 @@ class LazyClient implements Client { private final BeanFactory beanFactory; - private final Client delegate; + private Client delegate; private TraceFeignObjectWrapper wrapper; - LazyClient(BeanFactory beanFactory, Client delegate) { + LazyClient(BeanFactory beanFactory, Client client) { + this.beanFactory = beanFactory; + this.delegate = client; + } + + LazyClient(BeanFactory beanFactory) { this.beanFactory = beanFactory; - this.delegate = delegate; } @Override public Response execute(Request request, Request.Options options) throws IOException { - return ((Client) wrapper().wrap(this.delegate)).execute(request, options); + return ((Client) wrapper().wrap(delegate())).execute(request, options); + } + + private Client delegate() { + if (this.delegate == null) { + try { + this.delegate = this.beanFactory.getBean(Client.class); + } + catch (BeansException ex) { + this.delegate = TracingFeignClient.create( + beanFactory.getBean(HttpTracing.class), + new Client.Default(null, null)); + } + } + return this.delegate; } private TraceFeignObjectWrapper wrapper() { diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/SleuthFeignBuilder.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/SleuthFeignBuilder.java index b2a718fc5..fe75e40a9 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/SleuthFeignBuilder.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/SleuthFeignBuilder.java @@ -42,8 +42,7 @@ final class SleuthFeignBuilder { private static Client client(BeanFactory beanFactory) { try { - Client client = beanFactory.getBean(Client.class); - return new LazyClient(beanFactory, client); + return new LazyClient(beanFactory); } catch (BeansException ex) { return TracingFeignClient.create(beanFactory.getBean(HttpTracing.class), diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/annotation/SleuthSpanCreatorAspectMonoTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/annotation/SleuthSpanCreatorAspectMonoTests.java index 51e9df95d..b94888311 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/annotation/SleuthSpanCreatorAspectMonoTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/annotation/SleuthSpanCreatorAspectMonoTests.java @@ -18,6 +18,9 @@ package org.springframework.cloud.sleuth.annotation; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collector; import java.util.stream.Collectors; import javax.annotation.concurrent.NotThreadSafe; @@ -40,7 +43,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.sleuth.util.ArrayListSpanReporter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.data.util.Pair; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit4.SpringRunner; @@ -712,3 +714,52 @@ public class SleuthSpanCreatorAspectMonoTests { } } + +/** + * Copied from Spring Data + */ +final class Pair { + + private final S first; + + private final T second; + + Pair(S first, T second) { + this.first = first; + this.second = second; + } + + public static Pair of(S first, T second) { + return new Pair<>(first, second); + } + + public S getFirst() { + return first; + } + + public T getSecond() { + return second; + } + + public static Collector, ?, Map> toMap() { + return Collectors.toMap(Pair::getFirst, Pair::getSecond); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Pair pair = (Pair) o; + return Objects.equals(first, pair.first) && Objects.equals(second, pair.second); + } + + @Override + public int hashCode() { + return Objects.hash(first, second); + } + +} diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TracingChannelInterceptorAutowireTest.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TracingChannelInterceptorAutowireTest.java deleted file mode 100644 index c75cf9ac5..000000000 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TracingChannelInterceptorAutowireTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2013-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.sleuth.instrument.messaging; - -import brave.Tracing; -import org.junit.After; -import org.junit.Test; - -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.messaging.support.ChannelInterceptor; - -public class TracingChannelInterceptorAutowireTest { - - @Test - public void autowiredWithBeanConfig() { - AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); - ctx.register(TracingConfiguration.class); - ctx.register(TracingChannelInterceptor.class); - ctx.refresh(); - - ctx.getBean(ChannelInterceptor.class); - } - - @After - public void close() { - Tracing.current().close(); - } - - @Configuration - static class TracingConfiguration { - - @Bean - Tracing tracing() { - return Tracing.newBuilder().build(); - } - - } - -} diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxTests.java deleted file mode 100644 index 02074d28c..000000000 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxTests.java +++ /dev/null @@ -1,571 +0,0 @@ -/* - * Copyright 2013-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.sleuth.instrument.web; - -import java.util.List; -import java.util.stream.Collectors; - -import javax.annotation.concurrent.NotThreadSafe; - -import brave.Span; -import brave.Tracer; -import brave.sampler.Sampler; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.assertj.core.api.BDDAssertions; -import org.awaitility.Awaitility; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.MDC; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.WebApplicationType; -import org.springframework.boot.actuate.trace.http.HttpTrace; -import org.springframework.boot.actuate.trace.http.HttpTraceRepository; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.cloud.sleuth.DisableWebFluxSecurity; -import org.springframework.cloud.sleuth.annotation.ContinueSpan; -import org.springframework.cloud.sleuth.annotation.NewSpan; -import org.springframework.cloud.sleuth.instrument.reactor.TraceReactorAutoConfigurationAccessorConfiguration; -import org.springframework.cloud.sleuth.instrument.web.client.TraceWebClientAutoConfiguration; -import org.springframework.cloud.sleuth.util.ArrayListSpanReporter; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.Environment; -import org.springframework.test.web.reactive.server.WebTestClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.reactive.function.client.ClientResponse; -import org.springframework.web.reactive.function.client.WebClient; -import org.springframework.web.reactive.function.server.RequestPredicates; -import org.springframework.web.reactive.function.server.RouterFunction; -import org.springframework.web.reactive.function.server.RouterFunctions; -import org.springframework.web.reactive.function.server.ServerResponse; - -import static org.assertj.core.api.BDDAssertions.then; - -@NotThreadSafe -public class TraceWebFluxTests { - - public static final String EXPECTED_TRACE_ID = "b919095138aa4c6e"; - - @Test - public void should_instrument_web_filter() throws Exception { - // setup - TraceReactorAutoConfigurationAccessorConfiguration.close(); - ConfigurableApplicationContext context = new SpringApplicationBuilder( - TraceWebFluxTests.Config.class) - .web(WebApplicationType.REACTIVE) - .properties("server.port=0", "spring.jmx.enabled=false", - "spring.sleuth.web.skipPattern=/skipped", - "spring.application.name=TraceWebFluxTests", - "security.basic.enabled=false", - "management.security.enabled=false") - .run(); - ArrayListSpanReporter accumulator = context.getBean(ArrayListSpanReporter.class); - int port = context.getBean(Environment.class).getProperty("local.server.port", - Integer.class); - Controller2 controller2 = context.getBean(Controller2.class); - clean(accumulator, controller2); - - // when - ClientResponse response = whenRequestIsSent(port); - // then - thenSpanWasReportedWithTags(accumulator, response); - clean(accumulator, controller2); - - // when - ClientResponse functionResponse = whenRequestIsSentToFunction(port); - // then - thenSpanWasReportedForFunction(accumulator, functionResponse); - accumulator.clear(); - - // when - ClientResponse nonSampledResponse = whenNonSampledRequestIsSent(port); - // then - thenNoSpanWasReported(accumulator, nonSampledResponse, controller2); - accumulator.clear(); - - // when - ClientResponse skippedPatternResponse = whenRequestIsSentToSkippedPattern(port); - // then - thenNoSpanWasReported(accumulator, skippedPatternResponse, controller2); - - // some other tests - SleuthSpanCreatorAspectWebFlux bean = context - .getBean(SleuthSpanCreatorAspectWebFlux.class); - bean.setPort(port); - - // then - bean.shouldContinueSpanInWebFlux(); - bean.shouldCreateNewSpanInWebFlux(); - bean.shouldCreateNewSpanInWebFluxInSubscriberContext(); - bean.shouldReturnSpanFromWebFluxSubscriptionContext(); - bean.shouldReturnSpanFromWebFluxTraceContext(); - bean.shouldSetupCorrectSpanInHttpTrace(); - - // cleanup - context.close(); - TraceReactorAutoConfigurationAccessorConfiguration.close(); - } - - private void clean(ArrayListSpanReporter accumulator, Controller2 controller2) { - accumulator.clear(); - controller2.span = null; - } - - private void thenSpanWasReportedWithTags(ArrayListSpanReporter accumulator, - ClientResponse response) { - Awaitility.await() - .untilAsserted(() -> then(response.statusCode().value()).isEqualTo(200)); - List spans = accumulator.getSpans().stream() - .filter(span -> "get /api/c2/{id}".equals(span.name())) - .collect(Collectors.toList()); - then(spans).hasSize(1); - then(spans.get(0).name()).isEqualTo("get /api/c2/{id}"); - then(spans.get(0).tags()).containsEntry("mvc.controller.method", "successful") - .containsEntry("mvc.controller.class", "Controller2"); - } - - private void thenSpanWasReportedForFunction(ArrayListSpanReporter accumulator, - ClientResponse response) { - Awaitility.await() - .untilAsserted(() -> then(response.statusCode().value()).isEqualTo(200)); - List spans = accumulator.getSpans().stream() - .filter(span -> "get".equals(span.name())).collect(Collectors.toList()); - then(spans).hasSize(1); - } - - private void thenNoSpanWasReported(ArrayListSpanReporter accumulator, - ClientResponse response, Controller2 controller2) { - Awaitility.await().untilAsserted(() -> { - then(response.statusCode().value()).isEqualTo(200); - then(accumulator.getSpans()).isEmpty(); - }); - then(controller2.span).isNotNull(); - then(controller2.span.context().traceIdString()).isEqualTo(EXPECTED_TRACE_ID); - } - - private ClientResponse whenRequestIsSent(int port) { - Mono exchange = WebClient.create().get() - .uri("http://localhost:" + port + "/api/c2/10").exchange(); - return exchange.block(); - } - - private ClientResponse whenRequestIsSentToFunction(int port) { - Mono exchange = WebClient.create().get() - .uri("http://localhost:" + port + "/function").exchange(); - return exchange.block(); - } - - private ClientResponse whenRequestIsSentToSkippedPattern(int port) { - Mono exchange = WebClient.create().get() - .uri("http://localhost:" + port + "/skipped").exchange(); - return exchange.block(); - } - - private ClientResponse whenNonSampledRequestIsSent(int port) { - Mono exchange = WebClient.create().get() - .uri("http://localhost:" + port + "/api/c2/10") - .header("X-B3-SpanId", EXPECTED_TRACE_ID) - .header("X-B3-TraceId", EXPECTED_TRACE_ID).header("X-B3-Sampled", "0") - .exchange(); - return exchange.block(); - } - - @Configuration - @EnableAutoConfiguration(exclude = { TraceWebClientAutoConfiguration.class }) - @DisableWebFluxSecurity - static class Config { - - @Bean - WebClient webClient() { - return WebClient.create(); - } - - @Bean - Sampler sampler() { - return Sampler.ALWAYS_SAMPLE; - } - - @Bean - ArrayListSpanReporter spanReporter() { - return new ArrayListSpanReporter(); - } - - @Bean - Controller2 controller2(Tracer tracer) { - return new Controller2(tracer); - } - - @Bean - TestEndpoint testEndpoint() { - return new TestEndpoint(); - } - - @Bean - RouterFunction function() { - return RouterFunctions.route(RequestPredicates.GET("/function"), r -> { - then(MDC.get("X-B3-TraceId")).isNotEmpty(); - return ServerResponse.ok().syncBody("functionOk"); - }); - } - - @Bean - TestBean testBean(Tracer tracer) { - return new TestBean(tracer); - } - - @Bean - SleuthSpanCreatorAspectWebFlux.AccessLoggingHttpTraceRepository accessLoggingHttpTraceRepository() { - return new SleuthSpanCreatorAspectWebFlux.AccessLoggingHttpTraceRepository(); - } - - @Bean - SleuthSpanCreatorAspectWebFlux sleuthSpanCreatorAspectWebFlux(Tracer tracer, - SleuthSpanCreatorAspectWebFlux.AccessLoggingHttpTraceRepository repository, - ArrayListSpanReporter reporter) { - return new SleuthSpanCreatorAspectWebFlux(tracer, repository, reporter); - } - - } - - @RestController - static class Controller2 { - - private final Tracer tracer; - - Span span; - - Controller2(Tracer tracer) { - this.tracer = tracer; - } - - @GetMapping("/api/c2/{id}") - public Flux successful(@PathVariable Long id) { - // #786 - then(MDC.get("X-B3-TraceId")).isNotEmpty(); - this.span = this.tracer.currentSpan(); - return Flux.just(id.toString()); - } - - @GetMapping("/skipped") - public Flux skipped() { - Boolean sampled = this.tracer.currentSpan().context().sampled(); - then(sampled).isFalse(); - return Flux.just(sampled.toString()); - } - - } - - @RestController - @RequestMapping("/test") - static class TestEndpoint { - - private static final Logger log = LoggerFactory.getLogger(TestEndpoint.class); - - @Autowired - Tracer tracer; - - @Autowired - TestBean testBean; - - @GetMapping("/ping") - Mono ping() { - log.info("ping"); - return Mono.just(this.tracer.currentSpan().context().spanId()); - } - - @GetMapping("/pingFromContext") - Mono pingFromContext() { - log.info("pingFromContext"); - return Mono.subscriberContext() - .doOnSuccess(context -> log.info("Ping from context")) - .flatMap(context -> Mono - .just(this.tracer.currentSpan().context().spanId())); - } - - @GetMapping("/continueSpan") - Mono continueSpan() { - log.info("continueSpan"); - return this.testBean.continueSpanInTraceContext(); - } - - @GetMapping("/newSpan1") - Mono newSpan1() { - log.info("newSpan1"); - return this.testBean.newSpanInTraceContext(); - } - - @GetMapping("/newSpan2") - Mono newSpan2() { - log.info("newSpan2"); - return this.testBean.newSpanInSubscriberContext(); - } - - } - -} - -class SleuthSpanCreatorAspectWebFlux { - - private static final Log log = LogFactory - .getLog(SleuthSpanCreatorAspectWebFlux.class); - - private final Tracer tracer; - - private final SleuthSpanCreatorAspectWebFlux.AccessLoggingHttpTraceRepository repository; - - private final ArrayListSpanReporter reporter; - - int port; - - private WebTestClient webClient; - - SleuthSpanCreatorAspectWebFlux(Tracer tracer, - AccessLoggingHttpTraceRepository repository, ArrayListSpanReporter reporter) { - this.tracer = tracer; - this.repository = repository; - this.reporter = reporter; - } - - private static String toHexString(Long value) { - BDDAssertions.then(value).isNotNull(); - return StringUtils.leftPad(Long.toHexString(value), 16, '0'); - } - - void setPort(int port) { - this.port = port; - } - - public void setup() { - this.reporter.clear(); - this.repository.clear(); - log.info("Running app on port [" + this.port + "]"); - this.webClient = WebTestClient.bindToServer() - .baseUrl("http://localhost:" + this.port).build(); - } - - public void shouldReturnSpanFromWebFluxTraceContext() { - setup(); - Mono mono = this.webClient.get().uri("/test/ping").exchange() - .returnResult(Object.class).getResponseBody().single(); - - Object object = mono.block(); - log.info("Received [" + object + "]"); - Long newSpanId = (Long) object; - - Awaitility.await().untilAsserted(() -> { - List spans = getSpans(); - zipkin2.Span spanToFind = spans.stream() - .filter(span -> "get /test/ping".equals(span.name())).findFirst() - .orElseThrow(() -> new AssertionError( - "No span with name [get /test/ping] found")); - then(spanToFind.kind()).isEqualTo(zipkin2.Span.Kind.SERVER); - then(spanToFind.name()).isEqualTo("get /test/ping"); - then(spanToFind.id()).isEqualTo(toHexString(newSpanId)); - then(this.tracer.currentSpan()).isNull(); - }); - } - - private List getSpans() { - List spans = this.reporter.getSpans(); - log.info("Reported the following spans: \n\n" + spans); - return spans; - } - - public void shouldReturnSpanFromWebFluxSubscriptionContext() { - setup(); - Mono mono = this.webClient.get().uri("/test/pingFromContext").exchange() - .returnResult(Object.class).getResponseBody().single(); - - Object object = mono.block(); - log.info("Received [" + object + "]"); - Long newSpanId = (Long) object; - - Awaitility.await().untilAsserted(() -> { - List spans = getSpans(); - zipkin2.Span pingFromContext = spans.stream() - .filter(span -> "get /test/pingfromcontext".equals(span.name())) - .findFirst().orElseThrow(() -> new AssertionError( - "No span with name [get /test/pingfromcontext] found")); - then(pingFromContext.name()).isEqualTo("get /test/pingfromcontext"); - then(pingFromContext.kind()).isEqualTo(zipkin2.Span.Kind.SERVER); - then(pingFromContext.id()).isEqualTo(toHexString(newSpanId)); - then(this.tracer.currentSpan()).isNull(); - }); - } - - public void shouldContinueSpanInWebFlux() { - setup(); - Mono mono = this.webClient.get().uri("/test/continueSpan").exchange() - .returnResult(Object.class).getResponseBody().single(); - - Object object = mono.block(); - log.info("Received [" + object + "]"); - Long newSpanId = (Long) object; - - Awaitility.await().untilAsserted(() -> { - List spans = getSpans(); - zipkin2.Span spanToFind = spans.stream() - .filter(span -> "get /test/continuespan".equals(span.name())) - .findFirst().orElseThrow(() -> new AssertionError( - "No span with name [get /test/continuespan] found")); - then(spanToFind.kind()).isEqualTo(zipkin2.Span.Kind.SERVER); - then(spanToFind.name()).isEqualTo("get /test/continuespan"); - then(spanToFind.id()).isEqualTo(toHexString(newSpanId)); - then(this.tracer.currentSpan()).isNull(); - }); - } - - public void shouldCreateNewSpanInWebFlux() { - setup(); - Mono mono = this.webClient.get().uri("/test/newSpan1").exchange() - .returnResult(Object.class).getResponseBody().single(); - - Object object = mono.block(); - log.info("Received [" + object + "]"); - Long newSpanId = (Long) object; - - Awaitility.await().untilAsserted(() -> { - then(spanWithName("new-span-in-trace-context").id()) - .isEqualTo(toHexString(newSpanId)); - then(spanWithName("get /test/newspan1").kind()) - .isEqualTo(zipkin2.Span.Kind.SERVER); - then(this.tracer.currentSpan()).isNull(); - }); - } - - private zipkin2.Span spanWithName(String name) { - return getSpans().stream().filter(span -> name.equals(span.name())).findFirst() - .orElseThrow(() -> new AssertionError( - "Span with name [" + name + "] not found")); - } - - public void shouldCreateNewSpanInWebFluxInSubscriberContext() { - setup(); - Mono mono = this.webClient.get().uri("/test/newSpan2").exchange() - .returnResult(Object.class).getResponseBody().single(); - - Object object = mono.block(); - log.info("Received [" + object + "]"); - Long newSpanId = (Long) object; - - Awaitility.await().untilAsserted(() -> { - then(spanWithName("new-span-in-subscriber-context").id()) - .isEqualTo(toHexString(newSpanId)); - then(spanWithName("get /test/newspan2").kind()) - .isEqualTo(zipkin2.Span.Kind.SERVER); - then(this.tracer.currentSpan()).isNull(); - }); - } - - public void shouldSetupCorrectSpanInHttpTrace() { - setup(); - - Mono mono = this.webClient.get().uri("/test/ping").exchange() - .returnResult(Object.class).getResponseBody().single(); - - Object object = mono.block(); - log.info("Received [" + object + "]"); - Long newSpanId = (Long) object; - - Awaitility.await().untilAsserted(() -> { - then(spanWithName("get /test/ping").kind()) - .isEqualTo(zipkin2.Span.Kind.SERVER); - then(this.repository.getSpan()).isNotNull(); - then(spanWithName("get /test/ping").id()).isEqualTo(toHexString(newSpanId)) - .isEqualTo(this.repository.getSpan().context().traceIdString()); - then(this.tracer.currentSpan()).isNull(); - }); - } - - static class AccessLoggingHttpTraceRepository implements HttpTraceRepository { - - private static final Log log = LogFactory.getLog( - SleuthSpanCreatorAspectWebFlux.AccessLoggingHttpTraceRepository.class); - - @Autowired - Tracer tracer; - - brave.Span span; - - @Override - public List findAll() { - log.info("Find all executed"); - return null; - } - - @Override - public void add(HttpTrace trace) { - this.span = this.tracer.currentSpan(); - log.info("Setting span [" + this.span + "]"); - } - - public brave.Span getSpan() { - return this.span; - } - - public void clear() { - this.span = null; - } - - } - -} - -class TestBean { - - private static final Logger log = LoggerFactory.getLogger(TestBean.class); - - private final Tracer tracer; - - TestBean(Tracer tracer) { - this.tracer = tracer; - } - - @ContinueSpan - public Mono continueSpanInTraceContext() { - log.info("Continue"); - Long span = this.tracer.currentSpan().context().spanId(); - return Mono.defer(() -> Mono.just(span)); - } - - @NewSpan(name = "newSpanInTraceContext") - public Mono newSpanInTraceContext() { - log.info("New Span in Trace Context"); - return Mono.defer(() -> Mono.just(this.tracer.currentSpan().context().spanId())); - } - - @NewSpan(name = "newSpanInSubscriberContext") - public Mono newSpanInSubscriberContext() { - log.info("New Span in Subscriber Context"); - return Mono.subscriberContext() - .doOnSuccess(context -> log.info("New Span in deferred Trace Context")) - .flatMap(context -> Mono.defer( - () -> Mono.just(this.tracer.currentSpan().context().spanId()))); - } - -} diff --git a/spring-cloud-sleuth-core/src/test/resources/application-data.yml b/spring-cloud-sleuth-core/src/test/resources/application-data.yml deleted file mode 100644 index 705c014ee..000000000 --- a/spring-cloud-sleuth-core/src/test/resources/application-data.yml +++ /dev/null @@ -1,3 +0,0 @@ -spring.autoconfigure.exclude: -spring.data.jdbc.repositories.enabled: true -spring.data.jpa.repositories.enabled: true diff --git a/spring-cloud-sleuth-core/src/test/resources/application.yml b/spring-cloud-sleuth-core/src/test/resources/application.yml index 640a92c98..82f4db9d8 100644 --- a/spring-cloud-sleuth-core/src/test/resources/application.yml +++ b/spring-cloud-sleuth-core/src/test/resources/application.yml @@ -13,14 +13,9 @@ eureka.client.enabled: false ribbon.eureka.enabled: false spring.sleuth.scheduled.skipPattern: "^org.*TestBeanWithScheduledMethodToBeIgnored$" -# comma separated list of matchers -spring.sleuth.rxjava.schedulers.ignoredthreads: HystixMetricPoller,^MyCustomThread.*$,^RxComputation.*$ logging.level.org.springframework.cloud: DEBUG logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE -#disable hibernate by default spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration, org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration, org.springframework.cloud.gateway.config.GatewayAutoConfiguration, org.springframework.cloud.gateway.config.GatewayClassPathWarningAutoConfiguration -spring.data.jdbc.repositories.enabled: false -spring.data.jpa.repositories.enabled: false diff --git a/spring-cloud-sleuth-core/src/test/resources/logback.xml b/spring-cloud-sleuth-core/src/test/resources/logback.xml index a7061973e..17279c080 100644 --- a/spring-cloud-sleuth-core/src/test/resources/logback.xml +++ b/spring-cloud-sleuth-core/src/test/resources/logback.xml @@ -19,6 +19,7 @@ + diff --git a/spring-cloud-sleuth-dependencies/pom.xml b/spring-cloud-sleuth-dependencies/pom.xml index 67e60fef3..a53942392 100644 --- a/spring-cloud-sleuth-dependencies/pom.xml +++ b/spring-cloud-sleuth-dependencies/pom.xml @@ -33,7 +33,7 @@ 5.6.7 0.34.1 - 3.0.1 + 3.3.0 diff --git a/tests/pom.xml b/tests/pom.xml new file mode 100644 index 000000000..2a698dd2c --- /dev/null +++ b/tests/pom.xml @@ -0,0 +1,66 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-tests + pom + Spring Cloud Sleuth Tests + Spring Cloud Sleuth Tests + + + org.springframework.cloud + spring-cloud-sleuth + 2.2.0.BUILD-SNAPSHOT + .. + + + + spring-cloud-sleuth-instrumentation-async-tests + spring-cloud-sleuth-instrumentation-grpc-tests + spring-cloud-sleuth-instrumentation-hystrix-tests + spring-cloud-sleuth-instrumentation-messaging-tests + spring-cloud-sleuth-instrumentation-reactor-tests + spring-cloud-sleuth-instrumentation-lettuce-tests + spring-cloud-sleuth-instrumentation-rxjava-tests + spring-cloud-sleuth-instrumentation-scheduling-tests + spring-cloud-sleuth-instrumentation-mvc-tests + spring-cloud-sleuth-instrumentation-webflux-tests + spring-cloud-sleuth-instrumentation-feign-tests + spring-cloud-sleuth-instrumentation-zuul-tests + + + + + + + + maven-deploy-plugin + + true + + + + + + + diff --git a/tests/spring-cloud-sleuth-instrumentation-async-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-async-tests/pom.xml new file mode 100644 index 000000000..fe90660f8 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-async-tests/pom.xml @@ -0,0 +1,74 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-async-tests + jar + Spring Cloud Sleuth Async Instrumentation Tests + Spring Cloud Sleuth Async Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + + diff --git a/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/DefaultTestAutoConfiguration.java b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/DefaultTestAutoConfiguration.java new file mode 100644 index 000000000..68603a022 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/DefaultTestAutoConfiguration.java @@ -0,0 +1,36 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.sleuth.instrument.async; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration; +import org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration; +import org.springframework.context.annotation.Configuration; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@EnableAutoConfiguration( + exclude = { LoadBalancerAutoConfiguration.class, JmxAutoConfiguration.class }) +@Configuration +public @interface DefaultTestAutoConfiguration { + +} diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncIntegrationTests.java b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncIntegrationTests.java similarity index 98% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncIntegrationTests.java rename to tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncIntegrationTests.java index c4f1ec17c..3ca91cd8f 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncIntegrationTests.java +++ b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncIntegrationTests.java @@ -32,7 +32,6 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.sleuth.SpanName; -import org.springframework.cloud.sleuth.instrument.DefaultTestAutoConfiguration; import org.springframework.cloud.sleuth.util.ArrayListSpanReporter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue1212/GH1212Tests.java b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue1212/GH1212Tests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue1212/GH1212Tests.java rename to tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue1212/GH1212Tests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue410/Issue410Tests.java b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue410/Issue410Tests.java similarity index 98% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue410/Issue410Tests.java rename to tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue410/Issue410Tests.java index cb9c35f14..5c41e10b0 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue410/Issue410Tests.java +++ b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue410/Issue410Tests.java @@ -20,6 +20,7 @@ import java.lang.invoke.MethodHandles; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; +import java.util.concurrent.Executors; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.atomic.AtomicReference; @@ -59,7 +60,8 @@ import static org.assertj.core.api.BDDAssertions.then; * @author Marcin Grzejszczak */ @RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.RANDOM_PORT, +@SpringBootTest(classes = { AppConfig.class, Application.class }, + webEnvironment = WebEnvironment.RANDOM_PORT, properties = { "ribbon.eureka.enabled=false", "feign.hystrix.enabled=false" }) public class Issue410Tests { @@ -250,6 +252,11 @@ class AppConfig { return new RestTemplate(); } + @Bean("taskScheduler") + public Executor myScheduler() { + return Executors.newSingleThreadExecutor(); + } + @Bean public Executor poolTaskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue546/Issue546Tests.java b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue546/Issue546Tests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue546/Issue546Tests.java rename to tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/java/org/springframework/cloud/sleuth/instrument/async/issues/issue546/Issue546Tests.java diff --git a/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/resources/application.yml new file mode 100644 index 000000000..f1e4a6a92 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-async-tests/src/test/resources/application.yml @@ -0,0 +1,3 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-feign-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-feign-tests/pom.xml new file mode 100644 index 000000000..184214792 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-feign-tests/pom.xml @@ -0,0 +1,91 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-feign-tests + jar + Spring Cloud Sleuth Feign Instrumentation Tests + Spring Cloud Sleuth Feign Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + + org.springframework.cloud + spring-cloud-starter-netflix-ribbon + + + io.github.openfeign + feign-okhttp + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue307/Issue307Tests.java b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue307/Issue307Tests.java similarity index 97% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue307/Issue307Tests.java rename to tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue307/Issue307Tests.java index 73bb3ccfe..e1dfe6ac4 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue307/Issue307Tests.java +++ b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue307/Issue307Tests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.sleuth.instrument.web.client.feign.issues.issue307; +package org.springframework.cloud.sleuth.instrument.feign.issues.issue307; import java.util.ArrayList; import java.util.List; diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue350/Issue350Tests.java b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue350/Issue350Tests.java similarity index 98% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue350/Issue350Tests.java rename to tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue350/Issue350Tests.java index 33fe3a6c7..46ca2d1ea 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue350/Issue350Tests.java +++ b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue350/Issue350Tests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.sleuth.instrument.web.client.feign.issues.issue350; +package org.springframework.cloud.sleuth.instrument.feign.issues.issue350; import java.util.List; import java.util.concurrent.ExecutionException; diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue362/Issue362Tests.java b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue362/Issue362Tests.java similarity index 98% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue362/Issue362Tests.java rename to tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue362/Issue362Tests.java index 8c4d36864..1cb5db0ff 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue362/Issue362Tests.java +++ b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue362/Issue362Tests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.sleuth.instrument.web.client.feign.issues.issue362; +package org.springframework.cloud.sleuth.instrument.feign.issues.issue362; import java.io.IOException; import java.util.Date; diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue393/Issue393Tests.java b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue393/Issue393Tests.java similarity index 98% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue393/Issue393Tests.java rename to tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue393/Issue393Tests.java index 20669a636..b52bc055c 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue393/Issue393Tests.java +++ b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue393/Issue393Tests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.sleuth.instrument.web.client.feign.issues.issue393; +package org.springframework.cloud.sleuth.instrument.feign.issues.issue393; import java.util.List; import java.util.stream.Collectors; diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue502/Issue502Tests.java b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue502/Issue502Tests.java similarity index 97% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue502/Issue502Tests.java rename to tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue502/Issue502Tests.java index 5f631290c..3279ffb2c 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/issues/issue502/Issue502Tests.java +++ b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue502/Issue502Tests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.sleuth.instrument.web.client.feign.issues.issue502; +package org.springframework.cloud.sleuth.instrument.feign.issues.issue502; import java.io.IOException; import java.nio.charset.Charset; diff --git a/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/resources/application.yml new file mode 100644 index 000000000..af6f809a3 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/resources/application.yml @@ -0,0 +1,17 @@ +hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000 +ribbon: + ConnectTimeout: 3000 + ReadTimeout: 5000 + +exceptionService.ribbon: + MaxAutoRetries: 3 + OkToRetryOnAllOperations: true + ConnectTimeout: 1 + ReadTimeout: 1 + +eureka.client.enabled: false +ribbon.eureka.enabled: false + +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-grpc-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/pom.xml new file mode 100644 index 000000000..ffc5655b4 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/pom.xml @@ -0,0 +1,92 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-grpc-tests + jar + Spring Cloud Sleuth Grpc Instrumentation Tests + Spring Cloud Sleuth Grpc Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + + com.google.guava + guava + 20.0 + test + + + + io.github.lognet + grpc-spring-boot-starter + test + + + io.zipkin.brave + brave-instrumentation-grpc + test + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/GrpcTracingIntegrationTests.java b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/GrpcTracingIntegrationTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/GrpcTracingIntegrationTests.java rename to tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/GrpcTracingIntegrationTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReply.java b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReply.java similarity index 99% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReply.java rename to tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReply.java index d54f51859..e546d5baa 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReply.java +++ b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReply.java @@ -1,5 +1,5 @@ /* - * Copyright 2018-2019 the original author or authors. + * Copyright 2013-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReplyOrBuilder.java b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReplyOrBuilder.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReplyOrBuilder.java rename to tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloReplyOrBuilder.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequest.java b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequest.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequest.java rename to tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequest.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequestOrBuilder.java b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequestOrBuilder.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequestOrBuilder.java rename to tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloRequestOrBuilder.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceGrpc.java b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceGrpc.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceGrpc.java rename to tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceGrpc.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceOuterClass.java b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceOuterClass.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceOuterClass.java rename to tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/grpc/stubs/HelloServiceOuterClass.java diff --git a/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/resources/application.yml new file mode 100644 index 000000000..f1e4a6a92 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-grpc-tests/src/test/resources/application.yml @@ -0,0 +1,3 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/pom.xml new file mode 100644 index 000000000..1c05e01cd --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/pom.xml @@ -0,0 +1,79 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-hystrix-tests + jar + Spring Cloud Sleuth Hystrix Instrumentation Tests + Spring Cloud Sleuth Hystrix Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + test + + + + diff --git a/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/DefaultTestAutoConfiguration.java b/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/DefaultTestAutoConfiguration.java new file mode 100644 index 000000000..15e94f6c8 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/DefaultTestAutoConfiguration.java @@ -0,0 +1,38 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.sleuth.instrument.hystrix; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration; +import org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration; +import org.springframework.context.annotation.Configuration; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@EnableAutoConfiguration( + exclude = { LoadBalancerAutoConfiguration.class, JmxAutoConfiguration.class }) +// ,TraceSpringIntegrationAutoConfiguration.class, +// TraceWebSocketAutoConfiguration.class }) +@Configuration +public @interface DefaultTestAutoConfiguration { + +} diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/HystrixAnnotationsIntegrationTests.java b/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/HystrixAnnotationsIntegrationTests.java similarity index 97% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/HystrixAnnotationsIntegrationTests.java rename to tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/HystrixAnnotationsIntegrationTests.java index fccbe2673..ae709a4b4 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/HystrixAnnotationsIntegrationTests.java +++ b/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/java/org/springframework/cloud/sleuth/instrument/hystrix/HystrixAnnotationsIntegrationTests.java @@ -32,7 +32,6 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.netflix.hystrix.EnableHystrix; -import org.springframework.cloud.sleuth.instrument.DefaultTestAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.annotation.DirtiesContext; diff --git a/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/resources/application.yml new file mode 100644 index 000000000..f1e4a6a92 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-hystrix-tests/src/test/resources/application.yml @@ -0,0 +1,3 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-lettuce-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-lettuce-tests/pom.xml new file mode 100644 index 000000000..1a847c19e --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-lettuce-tests/pom.xml @@ -0,0 +1,80 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-lettuce-tests + jar + Spring Cloud Sleuth Lettuce Instrumentation Tests + Spring Cloud Sleuth Lettuce Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.boot + spring-boot-starter-webflux + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + + io.lettuce + lettuce-core + true + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisAutoConfigurationTests.java b/tests/spring-cloud-sleuth-instrumentation-lettuce-tests/src/test/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisAutoConfigurationTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisAutoConfigurationTests.java rename to tests/spring-cloud-sleuth-instrumentation-lettuce-tests/src/test/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisAutoConfigurationTests.java diff --git a/tests/spring-cloud-sleuth-instrumentation-lettuce-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-lettuce-tests/src/test/resources/application.yml new file mode 100644 index 000000000..f1e4a6a92 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-lettuce-tests/src/test/resources/application.yml @@ -0,0 +1,3 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-messaging-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/pom.xml new file mode 100644 index 000000000..1f8c3f608 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/pom.xml @@ -0,0 +1,144 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-messaging-tests + jar + Spring Cloud Sleuth Messaging Instrumentation Tests + Spring Cloud Sleuth Messaging Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + io.zipkin.brave + brave-instrumentation-spring-rabbit + + + io.zipkin.brave + brave-instrumentation-kafka-clients + + + io.zipkin.brave + brave-instrumentation-kafka-streams + + + io.zipkin.brave + brave-instrumentation-jms + + + javax.jms + javax.jms-api + true + + + org.springframework + spring-jms + true + + + + org.springframework.integration + spring-integration-core + true + + + org.springframework.amqp + spring-rabbit + true + + + org.springframework.kafka + spring-kafka + true + + + org.apache.kafka + kafka-streams + true + + + org.springframework.boot + spring-boot-starter-activemq + test + + + + javax.resource + javax.resource-api + 1.7.1 + test + + + org.apache.activemq + activemq-ra + test + + + org.springframework.boot + spring-boot-starter-websocket + true + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/ITTracingChannelInterceptorTests.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/ITTracingChannelInterceptorTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/ITTracingChannelInterceptorTests.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/ITTracingChannelInterceptorTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/JmsTracingConfigurationTest.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/JmsTracingConfigurationTest.java similarity index 96% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/JmsTracingConfigurationTest.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/JmsTracingConfigurationTest.java index 335f1de27..4c4312094 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/JmsTracingConfigurationTest.java +++ b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/JmsTracingConfigurationTest.java @@ -51,9 +51,6 @@ import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfigura import org.springframework.boot.jms.XAConnectionFactoryWrapper; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.cloud.gateway.config.GatewayAutoConfiguration; -import org.springframework.cloud.gateway.config.GatewayClassPathWarningAutoConfiguration; -import org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jca.support.ResourceAdapterFactoryBean; @@ -69,6 +66,7 @@ import org.springframework.jms.listener.endpoint.JmsMessageEndpointManager; import static org.assertj.core.api.Assertions.assertThat; // inspired by org.springframework.boot.autoconfigure.jms.JmsAutoConfigurationTests + /** * @author Adrian Cole */ @@ -303,9 +301,7 @@ public class JmsTracingConfigurationTest { } @Configuration -@EnableAutoConfiguration(exclude = { GatewayAutoConfiguration.class, - GatewayClassPathWarningAutoConfiguration.class, - EurekaClientAutoConfiguration.class }) +@EnableAutoConfiguration class JmsTestTracingConfiguration { static final String CONTEXT_LEAK = "context.leak"; diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthKafkaStreamsConfigurationTest.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthKafkaStreamsConfigurationTest.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthKafkaStreamsConfigurationTest.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthKafkaStreamsConfigurationTest.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceContextPropagationChannelInterceptorTests.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceContextPropagationChannelInterceptorTests.java similarity index 98% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceContextPropagationChannelInterceptorTests.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceContextPropagationChannelInterceptorTests.java index 1d330d2b7..ad823b785 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceContextPropagationChannelInterceptorTests.java +++ b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceContextPropagationChannelInterceptorTests.java @@ -28,8 +28,8 @@ 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.context.SpringBootTest; +import org.springframework.cloud.sleuth.instrument.util.SpanUtil; import org.springframework.cloud.sleuth.util.ArrayListSpanReporter; -import org.springframework.cloud.sleuth.util.SpanUtil; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.channel.QueueChannel; diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfigurationTests.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfigurationTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfigurationTests.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfigurationTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/CustomExecutorConfig.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/CustomExecutorConfig.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/CustomExecutorConfig.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/CustomExecutorConfig.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloSpringIntegration.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloSpringIntegration.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloSpringIntegration.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloSpringIntegration.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldImpl.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldImpl.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldImpl.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldImpl.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldRestController.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldRestController.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldRestController.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/HelloWorldRestController.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/Issue943Tests.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/Issue943Tests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/Issue943Tests.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/Issue943Tests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/MessagingGateway.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/MessagingGateway.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/MessagingGateway.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/issues/issue_943/MessagingGateway.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/websocket/TraceWebSocketAutoConfigurationTests.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/websocket/TraceWebSocketAutoConfigurationTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/websocket/TraceWebSocketAutoConfigurationTests.java rename to tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/websocket/TraceWebSocketAutoConfigurationTests.java diff --git a/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/util/SpanUtil.java b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/util/SpanUtil.java new file mode 100644 index 000000000..1cc8ac0da --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/instrument/util/SpanUtil.java @@ -0,0 +1,56 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.sleuth.instrument.util; + +/** + * @author Marcin Grzejszczak + * @since + */ +public final class SpanUtil { + + private SpanUtil() { + throw new IllegalStateException("Can't instantiate a utility class"); + } + + static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f' }; + + // Represents given long id as 16-character lower-hex string + public static String idToHex(long id) { + char[] data = new char[16]; + writeHexLong(data, 0, id); + return new String(data); + } + + // Inspired by {@code okio.Buffer.writeLong} + static void writeHexLong(char[] data, int pos, long v) { + writeHexByte(data, pos + 0, (byte) ((v >>> 56L) & 0xff)); + writeHexByte(data, pos + 2, (byte) ((v >>> 48L) & 0xff)); + writeHexByte(data, pos + 4, (byte) ((v >>> 40L) & 0xff)); + writeHexByte(data, pos + 6, (byte) ((v >>> 32L) & 0xff)); + writeHexByte(data, pos + 8, (byte) ((v >>> 24L) & 0xff)); + writeHexByte(data, pos + 10, (byte) ((v >>> 16L) & 0xff)); + writeHexByte(data, pos + 12, (byte) ((v >>> 8L) & 0xff)); + writeHexByte(data, pos + 14, (byte) (v & 0xff)); + } + + static void writeHexByte(char[] data, int pos, byte b) { + data[pos + 0] = HEX_DIGITS[(b >> 4) & 0xf]; + data[pos + 1] = HEX_DIGITS[b & 0xf]; + } + +} diff --git a/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/application.yml new file mode 100644 index 000000000..f1e4a6a92 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/application.yml @@ -0,0 +1,3 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/beans/applicationContext.xml b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/beans/applicationContext.xml new file mode 100644 index 000000000..d7cdd3d19 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/beans/applicationContext.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/logback.xml b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/logback.xml new file mode 100644 index 000000000..a7061973e --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/resources/logback.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/spring-cloud-sleuth-instrumentation-mvc-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/pom.xml new file mode 100644 index 000000000..f464a7995 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/pom.xml @@ -0,0 +1,79 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-mvc-tests + jar + Spring Cloud Sleuth Mvc Instrumentation Tests + Spring Cloud Sleuth Mvc Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.boot + spring-boot-starter-actuator + true + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/AbstractMvcIntegrationTest.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/AbstractMvcIntegrationTest.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/AbstractMvcIntegrationTest.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/AbstractMvcIntegrationTest.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceAsyncIntegrationTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceAsyncIntegrationTests.java similarity index 98% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceAsyncIntegrationTests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceAsyncIntegrationTests.java index 75176a1ef..5ef8d5f8d 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceAsyncIntegrationTests.java +++ b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceAsyncIntegrationTests.java @@ -29,9 +29,9 @@ 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.context.SpringBootTest; import org.springframework.cloud.sleuth.SpanName; -import org.springframework.cloud.sleuth.instrument.DefaultTestAutoConfiguration; import org.springframework.cloud.sleuth.util.ArrayListSpanReporter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -172,7 +172,7 @@ public class TraceAsyncIntegrationTests { this.reporter.clear(); } - @DefaultTestAutoConfiguration + @EnableAutoConfiguration @EnableAsync @Configuration static class TraceAsyncITestConfiguration { diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceCustomFilterResponseInjectorTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceCustomFilterResponseInjectorTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceCustomFilterResponseInjectorTests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceCustomFilterResponseInjectorTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterIntegrationTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterIntegrationTests.java similarity index 99% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterIntegrationTests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterIntegrationTests.java index 2093ed9bf..80187355a 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterIntegrationTests.java +++ b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterIntegrationTests.java @@ -42,8 +42,8 @@ import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.sleuth.instrument.DefaultTestAutoConfiguration; import org.springframework.cloud.sleuth.util.ArrayListSpanReporter; import org.springframework.cloud.sleuth.util.SpanUtil; import org.springframework.context.annotation.Bean; @@ -316,7 +316,7 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest { return "0".equals(mvcResult.getResponse().getHeader(SAMPLED_NAME)); } - @DefaultTestAutoConfiguration + @EnableAutoConfiguration @Configuration protected static class Config { diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationMultipleFiltersTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationMultipleFiltersTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationMultipleFiltersTests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationMultipleFiltersTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationTests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebDisabledTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebDisabledTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebDisabledTests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebDisabledTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfigurationTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfigurationTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfigurationTests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfigurationTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebAsyncClientAutoConfigurationTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebAsyncClientAutoConfigurationTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebAsyncClientAutoConfigurationTests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebAsyncClientAutoConfigurationTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/exceptionresolver/Issue585Tests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/exceptionresolver/Issue585Tests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/exceptionresolver/Issue585Tests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/exceptionresolver/Issue585Tests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469Tests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469Tests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469Tests.java rename to tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/view/Issue469Tests.java diff --git a/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/util/SpanUtil.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/util/SpanUtil.java new file mode 100644 index 000000000..fad18d7a3 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/util/SpanUtil.java @@ -0,0 +1,56 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.sleuth.util; + +/** + * @author Marcin Grzejszczak + * @since + */ +public final class SpanUtil { + + private SpanUtil() { + throw new IllegalStateException("Can't instantiate a utility class"); + } + + static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f' }; + + // Represents given long id as 16-character lower-hex string + public static String idToHex(long id) { + char[] data = new char[16]; + writeHexLong(data, 0, id); + return new String(data); + } + + // Inspired by {@code okio.Buffer.writeLong} + static void writeHexLong(char[] data, int pos, long v) { + writeHexByte(data, pos + 0, (byte) ((v >>> 56L) & 0xff)); + writeHexByte(data, pos + 2, (byte) ((v >>> 48L) & 0xff)); + writeHexByte(data, pos + 4, (byte) ((v >>> 40L) & 0xff)); + writeHexByte(data, pos + 6, (byte) ((v >>> 32L) & 0xff)); + writeHexByte(data, pos + 8, (byte) ((v >>> 24L) & 0xff)); + writeHexByte(data, pos + 10, (byte) ((v >>> 16L) & 0xff)); + writeHexByte(data, pos + 12, (byte) ((v >>> 8L) & 0xff)); + writeHexByte(data, pos + 14, (byte) (v & 0xff)); + } + + static void writeHexByte(char[] data, int pos, byte b) { + data[pos + 0] = HEX_DIGITS[(b >> 4) & 0xf]; + data[pos + 1] = HEX_DIGITS[b & 0xf]; + } + +} diff --git a/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/resources/application.yml new file mode 100644 index 000000000..f1e4a6a92 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/resources/application.yml @@ -0,0 +1,3 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-reactor-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/pom.xml new file mode 100644 index 000000000..c8a2a8c94 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/pom.xml @@ -0,0 +1,89 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-reactor-tests + jar + Spring Cloud Sleuth Reactor Instrumentation Tests + Spring Cloud Sleuth Reactor Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.boot + spring-boot-starter-webflux + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + io.projectreactor + reactor-core + true + + + io.projectreactor.netty + reactor-netty + true + + + org.reactivestreams + reactive-streams + true + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/Issue866Configuration.java b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/Issue866Configuration.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/Issue866Configuration.java rename to tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/Issue866Configuration.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriberTests.java b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriberTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriberTests.java rename to tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/ScopePassingSpanSubscriberTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java rename to tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java diff --git a/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/TraceReactorAutoConfigurationAccessorConfiguration.java b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/TraceReactorAutoConfigurationAccessorConfiguration.java new file mode 100644 index 000000000..1ef6662e4 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/TraceReactorAutoConfigurationAccessorConfiguration.java @@ -0,0 +1,52 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.sleuth.instrument.reactor; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.springframework.context.ConfigurableApplicationContext; + +/** + * @author Marcin Grzejszczak + */ +public final class TraceReactorAutoConfigurationAccessorConfiguration { + + private TraceReactorAutoConfigurationAccessorConfiguration() { + throw new IllegalStateException("Can't instantiate a utility class"); + } + + private static final Log log = LogFactory + .getLog(TraceReactorAutoConfigurationAccessorConfiguration.class); + + public static void close() { + if (log.isTraceEnabled()) { + log.trace("Cleaning up hooks"); + } + new TraceReactorAutoConfiguration.TraceReactorConfiguration().cleanupHooks(); + } + + public static void setup(ConfigurableApplicationContext context) { + if (log.isTraceEnabled()) { + log.trace("Setting up hooks"); + } + TraceReactorAutoConfiguration.TraceReactorConfiguration + .traceHookRegisteringBeanDefinitionRegistryPostProcessor(context) + .setupHooks(context); + } + +} diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/FlatMapTests.java b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/FlatMapTests.java similarity index 98% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/FlatMapTests.java rename to tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/FlatMapTests.java index ac52b464d..787e807df 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/FlatMapTests.java +++ b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/FlatMapTests.java @@ -37,7 +37,6 @@ import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.test.rule.OutputCapture; -import org.springframework.cloud.sleuth.DisableWebFluxSecurity; import org.springframework.cloud.sleuth.instrument.reactor.Issue866Configuration; import org.springframework.cloud.sleuth.instrument.reactor.TraceReactorAutoConfigurationAccessorConfiguration; import org.springframework.cloud.sleuth.util.ArrayListSpanReporter; @@ -159,7 +158,6 @@ public class FlatMapTests { @Configuration @EnableAutoConfiguration - @DisableWebFluxSecurity static class TestConfiguration { brave.Span spanInFoo; diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/RequestSender.java b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/RequestSender.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/RequestSender.java rename to tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/sample/RequestSender.java diff --git a/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/resources/application.yml new file mode 100644 index 000000000..f1e4a6a92 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/resources/application.yml @@ -0,0 +1,3 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-rxjava-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-rxjava-tests/pom.xml new file mode 100644 index 000000000..2eb6ab71a --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-rxjava-tests/pom.xml @@ -0,0 +1,75 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-rxjava-tests + jar + Spring Cloud Sleuth RxJava Instrumentation Tests + Spring Cloud Sleuth RxJava Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + io.reactivex + rxjava + true + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaSchedulersHookTests.java b/tests/spring-cloud-sleuth-instrumentation-rxjava-tests/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaSchedulersHookTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaSchedulersHookTests.java rename to tests/spring-cloud-sleuth-instrumentation-rxjava-tests/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaSchedulersHookTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaTests.java b/tests/spring-cloud-sleuth-instrumentation-rxjava-tests/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaTests.java rename to tests/spring-cloud-sleuth-instrumentation-rxjava-tests/src/test/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaTests.java diff --git a/tests/spring-cloud-sleuth-instrumentation-rxjava-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-rxjava-tests/src/test/resources/application.yml new file mode 100644 index 000000000..3739ee3ab --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-rxjava-tests/src/test/resources/application.yml @@ -0,0 +1,6 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE + +# comma separated list of matchers +spring.sleuth.rxjava.schedulers.ignoredthreads: HystixMetricPoller,^MyCustomThread.*$,^RxComputation.*$ \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-scheduling-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-scheduling-tests/pom.xml new file mode 100644 index 000000000..db439b406 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-scheduling-tests/pom.xml @@ -0,0 +1,70 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-scheduling-tests + jar + Spring Cloud Sleuth Scheduling Instrumentation Tests + Spring Cloud Sleuth Scheduling Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java b/tests/spring-cloud-sleuth-instrumentation-scheduling-tests/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java similarity index 97% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java rename to tests/spring-cloud-sleuth-instrumentation-scheduling-tests/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java index 95a94f1f6..61d3a25a3 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java +++ b/tests/spring-cloud-sleuth-instrumentation-scheduling-tests/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java @@ -19,8 +19,6 @@ package org.springframework.cloud.sleuth.instrument.scheduling; import java.util.AbstractMap; import java.util.concurrent.atomic.AtomicBoolean; -import javax.annotation.concurrent.NotThreadSafe; - import brave.Span; import brave.Tracing; import brave.sampler.Sampler; @@ -32,8 +30,8 @@ import org.junit.runner.RunWith; import zipkin2.reporter.Reporter; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.sleuth.instrument.DefaultTestAutoConfiguration; import org.springframework.cloud.sleuth.util.ArrayListSpanReporter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -49,7 +47,6 @@ import static org.awaitility.Awaitility.await; @RunWith(SpringRunner.class) @SpringBootTest(classes = { ScheduledTestConfiguration.class }) @DirtiesContext -@NotThreadSafe public class TracingOnScheduledTests { @Autowired @@ -143,7 +140,7 @@ public class TracingOnScheduledTests { } @Configuration -@DefaultTestAutoConfiguration +@EnableAutoConfiguration @EnableScheduling class ScheduledTestConfiguration { diff --git a/tests/spring-cloud-sleuth-instrumentation-scheduling-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-scheduling-tests/src/test/resources/application.yml new file mode 100644 index 000000000..fcce7321b --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-scheduling-tests/src/test/resources/application.yml @@ -0,0 +1,5 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE + +spring.sleuth.scheduled.skipPattern: "^org.*TestBeanWithScheduledMethodToBeIgnored$" \ No newline at end of file diff --git a/tests/spring-cloud-sleuth-instrumentation-webflux-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/pom.xml new file mode 100644 index 000000000..5c60e2bb0 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/pom.xml @@ -0,0 +1,84 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-webflux-tests + jar + Spring Cloud Sleuth WebFlux Instrumentation Tests + Spring Cloud Sleuth WebFlux Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.boot + spring-boot-starter-actuator + true + + + org.springframework.boot + spring-boot-starter-webflux + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + org.apache.commons + commons-lang3 + 3.8.1 + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/GH1102Tests.java b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/GH1102Tests.java similarity index 98% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/GH1102Tests.java rename to tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/GH1102Tests.java index 05663eb9f..e76037cd3 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/GH1102Tests.java +++ b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/GH1102Tests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.sleuth.instrument.web.client; +package org.springframework.cloud.sleuth.instrument.web; import brave.ScopedSpan; import brave.Tracer; diff --git a/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxTests.java b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxTests.java new file mode 100644 index 000000000..f94d74e30 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxTests.java @@ -0,0 +1,204 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.sleuth.instrument.web; + +import java.util.List; +import java.util.stream.Collectors; + +import brave.Span; +import brave.Tracer; +import brave.sampler.Sampler; +import org.awaitility.Awaitility; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.sleuth.instrument.web.client.TraceWebClientAutoConfiguration; +import org.springframework.cloud.sleuth.util.ArrayListSpanReporter; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.reactive.function.client.ClientResponse; +import org.springframework.web.reactive.function.client.WebClient; + +import static org.assertj.core.api.BDDAssertions.then; + +public class TraceWebFluxTests { + + public static final String EXPECTED_TRACE_ID = "b919095138aa4c6e"; + + @Test + public void should_instrument_web_filter() throws Exception { + // setup + ConfigurableApplicationContext context = new SpringApplicationBuilder( + TraceWebFluxTests.Config.class) + .web(WebApplicationType.REACTIVE) + .properties("server.port=0", "spring.jmx.enabled=false", + "spring.sleuth.web.skipPattern=/skipped", + "spring.application.name=TraceWebFluxTests", + "security.basic.enabled=false", + "management.security.enabled=false") + .run(); + ArrayListSpanReporter accumulator = context.getBean(ArrayListSpanReporter.class); + int port = context.getBean(Environment.class).getProperty("local.server.port", + Integer.class); + Controller2 controller2 = context.getBean(Controller2.class); + clean(accumulator, controller2); + + // when + ClientResponse response = whenRequestIsSent(port); + // then + thenSpanWasReportedWithTags(accumulator, response); + clean(accumulator, controller2); + + // when + ClientResponse nonSampledResponse = whenNonSampledRequestIsSent(port); + // then + thenNoSpanWasReported(accumulator, nonSampledResponse, controller2); + accumulator.clear(); + + // when + ClientResponse skippedPatternResponse = whenRequestIsSentToSkippedPattern(port); + // then + thenNoSpanWasReported(accumulator, skippedPatternResponse, controller2); + + // cleanup + context.close(); + } + + private void clean(ArrayListSpanReporter accumulator, Controller2 controller2) { + accumulator.clear(); + controller2.span = null; + } + + private void thenSpanWasReportedWithTags(ArrayListSpanReporter accumulator, + ClientResponse response) { + Awaitility.await() + .untilAsserted(() -> then(response.statusCode().value()).isEqualTo(200)); + List spans = accumulator.getSpans().stream() + .filter(span -> "get /api/c2/{id}".equals(span.name())) + .collect(Collectors.toList()); + then(spans).hasSize(1); + then(spans.get(0).name()).isEqualTo("get /api/c2/{id}"); + then(spans.get(0).tags()).containsEntry("mvc.controller.method", "successful") + .containsEntry("mvc.controller.class", "Controller2"); + } + + private void thenNoSpanWasReported(ArrayListSpanReporter accumulator, + ClientResponse response, Controller2 controller2) { + Awaitility.await().untilAsserted(() -> { + then(response.statusCode().value()).isEqualTo(200); + then(accumulator.getSpans()).isEmpty(); + }); + then(controller2.span).isNotNull(); + then(controller2.span.context().traceIdString()).isEqualTo(EXPECTED_TRACE_ID); + } + + private ClientResponse whenRequestIsSent(int port) { + Mono exchange = WebClient.create().get() + .uri("http://localhost:" + port + "/api/c2/10").exchange(); + return exchange.block(); + } + + private ClientResponse whenRequestIsSentToSkippedPattern(int port) { + Mono exchange = WebClient.create().get() + .uri("http://localhost:" + port + "/skipped").exchange(); + return exchange.block(); + } + + private ClientResponse whenNonSampledRequestIsSent(int port) { + Mono exchange = WebClient.create().get() + .uri("http://localhost:" + port + "/api/c2/10") + .header("X-B3-SpanId", EXPECTED_TRACE_ID) + .header("X-B3-TraceId", EXPECTED_TRACE_ID).header("X-B3-Sampled", "0") + .exchange(); + return exchange.block(); + } + + @Configuration + @EnableAutoConfiguration(exclude = { TraceWebClientAutoConfiguration.class }) + static class Config { + + private static final Logger log = LoggerFactory.getLogger(Config.class); + + @Bean + WebClient webClient() { + return WebClient.create(); + } + + @Bean + Sampler sampler() { + return Sampler.ALWAYS_SAMPLE; + } + + @Bean + ArrayListSpanReporter spanReporter() { + return new ArrayListSpanReporter() { + @Override + public List getSpans() { + List spans = super.getSpans(); + log.info("Reported the following spans: \n\n" + spans); + return spans; + } + }; + } + + @Bean + Controller2 controller2(Tracer tracer) { + return new Controller2(tracer); + } + } + + @RestController + static class Controller2 { + + private final Tracer tracer; + + Span span; + + Controller2(Tracer tracer) { + this.tracer = tracer; + } + + @GetMapping("/api/c2/{id}") + public Flux successful(@PathVariable Long id) { + // #786 + then(MDC.get("X-B3-TraceId")).isNotEmpty(); + this.span = this.tracer.currentSpan(); + return Flux.just(id.toString()); + } + + @GetMapping("/skipped") + public Flux skipped() { + Boolean sampled = this.tracer.currentSpan().context().sampled(); + then(sampled).isFalse(); + return Flux.just(sampled.toString()); + } + + } + +} diff --git a/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/util/SpanUtil.java b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/util/SpanUtil.java new file mode 100644 index 000000000..fad18d7a3 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/java/org/springframework/cloud/sleuth/util/SpanUtil.java @@ -0,0 +1,56 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.sleuth.util; + +/** + * @author Marcin Grzejszczak + * @since + */ +public final class SpanUtil { + + private SpanUtil() { + throw new IllegalStateException("Can't instantiate a utility class"); + } + + static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f' }; + + // Represents given long id as 16-character lower-hex string + public static String idToHex(long id) { + char[] data = new char[16]; + writeHexLong(data, 0, id); + return new String(data); + } + + // Inspired by {@code okio.Buffer.writeLong} + static void writeHexLong(char[] data, int pos, long v) { + writeHexByte(data, pos + 0, (byte) ((v >>> 56L) & 0xff)); + writeHexByte(data, pos + 2, (byte) ((v >>> 48L) & 0xff)); + writeHexByte(data, pos + 4, (byte) ((v >>> 40L) & 0xff)); + writeHexByte(data, pos + 6, (byte) ((v >>> 32L) & 0xff)); + writeHexByte(data, pos + 8, (byte) ((v >>> 24L) & 0xff)); + writeHexByte(data, pos + 10, (byte) ((v >>> 16L) & 0xff)); + writeHexByte(data, pos + 12, (byte) ((v >>> 8L) & 0xff)); + writeHexByte(data, pos + 14, (byte) (v & 0xff)); + } + + static void writeHexByte(char[] data, int pos, byte b) { + data[pos + 0] = HEX_DIGITS[(b >> 4) & 0xf]; + data[pos + 1] = HEX_DIGITS[b & 0xf]; + } + +} diff --git a/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/resources/logback.xml b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/resources/logback.xml new file mode 100644 index 000000000..17279c080 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-webflux-tests/src/test/resources/logback.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/spring-cloud-sleuth-instrumentation-zuul-tests/pom.xml b/tests/spring-cloud-sleuth-instrumentation-zuul-tests/pom.xml new file mode 100644 index 000000000..826909680 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-zuul-tests/pom.xml @@ -0,0 +1,74 @@ + + + + + 4.0.0 + + spring-cloud-sleuth-instrumentation-zuul-tests + jar + Spring Cloud Sleuth Zuul Instrumentation Tests + Spring Cloud Sleuth Zuul Instrumentation Tests + + + org.springframework.cloud + spring-cloud-sleuth-tests + 2.2.0.BUILD-SNAPSHOT + .. + + + + true + + + + + + + maven-deploy-plugin + + true + + + + + + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.cloud + spring-cloud-starter-netflix-zuul + + + org.springframework.boot + spring-boot-starter-test + test + + + org.awaitility + awaitility + test + + + + diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/TraceZuulIntegrationTests.java b/tests/spring-cloud-sleuth-instrumentation-zuul-tests/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/TraceZuulIntegrationTests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/TraceZuulIntegrationTests.java rename to tests/spring-cloud-sleuth-instrumentation-zuul-tests/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/TraceZuulIntegrationTests.java diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/issues/issue634/Issue634Tests.java b/tests/spring-cloud-sleuth-instrumentation-zuul-tests/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/issues/issue634/Issue634Tests.java similarity index 100% rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/issues/issue634/Issue634Tests.java rename to tests/spring-cloud-sleuth-instrumentation-zuul-tests/src/test/java/org/springframework/cloud/sleuth/instrument/zuul/issues/issue634/Issue634Tests.java diff --git a/tests/spring-cloud-sleuth-instrumentation-zuul-tests/src/test/resources/application.yml b/tests/spring-cloud-sleuth-instrumentation-zuul-tests/src/test/resources/application.yml new file mode 100644 index 000000000..f1e4a6a92 --- /dev/null +++ b/tests/spring-cloud-sleuth-instrumentation-zuul-tests/src/test/resources/application.yml @@ -0,0 +1,3 @@ +logging.level.org.springframework.cloud: DEBUG +logging.level.com.netflix.discovery.InstanceInfoReplicator: ERROR +logging.level.org.springframework.cloud.sleuth.instrument.web.client.feign: TRACE \ No newline at end of file