Browse Source

Don't refresh the ipAddress if set by user config.

fixes gh-573
pull/6/head
Spencer Gibb 9 years ago
parent
commit
ddd7979a25
  1. 12
      spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaInstanceConfigBean.java
  2. 38
      spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaInstanceConfigBeanTests.java

12
spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaInstanceConfigBean.java

@ -308,17 +308,17 @@ public class EurekaInstanceConfigBean implements CloudEurekaInstanceConfig { @@ -308,17 +308,17 @@ public class EurekaInstanceConfigBean implements CloudEurekaInstanceConfig {
this.hostInfo.override = true;
}
public void setIpAddress(String ipAddress) {
this.ipAddress = ipAddress;
this.hostInfo.override = true;
}
@Override
public String getHostName(boolean refresh) {
if (refresh) {
boolean originalOverride = this.hostInfo.override;
this.hostInfo = this.inetUtils.findFirstNonLoopbackHostInfo();
this.hostInfo.setOverride(originalOverride);
if (refresh && !this.hostInfo.override) {
this.ipAddress = this.hostInfo.getIpAddress();
if (!this.hostInfo.override) {
this.hostname = this.hostInfo.getHostname();
}
}
return this.preferIpAddress ? this.ipAddress : this.hostname;
}
}

38
spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaInstanceConfigBeanTests.java

@ -43,11 +43,14 @@ public class EurekaInstanceConfigBeanTests { @@ -43,11 +43,14 @@ public class EurekaInstanceConfigBeanTests {
private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
private String hostName;
private String ipAddress;
@Before
public void init() {
this.hostName = new InetUtils(new InetUtilsProperties())
.findFirstNonLoopbackHostInfo().getHostname();
InetUtils.HostInfo hostInfo = new InetUtils(new InetUtilsProperties())
.findFirstNonLoopbackHostInfo();
this.hostName = hostInfo.getHostname();
this.ipAddress = hostInfo.getIpAddress();
}
@After
@ -110,6 +113,37 @@ public class EurekaInstanceConfigBeanTests { @@ -110,6 +113,37 @@ public class EurekaInstanceConfigBeanTests {
assertEquals("marvin", getInstanceConfig().getHostname());
}
@Test
public void initialIpAddress() {
addEnvironment(this.context, "eureka.instance.appGroupName=mygroup");
setupContext();
if (this.ipAddress != null) {
assertEquals(this.ipAddress, getInstanceConfig().getIpAddress());
}
}
@Test
public void refreshIpAddress() {
addEnvironment(this.context, "eureka.instance.appGroupName=mygroup");
setupContext();
ReflectionTestUtils.setField(getInstanceConfig(), "ipAddress", "10.0.0.1");
assertEquals("10.0.0.1", getInstanceConfig().getIpAddress());
getInstanceConfig().getHostName(true);
if (this.ipAddress != null) {
assertEquals(this.ipAddress, getInstanceConfig().getIpAddress());
}
}
@Test
public void refreshIpAddressWhenSetByUser() {
addEnvironment(this.context, "eureka.instance.appGroupName=mygroup");
setupContext();
getInstanceConfig().setIpAddress("10.0.0.1");
assertEquals("10.0.0.1", getInstanceConfig().getIpAddress());
getInstanceConfig().getHostName(true);
assertEquals("10.0.0.1", getInstanceConfig().getIpAddress());
}
@Test
public void testDefaultInitialStatus() {
setupContext();

Loading…
Cancel
Save