diff --git a/pom.xml b/pom.xml index 320d2b71..a2a2f677 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 1.3.2.RELEASE - 1.3.0.RELEASE + 1.3.2.BUILD-SNAPSHOT 1.4.0.RELEASE 1.4.0.RELEASE 1.0.3.RELEASE diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java index 24ffc1c2..1ee3dbb0 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java @@ -25,6 +25,7 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.bind.RelaxedPropertyResolver; import org.springframework.cloud.client.discovery.AbstractDiscoveryLifecycle; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistration; import org.springframework.cloud.consul.serviceregistry.ConsulRegistrationCustomizer; import org.springframework.cloud.consul.serviceregistry.ConsulServletRegistrationCustomizer; @@ -54,6 +55,8 @@ public class ConsulLifecycle extends AbstractDiscoveryLifecycle { private ConsulClient client; + private AutoServiceRegistrationProperties autoServiceRegistrationProperties; + private ConsulDiscoveryProperties properties; private HeartbeatProperties ttlConfig; @@ -67,8 +70,11 @@ public class ConsulLifecycle extends AbstractDiscoveryLifecycle { private String instanceId; private RelaxedPropertyResolver propertyResolver; - public ConsulLifecycle(ConsulClient client, ConsulDiscoveryProperties properties, HeartbeatProperties ttlConfig) { + public ConsulLifecycle(ConsulClient client, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, HeartbeatProperties ttlConfig) { this.client = client; + this.autoServiceRegistrationProperties = autoServiceRegistrationProperties; this.properties = properties; this.ttlConfig = ttlConfig; } @@ -116,8 +122,9 @@ public class ConsulLifecycle extends AbstractDiscoveryLifecycle { Assert.notNull(service.getPort(), "service.port has not been set"); List registrationCustomizers = Collections .singletonList(new ConsulServletRegistrationCustomizer(servletContext)); - ConsulAutoRegistration registration = ConsulAutoRegistration.lifecycleRegistration(service.getPort(), - getServiceId(), this.properties, getContext(), registrationCustomizers, this.ttlConfig); + ConsulAutoRegistration registration = ConsulAutoRegistration.lifecycleRegistration(service.getPort(), + getServiceId(), this.autoServiceRegistrationProperties, this.properties, + getContext(), registrationCustomizers, this.ttlConfig); if (registration.getService().getPort() == null) { // not set by properties registration.initializePort(service.getPort()); } @@ -146,7 +153,9 @@ public class ConsulLifecycle extends AbstractDiscoveryLifecycle { return; } - ConsulAutoRegistration registration = ConsulAutoRegistration.managementRegistration(this.properties, getContext(), this.ttlConfig); + ConsulAutoRegistration registration = ConsulAutoRegistration + .managementRegistration(this.autoServiceRegistrationProperties, + this.properties, getContext(), this.ttlConfig); register(registration.getService()); } diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TestConsulLifecycleConfiguration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TestConsulLifecycleConfiguration.java index 53d7a505..5ecd840b 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TestConsulLifecycleConfiguration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/TestConsulLifecycleConfiguration.java @@ -21,6 +21,7 @@ import javax.servlet.ServletContext; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -40,10 +41,17 @@ public class TestConsulLifecycleConfiguration { @Autowired(required = false) private ObjectProvider servletContext; + @Autowired(required = false) + AutoServiceRegistrationProperties autoServiceRegistrationProperties; + @Bean - public ConsulLifecycle consulLifecycle(ConsulClient consulClient, ConsulDiscoveryProperties discoveryProperties, - HeartbeatProperties heartbeatProperties) { - ConsulLifecycle lifecycle = new ConsulLifecycle(consulClient, discoveryProperties, heartbeatProperties); + public ConsulLifecycle consulLifecycle(ConsulClient consulClient, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties discoveryProperties, + HeartbeatProperties heartbeatProperties) { + ConsulLifecycle lifecycle = new ConsulLifecycle(consulClient, + autoServiceRegistrationProperties, discoveryProperties, + heartbeatProperties); if (this.ttlScheduler != null) { lifecycle.setTtlScheduler(this.ttlScheduler); } 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 3aa2900f..d51d03db 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.boot.bind.RelaxedPropertyResolver; 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.consul.discovery.ConsulDiscoveryProperties; import org.springframework.cloud.consul.discovery.HeartbeatProperties; @@ -37,11 +38,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; } @@ -54,14 +58,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) { RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver(context.getEnvironment()); @@ -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) { RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver(context.getEnvironment()); @@ -118,17 +127,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(); @@ -138,8 +151,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) { RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver(context.getEnvironment()); NewService management = new NewService(); management.setId(getManagementServiceId(properties, context)); @@ -150,7 +165,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) { @@ -239,8 +254,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 d9fdf988..9ce11443 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; } @@ -82,7 +84,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..0f0eaf38 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,14 @@ 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.AutoServiceRegistrationAutoConfiguration; +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 +45,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/ConsulLifecycleCustomizedPropsTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedPropsTests.java index eb854119..f639b9cd 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedPropsTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedPropsTests.java @@ -25,6 +25,7 @@ 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.context.annotation.Configuration; import org.springframework.test.context.junit4.SpringRunner; @@ -94,7 +95,9 @@ public class ConsulLifecycleCustomizedPropsTests { @Configuration @EnableAutoConfiguration -@ImportAutoConfiguration({ TestConsulLifecycleConfiguration.class, ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class }) +@ImportAutoConfiguration({ AutoServiceRegistrationConfiguration.class, + TestConsulLifecycleConfiguration.class, ConsulAutoConfiguration.class, + ConsulDiscoveryClientConfiguration.class }) class TestPropsConfig { } diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedTests.java index a19695ed..2b53afb6 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedTests.java @@ -25,6 +25,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit4.SpringRunner; @@ -54,6 +55,8 @@ public class ConsulLifecycleCustomizedTests { @Autowired private CustomConsulLifecycle lifecycle2; @Autowired + AutoServiceRegistrationProperties autoServiceRegistrationProperties; + @Autowired private ConsulDiscoveryProperties properties; @Test @@ -81,8 +84,10 @@ public class ConsulLifecycleCustomizedTests { public static class MyTestConfig { @Bean public ConsulLifecycle customizedLifecycle(ConsulClient client, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, ConsulDiscoveryProperties properties, HeartbeatProperties ttlConfig) { - return new CustomConsulLifecycle(client, properties, ttlConfig); + return new CustomConsulLifecycle(client, autoServiceRegistrationProperties, + properties, ttlConfig); } } @@ -91,8 +96,9 @@ public class ConsulLifecycleCustomizedTests { @Autowired public CustomConsulLifecycle(ConsulClient client, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, ConsulDiscoveryProperties properties, HeartbeatProperties ttlConfig) { - super(client, properties, ttlConfig); + super(client, autoServiceRegistrationProperties, properties, ttlConfig); this.properties = properties; } diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleTests.java index ed5bb47a..bcc99e08 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleTests.java @@ -25,6 +25,7 @@ import org.junit.runners.MethodSorters; 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.serviceregistry.AutoServiceRegistrationConfiguration; import org.springframework.cloud.consul.ConsulAutoConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -110,7 +111,9 @@ public class ConsulLifecycleTests { @Configuration @EnableAutoConfiguration -@Import({ TestConsulLifecycleConfiguration.class, ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class }) +@Import({ AutoServiceRegistrationConfiguration.class, + TestConsulLifecycleConfiguration.class, ConsulAutoConfiguration.class, + ConsulDiscoveryClientConfiguration.class }) class TestConfig { } 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/TtlSchedulerRemoveTest.java index 97849049..5fb72fe3 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/TtlSchedulerRemoveTest.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; @@ -67,9 +67,10 @@ public class TtlSchedulerRemoveTest { } @Configuration - @EnableDiscoveryClient(autoRegister = false) //FIXME: this is weird because we're testing the deprecated lifecycle, not autoconfiguration @EnableAutoConfiguration - @ImportAutoConfiguration({ TestConsulLifecycleConfiguration.class, ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class }) + @Import({ AutoServiceRegistrationConfiguration.class, + TestConsulLifecycleConfiguration.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/TtlSchedulerTest.java index da47cd33..31b8f2c4 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/TtlSchedulerTest.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; @@ -61,9 +61,10 @@ public class TtlSchedulerTest { } @Configuration - @EnableDiscoveryClient(autoRegister = false) //FIXME: @EnableAutoConfiguration - @ImportAutoConfiguration({ TestConsulLifecycleConfiguration.class, ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class }) + @Import({ AutoServiceRegistrationConfiguration.class, + TestConsulLifecycleConfiguration.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..954c78b8 --- /dev/null +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationManagementDisabledServiceTests.java @@ -0,0 +1,88 @@ +/* + * 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 com.ecwid.consul.v1.ConsulClient; +import com.ecwid.consul.v1.Response; +import com.ecwid.consul.v1.agent.model.Service; +import org.junit.Ignore; +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 java.util.Map; + +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 {} +} diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationWithLifecycleTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationWithLifecycleTests.java index 6490b14f..815493ff 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationWithLifecycleTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationWithLifecycleTests.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.cloud.consul.discovery.ConsulLifecycle; @@ -54,6 +55,9 @@ public class ConsulAutoServiceRegistrationWithLifecycleTests { @Autowired(required = false) private ConsulServiceRegistry consulServiceRegistry; + @Autowired(required = false) + private AutoServiceRegistrationProperties autoServiceRegistrationProperties; + @Test public void contextLoads() { assertNull("consulRegistration was created by mistake", consulRegistration); @@ -66,8 +70,12 @@ public class ConsulAutoServiceRegistrationWithLifecycleTests { @ImportAutoConfiguration({ AutoServiceRegistrationConfiguration.class, ConsulAutoConfiguration.class, ConsulAutoServiceRegistrationAutoConfiguration.class }) protected static class TestConfig { @Bean - public ConsulLifecycle consulLifecycle(ConsulClient client, ConsulDiscoveryProperties properties, HeartbeatProperties heartbeatProperties) { - return new ConsulLifecycle(client, properties, heartbeatProperties); + public ConsulLifecycle consulLifecycle(ConsulClient client, + AutoServiceRegistrationProperties autoServiceRegistrationProperties, + ConsulDiscoveryProperties properties, + HeartbeatProperties heartbeatProperties) { + return new ConsulLifecycle(client, autoServiceRegistrationProperties, + properties, heartbeatProperties); } } }