Made the tests pass
This commit is contained in:
@@ -1,17 +1,14 @@
|
||||
package sample;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.test.context.web.WebAppConfiguration;
|
||||
|
||||
// TODO: Fix me
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(classes = SampleSleuthApplication.class)
|
||||
@WebAppConfiguration
|
||||
@Ignore
|
||||
public class SampleSleuthApplicationTests {
|
||||
|
||||
@Test
|
||||
|
||||
@@ -15,9 +15,6 @@
|
||||
*/
|
||||
package tools;
|
||||
|
||||
import zipkin.Codec;
|
||||
import zipkin.Span;
|
||||
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
@@ -40,6 +37,8 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.RequestEntity;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import zipkin.Codec;
|
||||
import zipkin.Span;
|
||||
|
||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||
import static org.assertj.core.api.BDDAssertions.then;
|
||||
@@ -87,7 +86,7 @@ public abstract class AbstractIntegrationTest {
|
||||
}
|
||||
|
||||
protected ResponseEntity<String> endpointToCheckZipkinServerHealth() {
|
||||
URI uri = URI.create("http://localhost:" +getZipkinServerPort()+"/application/health");
|
||||
URI uri = URI.create("http://localhost:" + getZipkinServerPort() + "/zipkin/");
|
||||
log.info(String.format("Sending request to the Zipkin Server [%s]", uri));
|
||||
return exchangeRequest(uri);
|
||||
}
|
||||
|
||||
@@ -1,23 +1,38 @@
|
||||
package example;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||
import org.springframework.cloud.sleuth.stream.SleuthSink;
|
||||
import org.springframework.cloud.sleuth.zipkin.stream.ZipkinMessageListener;
|
||||
import org.springframework.cloud.stream.annotation.EnableBinding;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import zipkin.collector.CollectorMetrics;
|
||||
import zipkin.collector.CollectorSampler;
|
||||
import zipkin.internal.V2StorageComponent;
|
||||
import zipkin.server.ZipkinHttpCollector;
|
||||
import zipkin.server.ZipkinQueryApiV1;
|
||||
import zipkin.storage.StorageComponent;
|
||||
import zipkin2.storage.InMemoryStorage;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
// TODO: Fix me
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(classes = ZipkinStreamServerApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, properties = {
|
||||
@SpringBootTest(classes = ZipkinStreamTestsConfig.class,
|
||||
webEnvironment = WebEnvironment.RANDOM_PORT, properties = {
|
||||
"spring.datasource.initialize=true" })
|
||||
@ActiveProfiles("test")
|
||||
@Ignore
|
||||
public class ZipkinServerApplicationTests {
|
||||
|
||||
@Autowired
|
||||
@@ -30,3 +45,62 @@ public class ZipkinServerApplicationTests {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// TODO: Zipkin Server is not Boot 2.0 compatible
|
||||
@Configuration
|
||||
@SpringBootApplication
|
||||
@EnableBoot2CompatibleZipkinServer
|
||||
class ZipkinStreamTestsConfig {
|
||||
|
||||
}
|
||||
|
||||
//@EnableZipkinStreamServer
|
||||
@EnableBinding(SleuthSink.class)
|
||||
@Import({ZipkinMessageListener.class,
|
||||
Boot2ZipkinCompatibleConfig.class,
|
||||
ZipkinQueryApiV1.class,
|
||||
ZipkinHttpCollector.class})
|
||||
@interface EnableBoot2CompatibleZipkinServer {
|
||||
}
|
||||
|
||||
// CollectorMetrics bean definition from `ZipkinServerConfiguration`
|
||||
// is not Boot 2.0 compatible
|
||||
@Configuration
|
||||
class Boot2ZipkinCompatibleConfig {
|
||||
|
||||
@Bean CollectorMetrics collectorMetrics() {
|
||||
CollectorMetrics mock = Mockito.mock(CollectorMetrics.class);
|
||||
Mockito.when(mock.forTransport(Mockito.anyString())).thenReturn(mock);
|
||||
return mock;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(CollectorSampler.class)
|
||||
CollectorSampler traceIdSampler(@Value("${zipkin.collector.sample-rate:1.0}") float rate) {
|
||||
return CollectorSampler.create(rate);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a special-case configuration if there's no StorageComponent of any kind. In-Mem can
|
||||
* supply both read apis, so we add two beans here.
|
||||
*/
|
||||
@Configuration
|
||||
// "matchIfMissing = true" ensures this is used when there's no configured storage type
|
||||
@ConditionalOnProperty(name = "zipkin.storage.type", havingValue = "mem", matchIfMissing = true)
|
||||
@ConditionalOnMissingBean(StorageComponent.class)
|
||||
static class InMemoryConfiguration {
|
||||
@Bean StorageComponent storage(
|
||||
@Value("${zipkin.storage.strict-trace-id:true}") boolean strictTraceId,
|
||||
@Value("${zipkin.storage.mem.max-spans:500000}") int maxSpans) {
|
||||
return V2StorageComponent.create(InMemoryStorage.newBuilder()
|
||||
.strictTraceId(strictTraceId)
|
||||
.maxSpanCount(maxSpans)
|
||||
.build());
|
||||
}
|
||||
|
||||
@Bean InMemoryStorage v2Storage(V2StorageComponent component) {
|
||||
return (InMemoryStorage) component.delegate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,15 +24,25 @@ import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.cloud.sleuth.Span;
|
||||
import org.springframework.cloud.sleuth.stream.Host;
|
||||
import org.springframework.cloud.sleuth.stream.SleuthSink;
|
||||
import org.springframework.cloud.sleuth.stream.Spans;
|
||||
import org.springframework.cloud.sleuth.zipkin.stream.ZipkinMessageListener;
|
||||
import org.springframework.cloud.stream.annotation.EnableBinding;
|
||||
import org.springframework.cloud.stream.test.binder.TestSupportBinderAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.integration.support.MessageBuilder;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageChannel;
|
||||
@@ -41,15 +51,24 @@ import org.springframework.test.context.TestPropertySource;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
import example.ZipkinStreamServerApplication;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import tools.AbstractIntegrationTest;
|
||||
import zipkin.collector.CollectorMetrics;
|
||||
import zipkin.collector.CollectorSampler;
|
||||
import zipkin.internal.V2StorageComponent;
|
||||
import zipkin.server.ZipkinHttpCollector;
|
||||
import zipkin.server.ZipkinQueryApiV1;
|
||||
import zipkin.storage.StorageComponent;
|
||||
import zipkin2.storage.InMemoryStorage;
|
||||
|
||||
// TODO: Fix me
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@SpringBootTest(classes = { TestSupportBinderAutoConfiguration.class, ZipkinStreamServerApplication.class },
|
||||
@RunWith(SpringRunner.class)
|
||||
// TODO: Without ZipkinStreamServerApplication.class cause Zipkin is not comp with Boot
|
||||
@SpringBootTest(classes = { ZipkinStreamTestsConfig.class,
|
||||
TestSupportBinderAutoConfiguration.class},
|
||||
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@TestPropertySource(properties = { "server.port=0", "management.health.rabbit.enabled=false" })
|
||||
@TestPropertySource(properties = { "server.port=0",
|
||||
"management.health.rabbit.enabled=false" })
|
||||
@ActiveProfiles("test")
|
||||
@Ignore
|
||||
public class ZipkinStreamTests extends AbstractIntegrationTest {
|
||||
|
||||
@Value("${local.server.port}")
|
||||
@@ -96,3 +115,62 @@ public class ZipkinStreamTests extends AbstractIntegrationTest {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// TODO: Zipkin Server is not Boot 2.0 compatible
|
||||
@Configuration
|
||||
@SpringBootApplication
|
||||
@EnableBoot2CompatibleZipkinServer
|
||||
class ZipkinStreamTestsConfig {
|
||||
|
||||
}
|
||||
|
||||
//@EnableZipkinStreamServer
|
||||
@EnableBinding(SleuthSink.class)
|
||||
@Import({ZipkinMessageListener.class,
|
||||
Boot2ZipkinCompatibleConfig.class,
|
||||
ZipkinQueryApiV1.class,
|
||||
ZipkinHttpCollector.class})
|
||||
@interface EnableBoot2CompatibleZipkinServer {
|
||||
}
|
||||
|
||||
// CollectorMetrics bean definition from `ZipkinServerConfiguration`
|
||||
// is not Boot 2.0 compatible
|
||||
@Configuration
|
||||
class Boot2ZipkinCompatibleConfig {
|
||||
|
||||
@Bean CollectorMetrics collectorMetrics() {
|
||||
CollectorMetrics mock = Mockito.mock(CollectorMetrics.class);
|
||||
Mockito.when(mock.forTransport(Mockito.anyString())).thenReturn(mock);
|
||||
return mock;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(CollectorSampler.class)
|
||||
CollectorSampler traceIdSampler(@Value("${zipkin.collector.sample-rate:1.0}") float rate) {
|
||||
return CollectorSampler.create(rate);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a special-case configuration if there's no StorageComponent of any kind. In-Mem can
|
||||
* supply both read apis, so we add two beans here.
|
||||
*/
|
||||
@Configuration
|
||||
// "matchIfMissing = true" ensures this is used when there's no configured storage type
|
||||
@ConditionalOnProperty(name = "zipkin.storage.type", havingValue = "mem", matchIfMissing = true)
|
||||
@ConditionalOnMissingBean(StorageComponent.class)
|
||||
static class InMemoryConfiguration {
|
||||
@Bean StorageComponent storage(
|
||||
@Value("${zipkin.storage.strict-trace-id:true}") boolean strictTraceId,
|
||||
@Value("${zipkin.storage.mem.max-spans:500000}") int maxSpans) {
|
||||
return V2StorageComponent.create(InMemoryStorage.newBuilder()
|
||||
.strictTraceId(strictTraceId)
|
||||
.maxSpanCount(maxSpans)
|
||||
.build());
|
||||
}
|
||||
|
||||
@Bean InMemoryStorage v2Storage(V2StorageComponent component) {
|
||||
return (InMemoryStorage) component.delegate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
zipkin:
|
||||
storage:
|
||||
type: mem # default is inMemory
|
||||
|
||||
spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
|
||||
@@ -30,7 +30,6 @@ import zipkin2.storage.InMemoryStorage;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@Ignore
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@SpringBootTest(classes = ZipkinStreamServerApplication.class, properties = {
|
||||
"spring.datasource.initialize=true" }, webEnvironment = WebEnvironment.RANDOM_PORT)
|
||||
|
||||
@@ -26,11 +26,10 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import zipkin.junit.ZipkinRule;
|
||||
|
||||
// TODO: Fix me
|
||||
@Ignore
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(classes = ZipkinDiscoveryClientTests.Config.class,
|
||||
properties = "spring.zipkin.baseUrl=http://zipkin/")
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user