From dc65995e4786063c75b04626255debb5e08ebd31 Mon Sep 17 00:00:00 2001 From: Sergey Krutsko Date: Fri, 11 Jun 2021 09:46:57 -0700 Subject: [PATCH] Allow null values for healthcheck (#1402) --- .../com/netflix/appinfo/InstanceInfo.java | 4 ++-- .../com/netflix/appinfo/InstanceInfoTest.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/eureka-client/src/main/java/com/netflix/appinfo/InstanceInfo.java b/eureka-client/src/main/java/com/netflix/appinfo/InstanceInfo.java index 178e6c5a57..7eaeceade6 100644 --- a/eureka-client/src/main/java/com/netflix/appinfo/InstanceInfo.java +++ b/eureka-client/src/main/java/com/netflix/appinfo/InstanceInfo.java @@ -669,7 +669,7 @@ public Builder setHealthCheckUrls(String relativeUrl, if (explicitUrl != null) { result.healthCheckUrl = explicitUrl.replace( hostNameInterpolationExpression, result.hostName); - } else if (result.isUnsecurePortEnabled) { + } else if (result.isUnsecurePortEnabled && relativeUrl != null) { result.healthCheckUrl = HTTP_PROTOCOL + result.hostName + COLON + result.port + relativeUrl; } @@ -677,7 +677,7 @@ public Builder setHealthCheckUrls(String relativeUrl, if (secureExplicitUrl != null) { result.secureHealthCheckUrl = secureExplicitUrl.replace( hostNameInterpolationExpression, result.hostName); - } else if (result.isSecurePortEnabled) { + } else if (result.isSecurePortEnabled && relativeUrl != null) { result.secureHealthCheckUrl = HTTPS_PROTOCOL + result.hostName + COLON + result.securePort + relativeUrl; } diff --git a/eureka-client/src/test/java/com/netflix/appinfo/InstanceInfoTest.java b/eureka-client/src/test/java/com/netflix/appinfo/InstanceInfoTest.java index 7497ad6c1f..1325e9b369 100644 --- a/eureka-client/src/test/java/com/netflix/appinfo/InstanceInfoTest.java +++ b/eureka-client/src/test/java/com/netflix/appinfo/InstanceInfoTest.java @@ -106,6 +106,26 @@ public void testHealthCheckSetContainsValidUrlEntries() throws Exception { assertThat(instanceInfo.getHealthCheckUrls().size(), is(equalTo(2))); } + @Test + public void testNullUrlEntries() throws Exception { + Builder builder = newBuilder() + .setAppName("test") + .setNamespace("eureka.") + .setHostName("localhost") + .setPort(80) + .setSecurePort(443) + .setHealthCheckUrls(null, null, null) + .setStatusPageUrl(null, null) + .setHomePageUrl(null, null) + .enablePort(PortType.SECURE, true); + + // No URLs for healthcheck , status , homepage + InstanceInfo noHealtcheckInstanceInfo = builder.build(); + assertThat(noHealtcheckInstanceInfo.getHealthCheckUrls().size(), is(equalTo(0))); + assertThat(noHealtcheckInstanceInfo.getStatusPageUrl(), nullValue()); + assertThat(noHealtcheckInstanceInfo.getHomePageUrl(), nullValue()); + } + @Test public void testGetIdWithInstanceIdUsed() { InstanceInfo baseline = InstanceInfoGenerator.takeOne();