diff --git a/spring-cloud-consul-discovery/pom.xml b/spring-cloud-consul-discovery/pom.xml index 813f6ae7..57291a8e 100644 --- a/spring-cloud-consul-discovery/pom.xml +++ b/spring-cloud-consul-discovery/pom.xml @@ -134,6 +134,11 @@ spring-boot-starter-actuator true + + org.springframework.cloud + spring-cloud-test-support + test + diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistration.java index 4ecf4a6e..041307ba 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistration.java @@ -21,6 +21,7 @@ import java.util.List; import org.springframework.cloud.client.discovery.ManagementServerPortUtils; import org.springframework.cloud.client.serviceregistry.ServiceRegistry; +import org.springframework.cloud.commons.util.IdUtils; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; import org.springframework.cloud.consul.discovery.HeartbeatProperties; import org.springframework.context.ApplicationContext; @@ -151,7 +152,7 @@ public class ConsulAutoRegistration extends ConsulRegistration { public static String getInstanceId(ConsulDiscoveryProperties properties, ApplicationContext context) { if (!StringUtils.hasText(properties.getInstanceId())) { - return normalizeForDns(context.getId()); + return normalizeForDns(IdUtils.getDefaultInstanceId(context.getEnvironment(), false)); } else { return normalizeForDns(properties.getInstanceId()); } @@ -160,7 +161,7 @@ public class ConsulAutoRegistration extends ConsulRegistration { public static String normalizeForDns(String s) { if (s == null || !Character.isLetter(s.charAt(0)) || !Character.isLetterOrDigit(s.charAt(s.length()-1))) { - throw new IllegalArgumentException("Consul service ids must not be empty, must start with a letter, end with a letter or digit, and have as interior characters only letters, digits, and hyphen"); + throw new IllegalArgumentException("Consul service ids must not be empty, must start with a letter, end with a letter or digit, and have as interior characters only letters, digits, and hyphen: "+s); } StringBuilder normalized = new StringBuilder(); @@ -243,7 +244,7 @@ public class ConsulAutoRegistration extends ConsulRegistration { * @return the serviceId of the Management Service */ public static String getManagementServiceId(ConsulDiscoveryProperties properties, ApplicationContext context) { - return normalizeForDns(context.getId()) + SEPARATOR + properties.getManagementSuffix(); + return normalizeForDns(IdUtils.getDefaultInstanceId(context.getEnvironment(), false)) + SEPARATOR + properties.getManagementSuffix(); } /** diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistration.java index 0583f935..57eb41f9 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistration.java @@ -113,6 +113,7 @@ public class ConsulAutoServiceRegistration extends AbstractAutoServiceRegistrati } @Override + @SuppressWarnings("deprecation") protected String getAppName() { String appName = properties.getServiceName(); return StringUtils.isEmpty(appName) ? super.getAppName() : appName; diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientDefaultQueryTagTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientDefaultQueryTagTests.java index 32f1a34a..c148c0b5 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientDefaultQueryTagTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientDefaultQueryTagTests.java @@ -48,6 +48,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen @SpringBootTest(webEnvironment = MOCK, classes = ConsulDiscoveryClientDefaultQueryTagTests.TestConfig.class, properties = { + "spring.application.name=consulServiceDefaultTag", "spring.cloud.consul.discovery.catalogServicesWatch.enabled=false", "spring.cloud.consul.discovery.defaultQueryTag=intg"}) @DirtiesContext diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/DiscoveryClientConfigServiceAutoConfigurationTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/DiscoveryClientConfigServiceAutoConfigurationTests.java index f8a45bed..e834f8e0 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/DiscoveryClientConfigServiceAutoConfigurationTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/DiscoveryClientConfigServiceAutoConfigurationTests.java @@ -20,9 +20,9 @@ import java.util.Arrays; import org.junit.After; import org.junit.Test; -import org.mockito.Mockito; +import org.junit.runner.RunWith; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.test.util.EnvironmentTestUtils; +import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.cloud.client.DefaultServiceInstance; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.commons.util.UtilAutoConfiguration; @@ -32,17 +32,23 @@ import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryClient; import org.springframework.cloud.consul.discovery.ConsulDiscoveryClientConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.test.ClassPathExclusions; +import org.springframework.cloud.test.ModifiedClassPathRunner; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import static org.junit.Assert.assertEquals; import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; /** * @author Dave Syer */ +@RunWith(ModifiedClassPathRunner.class) +@ClassPathExclusions({ "spring-retry-*.jar", "spring-boot-starter-aop-*.jar" }) public class DiscoveryClientConfigServiceAutoConfigurationTests { private AnnotationConfigApplicationContext context; @@ -62,12 +68,12 @@ public class DiscoveryClientConfigServiceAutoConfigurationTests { setup("server.port=7000", "spring.cloud.config.discovery.enabled=true", "spring.cloud.consul.discovery.port:7001", "spring.cloud.consul.discovery.hostname:foo", - "spring.cloud.config.discovery.serviceId=configserver"); + "spring.cloud.config.discovery.service-id:configserver"); assertEquals( 1, this.context .getBeanNamesForType(ConsulConfigServerAutoConfiguration.class).length); ConsulDiscoveryClient client = this.context.getParent().getBean( ConsulDiscoveryClient.class); - Mockito.verify(client, times(2)).getInstances("configserver"); + verify(client, times(2)).getInstances("configserver"); ConfigClientProperties locator = this.context .getBean(ConfigClientProperties.class); assertEquals("http://foo:7001/", locator.getRawUri()); @@ -75,7 +81,7 @@ public class DiscoveryClientConfigServiceAutoConfigurationTests { private void setup(String... env) { AnnotationConfigApplicationContext parent = new AnnotationConfigApplicationContext(); - EnvironmentTestUtils.addEnvironment(parent, env); + TestPropertyValues.of(env).applyTo(parent); parent.register(UtilAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class, EnvironmentKnobbler.class, ConsulDiscoveryClientConfigServiceBootstrapConfiguration.class, @@ -96,7 +102,7 @@ public class DiscoveryClientConfigServiceAutoConfigurationTests { @Bean public ConsulDiscoveryClient consulDiscoveryClient( ConsulDiscoveryProperties properties) { - ConsulDiscoveryClient client = Mockito.mock(ConsulDiscoveryClient.class); + ConsulDiscoveryClient client = mock(ConsulDiscoveryClient.class); ServiceInstance instance = new DefaultServiceInstance("configserver", properties.getHostname(), properties.getPort(), false); given(client.getInstances("configserver"))