From 3e2357a5cbf8728180bb5173a82da5fbede9d40d Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 10 Apr 2020 15:23:37 -0400 Subject: [PATCH 1/4] Use metadata if tags-as-metadata=false for config server See gh-630 --- .../consul/discovery/ConsulDiscoveryProperties.java | 3 ++- .../ConsulConfigServerAutoConfiguration.java | 9 ++++++++- .../ConsulConfigServerAutoConfigurationTests.java | 12 ++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java index c64a8b51..e650370d 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java @@ -18,6 +18,7 @@ package org.springframework.cloud.consul.discovery; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -51,7 +52,7 @@ public class ConsulDiscoveryProperties { private List tags = new ArrayList<>(); /** Metadata to use when registering service. */ - private Map metadata; + private Map metadata = new LinkedHashMap<>(); /** Enable tag override for the registered service. */ private Boolean enableTagOverride; diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfiguration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfiguration.java index a69c585a..c6da495a 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfiguration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfiguration.java @@ -39,6 +39,8 @@ import org.springframework.util.StringUtils; ConfigServerProperties.class }) public class ConsulConfigServerAutoConfiguration { + public static final String CONFIG_PATH_KEY = "configPath"; + @Autowired(required = false) private ConsulDiscoveryProperties properties; @@ -52,7 +54,12 @@ public class ConsulConfigServerAutoConfiguration { } String prefix = this.server.getPrefix(); if (StringUtils.hasText(prefix)) { - this.properties.getTags().add("configPath=" + prefix); + if (this.properties.isTagsAsMetadata()) { + this.properties.getTags().add(CONFIG_PATH_KEY + "=" + prefix); + } + else { + this.properties.getMetadata().put(CONFIG_PATH_KEY, prefix); + } } } diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfigurationTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfigurationTests.java index 482d510d..f6f8cc9d 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfigurationTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfigurationTests.java @@ -63,6 +63,18 @@ public class ConsulConfigServerAutoConfigurationTests { assertThat(properties.getTags()).containsExactly("configPath=/config"); } + @Test + public void onWhenRequestedMetadata() throws Exception { + setup("spring.cloud.config.server.prefix=/config", + "spring.cloud.consul.discovery.tags-as-metadata=false"); + assertThat( + this.context.getBeanNamesForType(ConsulDiscoveryProperties.class).length) + .isEqualTo(1); + ConsulDiscoveryProperties properties = this.context + .getBean(ConsulDiscoveryProperties.class); + assertThat(properties.getMetadata()).containsEntry("configPath", "/config"); + } + private void setup(String... env) { this.context = new SpringApplicationBuilder( PropertyPlaceholderAutoConfiguration.class, From 3336018c7face3f0addaf8f4d6fe64d87bc28796 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 16 Apr 2020 10:29:12 -0400 Subject: [PATCH 2/4] Move to try/catch for test --- .../config/ConsulPropertySourceLocatorRetryTests.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorRetryTests.java b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorRetryTests.java index 232c6931..b4330dd9 100644 --- a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorRetryTests.java +++ b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorRetryTests.java @@ -48,7 +48,8 @@ public class ConsulPropertySourceLocatorRetryTests { @Test public void testRetry() { - Assert.assertThrows(TransportException.class, () -> { + //Assert.assertThrows(TransportException.class, () -> { + try { new SpringApplicationBuilder(Config.class).properties( "spring.application.name=testConsulPropertySourceLocatorRetry", "spring.cloud.consul.host=53210a7c-4809-42cb-8b30-057d2db85fcc", @@ -56,7 +57,12 @@ public class ConsulPropertySourceLocatorRetryTests { "spring.cloud.consul.port=65530", "spring.cloud.consul.retry.maxAttempts=1", "spring.cloud.consul.config.failFast=true").run(); - }); + Assert.fail("Did not throw TransportException"); + } + catch (TransportException e) { + // success + } + //}); assertThat(output).contains("RetryContext retrieved"); } From ff3c3106ca8ab86615db6fd9f1316fb9d3f6427f Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 16 Apr 2020 10:34:01 -0400 Subject: [PATCH 3/4] Adds javadoc comment --- .../configclient/ConsulConfigServerAutoConfiguration.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfiguration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfiguration.java index c6da495a..67b06428 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfiguration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/configclient/ConsulConfigServerAutoConfiguration.java @@ -39,6 +39,9 @@ import org.springframework.util.StringUtils; ConfigServerProperties.class }) public class ConsulConfigServerAutoConfiguration { + /** + * The metadata key for the path for config server. + */ public static final String CONFIG_PATH_KEY = "configPath"; @Autowired(required = false) From c5959c00ad104fce31539e5037f68b31d1eb65ae Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 16 Apr 2020 10:37:17 -0400 Subject: [PATCH 4/4] removes commented out code --- .../config/ConsulPropertySourceLocatorRetryTests.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorRetryTests.java b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorRetryTests.java index b4330dd9..e4783f05 100644 --- a/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorRetryTests.java +++ b/spring-cloud-consul-config/src/test/java/org/springframework/cloud/consul/config/ConsulPropertySourceLocatorRetryTests.java @@ -31,16 +31,6 @@ import static org.assertj.core.api.Assertions.assertThat; /** * @author Spencer Gibb */ -/* - * @RunWith(SpringRunner.class) - * - * @SpringBootTest(classes = ConsulPropertySourceLocatorRetryTests.Config.class, - * properties = { "spring.application.name=testConsulPropertySourceLocatorRetry", - * "spring.cloud.consul.host=53210a7c-4809-42cb-8b30-057d2db85fcc", - * "logging.level.org.springframework.retry=TRACE", "spring.cloud.consul.port=65530", - * "spring.cloud.consul.retry.maxAttempts=1", "spring.cloud.consul.config.failFast=true" - * }, webEnvironment = RANDOM_PORT) - */ public class ConsulPropertySourceLocatorRetryTests { @Rule