diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/metric/TraceMetricsAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/metric/TraceMetricsAutoConfiguration.java index 01dd19970..474476948 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/metric/TraceMetricsAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/metric/TraceMetricsAutoConfiguration.java @@ -16,25 +16,16 @@ package org.springframework.cloud.sleuth.metric; -import java.lang.invoke.MethodHandles; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.boot.autoconfigure.condition.ConditionOutcome; +import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.MeterRegistry; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; -import org.springframework.boot.autoconfigure.condition.SpringBootCondition; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ConditionContext; -import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; -import org.springframework.core.type.AnnotatedTypeMetadata; - -import io.micrometer.core.instrument.Counter; -import io.micrometer.core.instrument.MeterRegistry; /** * {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration Auto-configuration} @@ -44,7 +35,7 @@ import io.micrometer.core.instrument.MeterRegistry; * @since 1.0.0 */ @Configuration -@Conditional(TraceMetricsAutoConfiguration.PickMetricIfMetricsIsMissing.class) +@ConditionalOnProperty(value = "spring.sleuth.metric.enabled", matchIfMissing = true) @EnableConfigurationProperties public class TraceMetricsAutoConfiguration { @@ -55,11 +46,11 @@ public class TraceMetricsAutoConfiguration { } @Configuration - @ConditionalOnClass(Counter.class) + @ConditionalOnClass(MeterRegistry.class) @ConditionalOnMissingBean(SpanMetricReporter.class) protected static class CounterServiceSpanReporterConfig { @Bean - @ConditionalOnBean(Counter.class) + @ConditionalOnBean(MeterRegistry.class) public SpanMetricReporter spanReporterCounterService(SleuthMetricProperties sleuthMetricProperties, MeterRegistry meterRegistry) { Counter acceptedSpansCounter = Counter.builder( @@ -70,47 +61,16 @@ public class TraceMetricsAutoConfiguration { } @Bean - @ConditionalOnMissingBean(Counter.class) + @ConditionalOnMissingBean(MeterRegistry.class) public SpanMetricReporter noOpSpanReporterCounterService() { return new NoOpSpanMetricReporter(); } } @Bean - @ConditionalOnMissingClass("org.springframework.boot.actuate.metrics.CounterService") + @ConditionalOnMissingClass("io.micrometer.core.instrument.MeterRegistry") @ConditionalOnMissingBean(SpanMetricReporter.class) public SpanMetricReporter noOpSpanReporterCounterService() { return new NoOpSpanMetricReporter(); } - - // TODO: Remove this - static class PickMetricIfMetricsIsMissing extends SpringBootCondition { - - private static final Log log = LogFactory.getLog(MethodHandles.lookup().lookupClass()); - - static final String DEPRECATED_SPRING_SLEUTH_METRICS_ENABLED = "spring.sleuth.metrics.enabled"; - static final String SPRING_SLEUTH_METRIC_ENABLED = "spring.sleuth.metric.enabled"; - - @Override - public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) { - Boolean oldValue = context.getEnvironment().getProperty(DEPRECATED_SPRING_SLEUTH_METRICS_ENABLED, Boolean.class); - Boolean newValue = context.getEnvironment().getProperty(SPRING_SLEUTH_METRIC_ENABLED, Boolean.class); - if (oldValue != null) { - log.warn("You're using an old version of the metrics property. Instead of using [" + - DEPRECATED_SPRING_SLEUTH_METRICS_ENABLED + "] please use [" + SPRING_SLEUTH_METRIC_ENABLED + "]"); - return matchCondition(oldValue, DEPRECATED_SPRING_SLEUTH_METRICS_ENABLED); - } - if (newValue != null) { - return matchCondition(newValue, SPRING_SLEUTH_METRIC_ENABLED); - } - return ConditionOutcome.match("No property was passed - assuming that metrics are enabled."); - } - - private ConditionOutcome matchCondition(Boolean value, String property) { - if (Boolean.TRUE.equals(value)) { - return ConditionOutcome.match(); - } - return ConditionOutcome.noMatch("Property [" + property + "] is set to false."); - } - } } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/DefaultTestAutoConfiguration.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/DefaultTestAutoConfiguration.java index aa20c8631..91c0eca1a 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/DefaultTestAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/DefaultTestAutoConfiguration.java @@ -11,14 +11,12 @@ import org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfigurati import org.springframework.cloud.sleuth.instrument.messaging.TraceSpringIntegrationAutoConfiguration; import org.springframework.cloud.sleuth.instrument.messaging.websocket.TraceWebSocketAutoConfiguration; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.EnableAspectJAutoProxy; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @EnableAutoConfiguration(exclude = { LoadBalancerAutoConfiguration.class, JmxAutoConfiguration.class, TraceSpringIntegrationAutoConfiguration.class, TraceWebSocketAutoConfiguration.class }) -@EnableAspectJAutoProxy(proxyTargetClass = true) @Configuration public @interface DefaultTestAutoConfiguration { } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java index 8542aed4a..d8a4d3286 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TracingOnScheduledTests.java @@ -18,8 +18,7 @@ package org.springframework.cloud.sleuth.instrument.scheduling; import java.util.concurrent.atomic.AtomicBoolean; -import org.hamcrest.Matchers; -import org.junit.Ignore; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -30,6 +29,7 @@ import org.springframework.cloud.sleuth.sampler.AlwaysSampler; import org.springframework.cloud.sleuth.trace.TestSpanContextHolder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.test.context.junit4.SpringRunner; @@ -46,40 +46,49 @@ public class TracingOnScheduledTests { @Autowired TestBeanWithScheduledMethodToBeIgnored beanWithScheduledMethodToBeIgnored; + @Before + public void setup() { + this.beanWithScheduledMethod.clear(); + this.beanWithScheduledMethodToBeIgnored.clear(); + } + @Test public void should_have_span_set_after_scheduled_method_has_been_executed() { - await().atMost(5, SECONDS).untilAsserted(this::spanIsSetOnAScheduledMethod); + await().atMost( 10, SECONDS).untilAsserted(() -> { + then(this.beanWithScheduledMethod.isExecuted()).isTrue(); + spanIsSetOnAScheduledMethod(); + }); } @Test public void should_have_a_new_span_set_each_time_a_scheduled_method_has_been_executed() { final Span firstSpan = this.beanWithScheduledMethod.getSpan(); - await().atMost(5, SECONDS).untilAsserted(() -> differentSpanHasBeenSetThan(firstSpan)); + await().atMost(5, SECONDS).untilAsserted(() -> { + then(this.beanWithScheduledMethod.isExecuted()).isTrue(); + differentSpanHasBeenSetThan(firstSpan); + }); } - // TODO: Fix this @Test - @Ignore("doesn't work with Boot 2.0") - public void should_not_span_in_the_scheduled_class_that_matches_skip_pattern() + public void should_not_create_span_in_the_scheduled_class_that_matches_skip_pattern() throws Exception { - await().atMost(5, SECONDS).untilAtomic( - this.beanWithScheduledMethodToBeIgnored.isExecuted(), Matchers.is(true)); - then(this.beanWithScheduledMethodToBeIgnored.getSpan()).isNull(); + await().atMost(5, SECONDS).untilAsserted(() -> { + then(this.beanWithScheduledMethodToBeIgnored.isExecuted()).isTrue(); + then(this.beanWithScheduledMethodToBeIgnored.getSpan()).isNull(); + }); } - private Runnable spanIsSetOnAScheduledMethod() { - return () -> { - Span storedSpan = TracingOnScheduledTests.this.beanWithScheduledMethod - .getSpan(); - then(storedSpan).isNotNull(); - then(storedSpan.getTraceId()).isNotNull(); - then(storedSpan).hasATag("class", "TestBeanWithScheduledMethod"); - then(storedSpan).hasATag("method", "scheduledMethod"); - }; + private void spanIsSetOnAScheduledMethod() { + Span storedSpan = TracingOnScheduledTests.this.beanWithScheduledMethod + .getSpan(); + then(storedSpan).isNotNull(); + then(storedSpan.getTraceId()).isNotNull(); + then(storedSpan).hasATag("class", "TestBeanWithScheduledMethod"); + then(storedSpan).hasATag("method", "scheduledMethod"); } - private Runnable differentSpanHasBeenSetThan(final Span spanToCompare) { - return () -> then(TracingOnScheduledTests.this.beanWithScheduledMethod.getSpan()) + private void differentSpanHasBeenSetThan(final Span spanToCompare) { + then(TracingOnScheduledTests.this.beanWithScheduledMethod.getSpan()) .isNotEqualTo(spanToCompare); } @@ -87,6 +96,7 @@ public class TracingOnScheduledTests { @Configuration @DefaultTestAutoConfiguration +@EnableScheduling class ScheduledTestConfiguration { @Bean @@ -110,14 +120,25 @@ class TestBeanWithScheduledMethod { Span span; + AtomicBoolean executed = new AtomicBoolean(false); + @Scheduled(fixedDelay = 1L) public void scheduledMethod() { this.span = TestSpanContextHolder.getCurrentSpan(); + this.executed.set(true); } public Span getSpan() { return this.span; } + + public AtomicBoolean isExecuted() { + return this.executed; + } + + public void clear() { + this.executed.set(false); + } } class TestBeanWithScheduledMethodToBeIgnored { @@ -138,4 +159,8 @@ class TestBeanWithScheduledMethodToBeIgnored { public AtomicBoolean isExecuted() { return this.executed; } + + public void clear() { + this.executed.set(false); + } } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/SpringDataInstrumentationTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/SpringDataInstrumentationTests.java index 62fe72c36..71d51a8ae 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/SpringDataInstrumentationTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/SpringDataInstrumentationTests.java @@ -23,6 +23,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.sleuth.Sampler; import org.springframework.cloud.sleuth.Tracer; @@ -57,12 +58,10 @@ import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then; /** * @author Marcin Grzejszczak */ -// TODO: Fix this @RunWith(SpringRunner.class) @SpringBootTest(classes = ReservationServiceApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @DirtiesContext @ActiveProfiles("data") -@Ignore("doesn't work with Boot 2.0") public class SpringDataInstrumentationTests { @Autowired @@ -108,7 +107,7 @@ public class SpringDataInstrumentationTests { } @Configuration -@EnableAutoConfiguration +@EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class) @EntityScan(basePackageClasses = Reservation.class) class ReservationServiceApplication { diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/metric/TraceMetricsAutoConfigurationTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/metric/TraceMetricsAutoConfigurationTests.java deleted file mode 100644 index 237ba14b6..000000000 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/metric/TraceMetricsAutoConfigurationTests.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2013-2017 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 - * - * http://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.metric; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.BDDMockito; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.boot.autoconfigure.condition.ConditionOutcome; -import org.springframework.cloud.sleuth.metric.TraceMetricsAutoConfiguration.PickMetricIfMetricsIsMissing; -import org.springframework.context.annotation.ConditionContext; -import org.springframework.core.type.AnnotatedTypeMetadata; -import org.springframework.mock.env.MockEnvironment; - -import static org.assertj.core.api.BDDAssertions.then; -import static org.springframework.cloud.sleuth.metric.TraceMetricsAutoConfiguration.PickMetricIfMetricsIsMissing.DEPRECATED_SPRING_SLEUTH_METRICS_ENABLED; -import static org.springframework.cloud.sleuth.metric.TraceMetricsAutoConfiguration.PickMetricIfMetricsIsMissing.SPRING_SLEUTH_METRIC_ENABLED; - -/** - * @author Marcin Grzejszczak - */ -@RunWith(MockitoJUnitRunner.class) -public class TraceMetricsAutoConfigurationTests { - - @Mock ConditionContext conditionContext; - @Mock AnnotatedTypeMetadata annotatedTypeMetadata; - MockEnvironment mockEnvironment = new MockEnvironment(); - - PickMetricIfMetricsIsMissing condition = new PickMetricIfMetricsIsMissing(); - - @Before - public void setup() { - BDDMockito.given(this.conditionContext.getEnvironment()).willReturn(this.mockEnvironment); - } - - @Test - public void should_turn_on_the_feature_when_no_explicit_one_was_provided() { - ConditionOutcome outcome = this.condition.getMatchOutcome(this.conditionContext, this.annotatedTypeMetadata); - - then(outcome.isMatch()).isTrue(); - } - - @Test - public void should_turn_on_the_feature_when_deprecated_property_is_enabled() { - this.mockEnvironment.setProperty(DEPRECATED_SPRING_SLEUTH_METRICS_ENABLED, "true"); - - ConditionOutcome outcome = this.condition.getMatchOutcome(this.conditionContext, this.annotatedTypeMetadata); - - then(outcome.isMatch()).isTrue(); - } - - @Test - public void should_turn_off_the_feature_when_deprecated_property_is_disabled() { - this.mockEnvironment.setProperty(DEPRECATED_SPRING_SLEUTH_METRICS_ENABLED, "false"); - - ConditionOutcome outcome = this.condition.getMatchOutcome(this.conditionContext, this.annotatedTypeMetadata); - - then(outcome.isMatch()).isFalse(); - } - - @Test - public void should_turn_on_the_feature_when_property_is_enabled() { - this.mockEnvironment.setProperty(SPRING_SLEUTH_METRIC_ENABLED, "true"); - - ConditionOutcome outcome = this.condition.getMatchOutcome(this.conditionContext, this.annotatedTypeMetadata); - - then(outcome.isMatch()).isTrue(); - } - - @Test - public void should_turn_off_the_feature_when_property_is_disabled() { - this.mockEnvironment.setProperty(SPRING_SLEUTH_METRIC_ENABLED, "false"); - - ConditionOutcome outcome = this.condition.getMatchOutcome(this.conditionContext, this.annotatedTypeMetadata); - - then(outcome.isMatch()).isFalse(); - } - - @Test - public void should_turn_on_the_feature_when_new_property_is_disabled_and_old_is_enabled() { - this.mockEnvironment.setProperty(DEPRECATED_SPRING_SLEUTH_METRICS_ENABLED, "true"); - this.mockEnvironment.setProperty(SPRING_SLEUTH_METRIC_ENABLED, "false"); - - ConditionOutcome outcome = this.condition.getMatchOutcome(this.conditionContext, this.annotatedTypeMetadata); - - then(outcome.isMatch()).isTrue(); - } - - @Test - public void should_turn_off_the_feature_when_new_property_is_disabled_and_old_is_enabled() { - this.mockEnvironment.setProperty(DEPRECATED_SPRING_SLEUTH_METRICS_ENABLED, "false"); - this.mockEnvironment.setProperty(SPRING_SLEUTH_METRIC_ENABLED, "true"); - - ConditionOutcome outcome = this.condition.getMatchOutcome(this.conditionContext, this.annotatedTypeMetadata); - - then(outcome.isMatch()).isFalse(); - } -} \ No newline at end of file diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/main/java/sample/SampleMessagingApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/main/java/sample/SampleMessagingApplication.java index f084789b1..14c067d29 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/main/java/sample/SampleMessagingApplication.java +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/main/java/sample/SampleMessagingApplication.java @@ -31,7 +31,7 @@ import org.springframework.web.client.RestTemplate; * @author Spencer Gibb */ @SpringBootApplication -@EnableAspectJAutoProxy(proxyTargetClass = true) + @EnableAsync @IntegrationComponentScan @RestController diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java index 3d7d5b6f3..09f781b45 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java @@ -27,7 +27,7 @@ import org.springframework.web.client.RestTemplate; * @author Spencer Gibb */ @SpringBootApplication -@EnableAspectJAutoProxy(proxyTargetClass = true) + @EnableAsync public class SampleSleuthApplication { diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin2/src/main/java/sample/SampleZipkinApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin2/src/main/java/sample/SampleZipkinApplication.java index df5a11112..3270650d2 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin2/src/main/java/sample/SampleZipkinApplication.java +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin2/src/main/java/sample/SampleZipkinApplication.java @@ -32,7 +32,7 @@ import zipkin2.reporter.Reporter; * @author Spencer Gibb */ @SpringBootApplication -@EnableAspectJAutoProxy(proxyTargetClass = true) + @EnableAsync public class SampleZipkinApplication { diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/src/main/java/sample/SampleSleuthApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/src/main/java/sample/SampleSleuthApplication.java index 3d7d5b6f3..09f781b45 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/src/main/java/sample/SampleSleuthApplication.java +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/src/main/java/sample/SampleSleuthApplication.java @@ -27,7 +27,7 @@ import org.springframework.web.client.RestTemplate; * @author Spencer Gibb */ @SpringBootApplication -@EnableAspectJAutoProxy(proxyTargetClass = true) + @EnableAsync public class SampleSleuthApplication { diff --git a/spring-cloud-sleuth-stream/pom.xml b/spring-cloud-sleuth-stream/pom.xml index 931784a2d..ddd05d433 100644 --- a/spring-cloud-sleuth-stream/pom.xml +++ b/spring-cloud-sleuth-stream/pom.xml @@ -67,6 +67,11 @@ awaitility test + + io.micrometer + micrometer-core + test + diff --git a/spring-cloud-sleuth-stream/src/test/java/org/springframework/cloud/sleuth/stream/StreamSpanListenerTests.java b/spring-cloud-sleuth-stream/src/test/java/org/springframework/cloud/sleuth/stream/StreamSpanListenerTests.java index da9b20fb1..d458c44af 100644 --- a/spring-cloud-sleuth-stream/src/test/java/org/springframework/cloud/sleuth/stream/StreamSpanListenerTests.java +++ b/spring-cloud-sleuth-stream/src/test/java/org/springframework/cloud/sleuth/stream/StreamSpanListenerTests.java @@ -16,20 +16,17 @@ package org.springframework.cloud.sleuth.stream; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.atLeastOnce; -import static org.mockito.Mockito.verify; - import java.util.Collection; +import java.util.Optional; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import javax.annotation.PostConstruct; import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.awaitility.Awaitility; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -59,14 +56,18 @@ import org.springframework.integration.annotation.ServiceActivator; import org.springframework.messaging.Message; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.BDDAssertions.then; +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.atLeastOnce; +import static org.mockito.Mockito.verify; + /** * @author Dave Syer * */ -// TODO: Fix me @SpringBootTest(classes = TestConfiguration.class, webEnvironment = WebEnvironment.NONE) @RunWith(SpringJUnit4ClassRunner.class) -@Ignore public class StreamSpanListenerTests { @Autowired @@ -78,9 +79,9 @@ public class StreamSpanListenerTests { @Autowired StreamSpanReporter listener; @Autowired - Counter counter; - @Autowired SpanReporter spanReporter; + @Autowired + MeterRegistry meterRegistry; @Before public void init() { @@ -139,7 +140,10 @@ public class StreamSpanListenerTests { this.tracer.close(context); this.listener.poll(); - verify(this.counter, atLeastOnce()).increment(); + Optional counter = this.meterRegistry.find("counter.span.accepted") + .counter(); + then(counter.isPresent()).isTrue(); + then(counter.get().count()).isGreaterThan(0d); } @Test @@ -208,8 +212,8 @@ public class StreamSpanListenerTests { } @Bean - Counter counter() { - return Mockito.mock(Counter.class); + public MeterRegistry testMeterRegistry() { + return new SimpleMeterRegistry(); } @PostConstruct diff --git a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocatorConfigurationTest.java b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocatorConfigurationTest.java index 6fcbe1e04..3468695f8 100644 --- a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocatorConfigurationTest.java +++ b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/DiscoveryClientEndpointLocatorConfigurationTest.java @@ -1,6 +1,5 @@ package org.springframework.cloud.sleuth.zipkin; -import org.junit.Ignore; import org.junit.Test; import org.mockito.Mockito; import org.springframework.boot.SpringApplication; @@ -13,16 +12,15 @@ import org.springframework.context.annotation.Configuration; import static org.assertj.core.api.Assertions.assertThat; /** - * @author Matcin Wielgus + * @author Marcin Wielgus */ -//TODO: Fix me -@Ignore public class DiscoveryClientEndpointLocatorConfigurationTest { @Test public void endpointLocatorShouldDefaultToServerPropertiesEndpointLocator() { ConfigurableApplicationContext ctxt = new SpringApplication( - EmptyConfiguration.class).run("--spring.jmx.enabled=false"); + EmptyConfiguration.class).run("--spring.jmx.enabled=false", + "--spring.cloud.discovery.client.composite-indicator.enabled=false"); assertThat(ctxt.getBean(EndpointLocator.class)) .isInstanceOf(ServerPropertiesEndpointLocator.class); ctxt.close(); @@ -31,7 +29,8 @@ public class DiscoveryClientEndpointLocatorConfigurationTest { @Test public void endpointLocatorShouldDefaultToServerPropertiesEndpointLocatorEvenWhenDiscoveryClientPresent() { ConfigurableApplicationContext ctxt = new SpringApplication( - ConfigurationWithDiscoveryClient.class).run("--spring.jmx.enabled=false"); + ConfigurationWithDiscoveryClient.class).run("--spring.jmx.enabled=false", + "--spring.cloud.discovery.client.composite-indicator.enabled=false"); assertThat(ctxt.getBean(EndpointLocator.class)) .isInstanceOf(ServerPropertiesEndpointLocator.class); ctxt.close(); @@ -40,7 +39,8 @@ public class DiscoveryClientEndpointLocatorConfigurationTest { @Test public void endpointLocatorShouldRespectExistingEndpointLocator() { ConfigurableApplicationContext ctxt = new SpringApplication( - ConfigurationWithCustomLocator.class).run("--spring.jmx.enabled=false"); + ConfigurationWithCustomLocator.class).run("--spring.jmx.enabled=false", + "--spring.cloud.discovery.client.composite-indicator.enabled=false"); assertThat(ctxt.getBean(EndpointLocator.class)) .isSameAs(ConfigurationWithCustomLocator.locator); ctxt.close(); @@ -50,7 +50,8 @@ public class DiscoveryClientEndpointLocatorConfigurationTest { public void endpointLocatorShouldBeFallbackHavingEndpointLocatorWhenAskedTo() { ConfigurableApplicationContext ctxt = new SpringApplication( ConfigurationWithDiscoveryClient.class).run("--spring.jmx.enabled=false", - "--spring.zipkin.locator.discovery.enabled=true"); + "--spring.zipkin.locator.discovery.enabled=true", + "--spring.cloud.discovery.client.composite-indicator.enabled=false"); assertThat(ctxt.getBean(EndpointLocator.class)) .isInstanceOf(FallbackHavingEndpointLocator.class); ctxt.close(); @@ -61,7 +62,8 @@ public class DiscoveryClientEndpointLocatorConfigurationTest { ConfigurableApplicationContext ctxt = new SpringApplication( ConfigurationWithDiscoveryClient.class, ConfigurationWithCustomLocator.class).run("--spring.jmx.enabled=false", - "--spring.zipkin.locator.discovery.enabled=true"); + "--spring.zipkin.locator.discovery.enabled=true", + "--spring.cloud.discovery.client.composite-indicator.enabled=false"); assertThat(ctxt.getBean(EndpointLocator.class)) .isSameAs(ConfigurationWithCustomLocator.locator); ctxt.close(); diff --git a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinDiscoveryClientTests.java b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinDiscoveryClientTests.java index 0cf274ffd..01c83a46c 100644 --- a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinDiscoveryClientTests.java +++ b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinDiscoveryClientTests.java @@ -31,11 +31,10 @@ import org.springframework.util.SocketUtils; import zipkin.junit.ZipkinRule; -// TODO: Fix me @RunWith(SpringRunner.class) -@SpringBootTest(classes = ZipkinDiscoveryClientTests.Config.class, - properties = "spring.zipkin.baseUrl=http://zipkin/") -@Ignore +@SpringBootTest(classes = ZipkinDiscoveryClientTests.Config.class, properties = { + "spring.zipkin.baseUrl=http://zipkin/", + "spring.cloud.discovery.client.composite-indicator.enabled=false" }) public class ZipkinDiscoveryClientTests { @ClassRule public static ZipkinRule ZIPKIN_RULE = new ZipkinRule();