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

fixes gh-573
This commit is contained in:
Spencer Gibb
2016-01-20 13:52:58 -07:00
parent 3fb26f69e5
commit ddd7979a25
2 changed files with 43 additions and 9 deletions

View File

@@ -308,16 +308,16 @@ 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();
}
this.hostname = this.hostInfo.getHostname();
}
return this.preferIpAddress ? this.ipAddress : this.hostname;
}

View File

@@ -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 {
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();