diff --git a/docker-compose.yml b/docker-compose.yml index ff2e9712..d464815d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,13 +1,8 @@ # Work in Progress consul: - image: progrium/consul - volumes: - - /data - - /config - - ./src/test/resources/consul_ui:/ui + image: library/consul ports: - "8300:8300" - "8400:8400" - "8500:8500" - "8600:8600" - command: -server -bootstrap -data-dir /data -ui-dir /ui diff --git a/docs/src/main/asciidoc/spring-cloud-consul.adoc b/docs/src/main/asciidoc/spring-cloud-consul.adoc index 531148e7..89ed1d5e 100644 --- a/docs/src/main/asciidoc/spring-cloud-consul.adoc +++ b/docs/src/main/asciidoc/spring-cloud-consul.adoc @@ -42,7 +42,6 @@ Example Consul client: [source,java,indent=0] ---- @SpringBootApplication -@EnableDiscoveryClient @RestController public class Application { @@ -73,7 +72,7 @@ CAUTION: If you use <>, t The default service name, instance id and port, taken from the `Environment`, are `${spring.application.name}`, the Spring Context ID and `${server.port}` respectively. -`@EnableDiscoveryClient` make the app into both a Consul "service" (i.e. it registers itself) and a "client" (i.e. it can query Consul to locate other services). +To disable the Consul Discovery Client you can set `spring.cloud.consul.discovery.enabled` to `false`. === HTTP Health Check @@ -322,7 +321,6 @@ The `clusterConfig` and `appConfig` sections must match, so it's useful to put t .Turbine.java ---- @EnableTurbine -@EnableDiscoveryClient @SpringBootApplication public class Turbine { public static void main(String[] args) { diff --git a/spring-cloud-consul-discovery/src/main/resources/META-INF/spring.factories b/spring-cloud-consul-discovery/src/main/resources/META-INF/spring.factories index b746e722..d1d8101c 100644 --- a/spring-cloud-consul-discovery/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-consul-discovery/src/main/resources/META-INF/spring.factories @@ -2,10 +2,7 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.cloud.consul.discovery.RibbonConsulAutoConfiguration,\ org.springframework.cloud.consul.discovery.configclient.ConsulConfigServerAutoConfiguration,\ org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistrationAutoConfiguration,\ -org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistryAutoConfiguration - -# Discovery Client Configuration -org.springframework.cloud.client.discovery.EnableDiscoveryClient=\ +org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistryAutoConfiguration,\ org.springframework.cloud.consul.discovery.ConsulDiscoveryClientConfiguration diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientAclTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientAclTests.java index 33d1f91e..ebf0abfb 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientAclTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientAclTests.java @@ -72,7 +72,6 @@ public class ConsulDiscoveryClientAclTests { } @Configuration - @EnableDiscoveryClient @EnableAutoConfiguration @Import({ ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class }) public static class MyTestConfig { diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientCustomizedTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientCustomizedTests.java index d9fe8fef..a43e550f 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientCustomizedTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientCustomizedTests.java @@ -101,7 +101,6 @@ public class ConsulDiscoveryClientCustomizedTests { } @Configuration - @EnableDiscoveryClient @EnableAutoConfiguration @Import({ ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class }) public static class MyTestConfig { 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 515b9804..32f1a34a 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 @@ -94,7 +94,6 @@ public class ConsulDiscoveryClientDefaultQueryTagTests { } @Configuration - @EnableDiscoveryClient @EnableAutoConfiguration @Import({ ConsulDiscoveryClientConfiguration.class }) protected static class TestConfig { diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientLocalServiceInstanceTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientLocalServiceInstanceTests.java index b3700926..fb39a08f 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientLocalServiceInstanceTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientLocalServiceInstanceTests.java @@ -152,7 +152,6 @@ public class ConsulDiscoveryClientLocalServiceInstanceTests { } @Configuration - @EnableDiscoveryClient @ImportAutoConfiguration({ ConsulDiscoveryClientConfiguration.class }) protected static class LocalServiceTestConfig { diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientTests.java index 409815fe..4a25687a 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientTests.java @@ -114,7 +114,6 @@ public class ConsulDiscoveryClientTests { } @Configuration - @EnableDiscoveryClient @EnableAutoConfiguration @Import({ ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class }) public static class MyTestConfig { 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 new file mode 100644 index 00000000..a19695ed --- /dev/null +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedTests.java @@ -0,0 +1,104 @@ +/* + * Copyright 2013-2015 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.discovery; + +import java.util.List; + +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.test.context.SpringBootTest; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.junit4.SpringRunner; + +import com.ecwid.consul.v1.ConsulClient; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +/** + * @author Marcin Biegan + * @deprecated remove in Edgware + */ +@Deprecated +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ConsulLifecycleCustomizedTests.MyTestConfig.class, + properties = { "spring.application.name=testCustomLifecycle", "spring.cloud.consul.discovery.instanceId=foo" }, + webEnvironment = RANDOM_PORT) +public class ConsulLifecycleCustomizedTests { + + @Autowired + private ConsulDiscoveryClient discoveryClient; + @Autowired + private ConsulLifecycle lifecycle1; + @Autowired + private CustomConsulLifecycle lifecycle2; + @Autowired + private ConsulDiscoveryProperties properties; + + @Test + public void getInstancesForServiceWorks() { + List instances = discoveryClient.getInstances("consul"); + assertNotNull("instances was null", instances); + assertFalse("instances was empty", instances.isEmpty()); + } + + @Test + public void usesCustomConsulLifecycle() { + assertEquals("serviceId is not customized", "foo:bar", lifecycle1.getInstanceId()); + assertEquals("serviceId is not customized", "foo:bar", lifecycle2.getInstanceId()); + } + + @Test + public void instanceIdIsCached() { + // simulate a refresh where instanceId is changed + this.properties.setInstanceId("baz"); + assertEquals("serviceId is not cached", "foo:bar", lifecycle2.getInstanceId()); + } + + @Configuration + @EnableAutoConfiguration + public static class MyTestConfig { + @Bean + public ConsulLifecycle customizedLifecycle(ConsulClient client, + ConsulDiscoveryProperties properties, HeartbeatProperties ttlConfig) { + return new CustomConsulLifecycle(client, properties, ttlConfig); + } + } + + public static class CustomConsulLifecycle extends ConsulLifecycle { + private ConsulDiscoveryProperties properties; + + @Autowired + public CustomConsulLifecycle(ConsulClient client, + ConsulDiscoveryProperties properties, HeartbeatProperties ttlConfig) { + super(client, properties, ttlConfig); + this.properties = properties; + } + + @Override + public String getInstanceId() { + return super.getInstanceId()+":bar"; + } + } +} diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulServerListAclTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulServerListAclTests.java index 99e6bb47..018cfda1 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulServerListAclTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulServerListAclTests.java @@ -64,7 +64,6 @@ public class ConsulServerListAclTests { } @Configuration - @EnableDiscoveryClient @EnableAutoConfiguration @Import({ConsulAutoConfiguration.class, ConsulDiscoveryClientConfiguration.class}) public static class TestConfig { diff --git a/spring-cloud-consul-sample/src/main/java/org/springframework/cloud/consul/sample/SampleConsulApplication.java b/spring-cloud-consul-sample/src/main/java/org/springframework/cloud/consul/sample/SampleConsulApplication.java index a49dc6eb..fe03c4b3 100644 --- a/spring-cloud-consul-sample/src/main/java/org/springframework/cloud/consul/sample/SampleConsulApplication.java +++ b/spring-cloud-consul-sample/src/main/java/org/springframework/cloud/consul/sample/SampleConsulApplication.java @@ -46,7 +46,6 @@ import org.springframework.web.client.RestTemplate; */ @Configuration @EnableAutoConfiguration -@EnableDiscoveryClient @RestController @EnableConfigurationProperties @EnableFeignClients