diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ServerInfo.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ServerInfo.java index 8f77cb98a..3381463d7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ServerInfo.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/monitor/ServerInfo.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,19 +15,20 @@ */ package org.springframework.data.mongodb.monitor; -import java.net.InetAddress; import java.net.UnknownHostException; -import com.mongodb.Mongo; import org.springframework.jmx.export.annotation.ManagedMetric; import org.springframework.jmx.export.annotation.ManagedOperation; import org.springframework.jmx.export.annotation.ManagedResource; import org.springframework.jmx.support.MetricType; +import com.mongodb.Mongo; + /** * Expose basic server information via JMX * * @author Mark Pollack + * @author Thomas Darimont */ @ManagedResource(description = "Server Information") public class ServerInfo extends AbstractMonitor { @@ -36,9 +37,20 @@ public class ServerInfo extends AbstractMonitor { this.mongo = mongo; } + /** + * Returns the hostname of the used server reported by mongo. + * + * @return the reported hostname can also be an IP address. + * @throws UnknownHostException + */ @ManagedOperation(description = "Server host name") public String getHostName() throws UnknownHostException { - return InetAddress.getLocalHost().getHostName(); + + /* + * UnknownHostException is not necessary anymore, but clients could have + * called this method in a try..catch(UnknownHostException) already + */ + return getServerStatus().getServerUsed().getHost(); } @ManagedMetric(displayName = "Uptime Estimate") diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/monitor/MongoMonitorIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/monitor/MongoMonitorIntegrationTests.java index 1400de2a3..da9290058 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/monitor/MongoMonitorIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/monitor/MongoMonitorIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,28 +15,32 @@ */ package org.springframework.data.mongodb.monitor; -import com.mongodb.Mongo; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.*; + +import java.net.UnknownHostException; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.monitor.OperationCounters; -import org.springframework.data.mongodb.monitor.ServerInfo; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.Assert; import org.springframework.util.StringUtils; +import com.mongodb.Mongo; + /** * This test class assumes that you are already running the MongoDB server. * * @author Mark Pollack + * @author Thomas Darimont */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration +@ContextConfiguration("classpath:infrastructure.xml") public class MongoMonitorIntegrationTests { - @Autowired - Mongo mongo; + @Autowired Mongo mongo; @Test public void serverInfo() { @@ -45,9 +49,29 @@ public class MongoMonitorIntegrationTests { Assert.isTrue(StringUtils.hasText("1.")); } + /** + * @throws UnknownHostException + * @see DATAMONGO-685 + */ + @Test + public void getHostNameShouldReturnServerNameReportedByMongo() throws UnknownHostException { + + ServerInfo serverInfo = new ServerInfo(mongo); + + String hostName = null; + try { + hostName = serverInfo.getHostName(); + } catch (UnknownHostException e) { + throw e; + } + + assertThat(hostName, is(notNullValue())); + assertThat(hostName, is("127.0.0.1")); + } + @Test public void operationCounters() { OperationCounters operationCounters = new OperationCounters(mongo); operationCounters.getInsertCount(); } -} \ No newline at end of file +}