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 041307ba..da3497f9 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 @@ -20,6 +20,7 @@ import java.util.LinkedList; import java.util.List; import org.springframework.cloud.client.discovery.ManagementServerPortUtils; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.cloud.client.serviceregistry.ServiceRegistry; import org.springframework.cloud.commons.util.IdUtils; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; @@ -38,11 +39,14 @@ public class ConsulAutoRegistration extends ConsulRegistration { public static final char SEPARATOR = '-'; + private final AutoServiceRegistrationProperties autoServiceRegistrationProperties; private final ApplicationContext context; private final HeartbeatProperties heartbeatProperties; - public ConsulAutoRegistration(NewService service, ConsulDiscoveryProperties properties, ApplicationContext context, HeartbeatProperties heartbeatProperties) { + public ConsulAutoRegistration(NewService service, AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, ApplicationContext context, HeartbeatProperties heartbeatProperties) { super(service, properties); + this.autoServiceRegistrationProperties = autoServiceRegistrationProperties; this.context = context; this.heartbeatProperties = heartbeatProperties; } @@ -55,14 +59,17 @@ public class ConsulAutoRegistration extends ConsulRegistration { // we might not have a port until now, so this is the earliest we // can create a check - setCheck(getService(), getProperties(), this.context, this.heartbeatProperties); + setCheck(getService(), this.autoServiceRegistrationProperties, getProperties(), + this.context, this.heartbeatProperties); } public ConsulAutoRegistration managementRegistration() { - return managementRegistration(getProperties(), this.context, this.heartbeatProperties); + return managementRegistration(this.autoServiceRegistrationProperties, getProperties(), + this.context, this.heartbeatProperties); } - public static ConsulAutoRegistration registration(ConsulDiscoveryProperties properties, ApplicationContext context, + public static ConsulAutoRegistration registration(AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, ApplicationContext context, List registrationCustomizers, HeartbeatProperties heartbeatProperties) { @@ -78,10 +85,11 @@ public class ConsulAutoRegistration extends ConsulRegistration { if (properties.getPort() != null) { service.setPort(properties.getPort()); // we know the port and can set the check - setCheck(service, properties, context, heartbeatProperties); + setCheck(service, autoServiceRegistrationProperties, properties, context, heartbeatProperties); } - ConsulAutoRegistration registration = new ConsulAutoRegistration(service, properties, context, heartbeatProperties); + ConsulAutoRegistration registration = new ConsulAutoRegistration(service, autoServiceRegistrationProperties, + properties, context, heartbeatProperties); customize(registrationCustomizers, registration); return registration; } @@ -95,7 +103,8 @@ public class ConsulAutoRegistration extends ConsulRegistration { } @Deprecated //TODO: do I need this here, or should I just copy what I need back into lifecycle? - public static ConsulAutoRegistration lifecycleRegistration(Integer port, String instanceId, ConsulDiscoveryProperties properties, ApplicationContext context, + public static ConsulAutoRegistration lifecycleRegistration(Integer port, String instanceId, AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, ApplicationContext context, List registrationCustomizers, HeartbeatProperties heartbeatProperties) { NewService service = new NewService(); @@ -116,17 +125,21 @@ public class ConsulAutoRegistration extends ConsulRegistration { Assert.notNull(service.getPort(), "service.port may not be null"); - setCheck(service, properties, context, heartbeatProperties); + setCheck(service, autoServiceRegistrationProperties, properties, context, heartbeatProperties); - ConsulAutoRegistration registration = new ConsulAutoRegistration(service, properties, context, heartbeatProperties); + ConsulAutoRegistration registration = new ConsulAutoRegistration(service, autoServiceRegistrationProperties, + properties, context, heartbeatProperties); customize(registrationCustomizers, registration); return registration; } - public static void setCheck(NewService service, ConsulDiscoveryProperties properties, ApplicationContext context, HeartbeatProperties heartbeatProperties) { + public static void setCheck(NewService service, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, ApplicationContext context, + HeartbeatProperties heartbeatProperties) { if (properties.isRegisterHealthCheck() && service.getCheck() == null) { Integer checkPort; - if (shouldRegisterManagement(properties, context)) { + if (shouldRegisterManagement(autoServiceRegistrationProperties, properties, context)) { checkPort = getManagementPort(properties, context); } else { checkPort = service.getPort(); @@ -136,8 +149,10 @@ public class ConsulAutoRegistration extends ConsulRegistration { } } - public static ConsulAutoRegistration managementRegistration(ConsulDiscoveryProperties properties, ApplicationContext context, - HeartbeatProperties heartbeatProperties) { + public static ConsulAutoRegistration managementRegistration( + AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, ApplicationContext context, + HeartbeatProperties heartbeatProperties) { NewService management = new NewService(); management.setId(getManagementServiceId(properties, context)); management.setAddress(properties.getHostname()); @@ -147,7 +162,7 @@ public class ConsulAutoRegistration extends ConsulRegistration { if (properties.isRegisterHealthCheck()) { management.setCheck(createCheck(getManagementPort(properties, context), heartbeatProperties, properties)); } - return new ConsulAutoRegistration(management, properties, context, heartbeatProperties); + return new ConsulAutoRegistration(management, autoServiceRegistrationProperties, properties, context, heartbeatProperties); } public static String getInstanceId(ConsulDiscoveryProperties properties, ApplicationContext context) { @@ -236,8 +251,10 @@ public class ConsulAutoRegistration extends ConsulRegistration { /** * @return if the management service should be registered with the {@link ServiceRegistry} */ - public static boolean shouldRegisterManagement(ConsulDiscoveryProperties properties, ApplicationContext context) { - return getManagementPort(properties, context) != null && ManagementServerPortUtils.isDifferent(context); + public static boolean shouldRegisterManagement(AutoServiceRegistrationProperties autoServiceRegistrationProperties, ConsulDiscoveryProperties properties, ApplicationContext context) { + return autoServiceRegistrationProperties.isRegisterManagement() + && getManagementPort(properties, context) != null + && ManagementServerPortUtils.isDifferent(context); } /** 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 57eb41f9..68179723 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 @@ -19,6 +19,7 @@ package org.springframework.cloud.consul.serviceregistry; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; import org.springframework.retry.annotation.Retryable; import org.springframework.util.Assert; @@ -34,9 +35,10 @@ public class ConsulAutoServiceRegistration extends AbstractAutoServiceRegistrati private ConsulDiscoveryProperties properties; private ConsulAutoRegistration registration; - public ConsulAutoServiceRegistration(ConsulServiceRegistry serviceRegistry, ConsulDiscoveryProperties properties, - ConsulAutoRegistration registration) { - super(serviceRegistry); + public ConsulAutoServiceRegistration(ConsulServiceRegistry serviceRegistry, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, ConsulAutoRegistration registration) { + super(serviceRegistry, autoServiceRegistrationProperties); this.properties = properties; this.registration = registration; } @@ -76,7 +78,6 @@ public class ConsulAutoServiceRegistration extends AbstractAutoServiceRegistrati super.register(); } - @Override protected void registerManagement() { if (!this.properties.isRegister()) { diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationAutoConfiguration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationAutoConfiguration.java index 8c4bf234..21dbc1f1 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationAutoConfiguration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationAutoConfiguration.java @@ -21,11 +21,13 @@ import java.util.List; import javax.servlet.ServletContext; import org.springframework.beans.factory.ObjectProvider; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureAfter; 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.ConditionalOnProperty; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.cloud.consul.ConditionalOnConsulEnabled; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; @@ -42,20 +44,30 @@ import org.springframework.context.annotation.Configuration; @ConditionalOnMissingBean(type = "org.springframework.cloud.consul.discovery.ConsulLifecycle") @ConditionalOnConsulEnabled @ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled", matchIfMissing = true) -@AutoConfigureAfter(ConsulServiceRegistryAutoConfiguration.class) +@AutoConfigureAfter({AutoServiceRegistrationConfiguration.class, ConsulServiceRegistryAutoConfiguration.class}) public class ConsulAutoServiceRegistrationAutoConfiguration { + @Autowired + AutoServiceRegistrationProperties autoServiceRegistrationProperties; + @Bean @ConditionalOnMissingBean - public ConsulAutoServiceRegistration consulAutoServiceRegistration(ConsulServiceRegistry registry, ConsulDiscoveryProperties properties, ConsulAutoRegistration consulRegistration) { - return new ConsulAutoServiceRegistration(registry, properties, consulRegistration); + public ConsulAutoServiceRegistration consulAutoServiceRegistration( + ConsulServiceRegistry registry, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, + ConsulAutoRegistration consulRegistration) { + return new ConsulAutoServiceRegistration(registry, + autoServiceRegistrationProperties, properties, consulRegistration); } @Bean @ConditionalOnMissingBean - public ConsulAutoRegistration consulRegistration(ConsulDiscoveryProperties properties, ApplicationContext applicationContext, + public ConsulAutoRegistration consulRegistration(AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, ApplicationContext applicationContext, ObjectProvider> registrationCustomizers, HeartbeatProperties heartbeatProperties) { - return ConsulAutoRegistration.registration(properties, applicationContext, registrationCustomizers.getIfAvailable(), heartbeatProperties); + return ConsulAutoRegistration.registration(autoServiceRegistrationProperties, properties, + applicationContext, registrationCustomizers.getIfAvailable(), heartbeatProperties); } @Configuration diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTest.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTests.java similarity index 85% rename from spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTest.java rename to spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTests.java index 2c5f7cb5..c796ebcd 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTest.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerRemoveTests.java @@ -6,11 +6,11 @@ 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.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.test.context.junit4.SpringRunner; import com.ecwid.consul.v1.ConsulClient; @@ -28,13 +28,13 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen * @author Stéphane Leroy */ @RunWith(SpringRunner.class) -@SpringBootTest(classes = TtlSchedulerRemoveTest.TtlSchedulerRemoveTestConfig.class, +@SpringBootTest(classes = TtlSchedulerRemoveTests.TtlSchedulerRemoveTestConfig.class, properties = { "spring.application.name=ttlSchedulerRemove", "spring.cloud.consul.discovery.instance-id=ttlSchedulerRemove-id", "spring.cloud.consul.discovery.heartbeat.enabled=true", "spring.cloud.consul.discovery.heartbeat.ttlValue=2" }, webEnvironment = RANDOM_PORT) -public class TtlSchedulerRemoveTest { +public class TtlSchedulerRemoveTests { @Autowired private ConsulClient consul; @@ -67,9 +67,10 @@ public class TtlSchedulerRemoveTest { } @Configuration - @EnableDiscoveryClient @EnableAutoConfiguration - @ImportAutoConfiguration({ ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class }) + @Import({ AutoServiceRegistrationConfiguration.class, + ConsulAutoConfiguration.class, + ConsulDiscoveryClientConfiguration.class }) public static class TtlSchedulerRemoveTestConfig { } } diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTest.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTests.java similarity index 83% rename from spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTest.java rename to spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTests.java index c8924515..48f15a52 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTest.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/TtlSchedulerTests.java @@ -7,8 +7,10 @@ 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.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; +import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.test.context.junit4.SpringRunner; import com.ecwid.consul.v1.ConsulClient; @@ -24,13 +26,13 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen * @author Stéphane Leroy */ @RunWith(SpringRunner.class) -@SpringBootTest(classes = TtlSchedulerTest.TtlSchedulerTestConfig.class, +@SpringBootTest(classes = TtlSchedulerTests.TtlSchedulerTestConfig.class, properties = { "spring.application.name=ttlScheduler", "spring.cloud.consul.discovery.instance-id=ttlScheduler-id", "spring.cloud.consul.discovery.heartbeat.enabled=true", "spring.cloud.consul.discovery.heartbeat.ttlValue=2", "management.server.port=0" }, webEnvironment = RANDOM_PORT) -public class TtlSchedulerTest { +public class TtlSchedulerTests { @Autowired private ConsulClient consul; @@ -60,8 +62,10 @@ public class TtlSchedulerTest { } @Configuration - @EnableDiscoveryClient @EnableAutoConfiguration + @Import({ AutoServiceRegistrationConfiguration.class, + ConsulAutoConfiguration.class, + ConsulDiscoveryClientConfiguration.class }) public static class TtlSchedulerTestConfig { } } diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedTests.java index b8f0418e..bc5115a1 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationCustomizedTests.java @@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; import org.springframework.context.annotation.Bean; @@ -41,6 +42,9 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen webEnvironment = RANDOM_PORT) public class ConsulAutoServiceRegistrationCustomizedTests { + @Autowired + private AutoServiceRegistrationProperties autoServiceRegistrationProperties; + @Autowired private ConsulAutoServiceRegistration registration1; @@ -58,18 +62,25 @@ public class ConsulAutoServiceRegistrationCustomizedTests { @ImportAutoConfiguration({ AutoServiceRegistrationConfiguration.class, ConsulAutoConfiguration.class, ConsulAutoServiceRegistrationAutoConfiguration.class }) public static class MyTestConfig { @Bean - public CustomAutoRegistration consulAutoServiceRegistration(ConsulServiceRegistry serviceRegistry, ConsulDiscoveryProperties properties, - ConsulAutoRegistration registration) { - return new CustomAutoRegistration(serviceRegistry, properties, registration); + public CustomAutoRegistration consulAutoServiceRegistration( + ConsulServiceRegistry serviceRegistry, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, + ConsulAutoRegistration registration) { + return new CustomAutoRegistration(serviceRegistry, + autoServiceRegistrationProperties, properties, registration); } } public static class CustomAutoRegistration extends ConsulAutoServiceRegistration { @Autowired - public CustomAutoRegistration(ConsulServiceRegistry serviceRegistry, ConsulDiscoveryProperties properties, - ConsulAutoRegistration registration) { - super(serviceRegistry, properties, registration); + public CustomAutoRegistration(ConsulServiceRegistry serviceRegistry, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, + ConsulAutoRegistration registration) { + super(serviceRegistry, autoServiceRegistrationProperties, properties, + registration); } @Override diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementDisabledServiceTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementDisabledServiceTests.java new file mode 100644 index 00000000..029e5025 --- /dev/null +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementDisabledServiceTests.java @@ -0,0 +1,90 @@ +/* + * Copyright 2013-2016 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.consul.serviceregistry; + +import java.util.Map; + +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.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; +import org.springframework.cloud.consul.ConsulAutoConfiguration; +import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.util.StringUtils; + +import com.ecwid.consul.v1.ConsulClient; +import com.ecwid.consul.v1.Response; +import com.ecwid.consul.v1.agent.model.Service; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +/** + * @author Dmitry Zhikharev (jihor) + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ConsulAutoServiceRegistrationManagementDisabledServiceTests.TestConfig.class, properties = { + "spring.application.name=myTestService-NM", + "spring.cloud.consul.discovery.instanceId=myTestService1-NM", + "spring.cloud.service-registry.auto-registration.register-management=false", + "spring.cloud.consul.discovery.managementPort=4453", + "management.port=0" }, webEnvironment = RANDOM_PORT) +public class ConsulAutoServiceRegistrationManagementDisabledServiceTests { + + @Autowired + private ConsulClient consul; + + @Autowired + private ConsulDiscoveryProperties discoveryProperties; + + @Test + public void contextLoads() { + Response> response = consul.getAgentServices(); + Map services = response.getValue(); + + Service mgmtService = services.get("myTestService-NM-0-management"); + assertNull("Management service was not null", mgmtService); + + Service service = services.get("myTestService1-NM"); + assertNotNull("Service was not null", service); + assertNotEquals("service port was 0", 0, service.getPort().intValue()); + assertEquals("service id was wrong", "myTestService1-NM", service.getId()); + assertEquals("service name was wrong", "myTestService-NM", service.getService()); + assertFalse("service address must not be empty", + StringUtils.isEmpty(service.getAddress())); + assertEquals("service address must equals hostname from discovery properties", + discoveryProperties.getHostname(), service.getAddress()); + + } + + @Configuration + @EnableAutoConfiguration + @ImportAutoConfiguration({ AutoServiceRegistrationConfiguration.class, + ConsulAutoConfiguration.class, + ConsulAutoServiceRegistrationAutoConfiguration.class }) + public static class TestConfig { + } +}