From e8c0c5eaba766b7a3b3e87fa19a9e422e41792b5 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 16 Mar 2021 11:59:05 +0100 Subject: [PATCH] SkipPatternConfiguration will reuse management.server.base-path property (#1883) fixes gh-1880 --- .../web/SkipPatternConfiguration.java | 10 ++++++++-- .../web/SkipPatternProviderConfigTest.java | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/web/SkipPatternConfiguration.java b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/web/SkipPatternConfiguration.java index 8bf42509f..f910c767c 100644 --- a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/web/SkipPatternConfiguration.java +++ b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/web/SkipPatternConfiguration.java @@ -24,6 +24,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import org.springframework.beans.factory.BeanCurrentlyInCreationException; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties; import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType; @@ -211,9 +212,14 @@ class SkipPatternConfiguration { @ConditionalOnProperty(name = "management.server.servlet.context-path", havingValue = "/", matchIfMissing = true) SingleSkipPattern skipPatternForActuatorEndpointsDifferentPort(Environment environment, - final ServerProperties serverProperties, final WebEndpointProperties webEndpointProperties, + final WebEndpointProperties webEndpointProperties, + ObjectProvider managementServerProperties, final EndpointsSupplier endpointsSupplier) { - return () -> getEndpointsPatterns(environment, null, webEndpointProperties, endpointsSupplier); + return () -> { + ManagementServerProperties props = managementServerProperties.getIfAvailable(); + return getEndpointsPatterns(environment, props != null ? props.getBasePath() : null, + webEndpointProperties, endpointsSupplier); + }; } } diff --git a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/instrument/web/SkipPatternProviderConfigTest.java b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/instrument/web/SkipPatternProviderConfigTest.java index cba8e3ac3..c09b160fc 100644 --- a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/instrument/web/SkipPatternProviderConfigTest.java +++ b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/instrument/web/SkipPatternProviderConfigTest.java @@ -212,6 +212,20 @@ public class SkipPatternProviderConfigTest { }); } + @Test + public void should_return_endpoints_with_base_path_when_management_port_is_different() { + contextRunner + .withConfiguration( + UserConfigurations.of(ServerPropertiesConfig.class, ManagementServerPropertiesConfig.class)) + .withPropertyValues("management.server.base-path=/foo", "management.endpoints.web.base-path=/actuator", + "management.server.port=0") + .run(context -> { + BDDAssertions.then(extractAllPatterns(context)).containsExactlyInAnyOrder( + "/foo/actuator(/|/(health|health/.*|info|info/.*))?", + SleuthWebProperties.DEFAULT_SKIP_PATTERN); + }); + } + @Test public void should_return_endpoints_with_context_path_and_base_path_set_to_root_different_port_with_placeholder() { contextRunner.withConfiguration(UserConfigurations.of(ServerPropertiesConfig.class)) @@ -313,6 +327,12 @@ public class SkipPatternProviderConfigTest { } + @Configuration(proxyBeanMethods = false) + @EnableConfigurationProperties(ManagementServerProperties.class) + static class ManagementServerPropertiesConfig { + + } + @Configuration(proxyBeanMethods = false) static class EmptyEndpoints {