From fd20f81885684e223b2e074082f5097fd3c0d07a Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Mon, 30 Jul 2018 13:48:46 -0400 Subject: [PATCH] Make sure management path is set correctly when not using metadata provider. Fixes #3098 (#3100) --- .../eureka/EurekaClientAutoConfiguration.java | 8 ++++++++ .../eureka/EurekaClientAutoConfigurationTests.java | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java index 7ab63051b..ab6164138 100644 --- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java @@ -175,6 +175,14 @@ public class EurekaClientAutoConfiguration { if (metadataMap.get("management.port") == null) { metadataMap.put("management.port", String.valueOf(metadata.getManagementPort())); } + } else { + //without the metadata the status and health check URLs will not be set + //and the status page and health check url paths will not include the + //context path so set them here + if(StringUtils.hasText(managementContextPath)) { + instance.setHealthCheckUrlPath(managementContextPath + instance.getHealthCheckUrlPath()); + instance.setStatusPageUrlPath(managementContextPath + instance.getStatusPageUrlPath()); + } } setupJmxPort(instance, jmxPort); diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java index a6e20b8d0..60e66bece 100644 --- a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java @@ -220,6 +220,20 @@ public class EurekaClientAutoConfigurationTests { instance.getHealthCheckUrl().endsWith(":8989/management/health")); } + @Test + public void statusPageUrl_and_healthCheckUrl_contain_management_context_path_random_port() throws Exception { + addEnvironment(this.context, + "server.port=0", "management.contextPath=/management"); + + setupContext(RefreshAutoConfiguration.class); + EurekaInstanceConfigBean instance = this.context + .getBean(EurekaInstanceConfigBean.class); + assertTrue("Wrong status page: " + instance.getStatusPageUrlPath(), + instance.getStatusPageUrlPath().equals("/management/info")); + assertTrue("Wrong health check: " + instance.getHealthCheckUrlPath(), + instance.getHealthCheckUrlPath().equals("/management/health")); + } + @Test public void statusPageUrlPathAndManagementPortAndContextPath() { addEnvironment(this.context, "server.port=8989",