diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/src/main/java/tools/AbstractIntegrationTest.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/src/main/java/tools/AbstractIntegrationTest.java index 346a0383a..34c5e79a1 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/src/main/java/tools/AbstractIntegrationTest.java +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/src/main/java/tools/AbstractIntegrationTest.java @@ -70,10 +70,6 @@ public abstract class AbstractIntegrationTest { return Awaitility.await().pollInterval(POLL_INTERVAL, SECONDS).atMost(TIMEOUT, SECONDS); } - protected Runnable zipkinQueryServerIsUp() { - return checkServerHealth("Zipkin Query Server", this::endpointToCheckZipkinQueryHealth); - } - protected Runnable zipkinServerIsUp() { return checkServerHealth("Zipkin Stream Server", this::endpointToCheckZipkinServerHealth); } @@ -91,12 +87,6 @@ public abstract class AbstractIntegrationTest { ResponseEntity exchange(); } - protected ResponseEntity endpointToCheckZipkinQueryHealth() { - URI uri = URI.create(getZipkinServicesQueryUrl()); - log.info(String.format("Sending request to the Zipkin query service [%s]", uri)); - return exchangeRequest(uri); - } - protected ResponseEntity endpointToCheckZipkinServerHealth() { URI uri = URI.create("http://localhost:" +getZipkinServerPort()+"/health"); log.info(String.format("Sending request to the Zipkin Server [%s]", uri)); diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml index f168afc57..19098d337 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml @@ -102,6 +102,11 @@ zipkin-server test + + io.zipkin.java + zipkin-junit + test + diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/test/java/integration/ZipkinTests.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/test/java/integration/ZipkinTests.java index c8dc7abd3..e82565de5 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/test/java/integration/ZipkinTests.java +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/test/java/integration/ZipkinTests.java @@ -18,9 +18,7 @@ package integration; import java.net.URI; import java.util.Random; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.Before; +import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -29,20 +27,17 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.boot.test.WebIntegrationTest; -import org.springframework.cloud.sleuth.metric.SpanMetricReporter; -import org.springframework.cloud.sleuth.zipkin.HttpZipkinSpanReporter; import org.springframework.cloud.sleuth.zipkin.ZipkinProperties; -import org.springframework.cloud.sleuth.zipkin.ZipkinSpanReporter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.util.SocketUtils; import integration.ZipkinTests.WaitUntilZipkinIsUpConfig; import sample.SampleZipkinApplication; import tools.AbstractIntegrationTest; +import zipkin.junit.ZipkinRule; import zipkin.server.EnableZipkinServer; @RunWith(SpringJUnit4ClassRunner.class) @@ -52,18 +47,14 @@ import zipkin.server.EnableZipkinServer; @TestPropertySource(properties = {"sample.zipkin.enabled=true"}) public class ZipkinTests extends AbstractIntegrationTest { + @ClassRule public static final ZipkinRule zipkin = new ZipkinRule(); + private static final String APP_NAME = "testsleuthzipkin"; @Value("${local.server.port}") private int port = 3380; private String sampleAppUrl = "http://localhost:" + this.port; @Autowired ZipkinProperties zipkinProperties; - @Before - public void setup() { - ZipkinServer.main(new String[] { "--server.port=" + getPortFromProps() }); - await().until(zipkinQueryServerIsUp()); - } - @Override protected int getZipkinServerPort() { return getPortFromProps(); } @@ -90,42 +81,13 @@ public class ZipkinTests extends AbstractIntegrationTest { @Configuration public static class WaitUntilZipkinIsUpConfig { - private static final Log log = LogFactory.getLog(WaitUntilZipkinIsUpConfig.class); - @Bean @Primary ZipkinProperties testZipkinProperties() { - int freePort = SocketUtils.findAvailableTcpPort(); ZipkinProperties zipkinProperties = new ZipkinProperties(); - zipkinProperties.setBaseUrl("http://localhost:" + freePort); + zipkinProperties.setBaseUrl(zipkin.httpUrl()); return zipkinProperties; } - - @Bean - public ZipkinSpanReporter spanCollector(final ZipkinProperties zipkin, - final SpanMetricReporter spanMetricReporter) { - await().until(new Runnable() { - @Override - public void run() { - try { - WaitUntilZipkinIsUpConfig.this.getSpanCollector(zipkin, - spanMetricReporter); - } - catch (Exception e) { - log.error("Exception occurred while trying to connect to zipkin [" - + e.getCause() + "]"); - throw new AssertionError(e); - } - } - }); - return getSpanCollector(zipkin, spanMetricReporter); - } - - private ZipkinSpanReporter getSpanCollector(ZipkinProperties zipkin, - SpanMetricReporter spanMetricReporter) { - return new HttpZipkinSpanReporter(zipkin.getBaseUrl(), zipkin.getFlushInterval(), - zipkin.getCompression().isEnabled(), spanMetricReporter); - } } @SpringBootApplication