Allow non-string return from health query

pull/460/merge
Dave Syer 11 years ago
parent 9d4e940f56
commit c9efa5ac13

@ -78,7 +78,7 @@ public class SimpleHealthIndicator implements HealthIndicator<Map<String, Object
if (StringUtils.hasText(query)) {
try {
health.put("hello",
this.jdbcTemplate.queryForObject(query, String.class));
this.jdbcTemplate.queryForObject(query, Object.class));
}
catch (Exception ex) {
health.put("status", "error");

@ -24,9 +24,11 @@ import javax.sql.DataSource;
import org.junit.Before;
import org.junit.Test;
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDatabaseConnection;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.datasource.SingleConnectionDataSource;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
@ -58,6 +60,28 @@ public class SimpleHealthIndicatorTests {
assertNotNull(health.get("hello"));
}
@Test
public void customQuery() {
this.indicator.setDataSource(this.dataSource);
new JdbcTemplate(this.dataSource)
.execute("CREATE TABLE FOO (id INTEGER IDENTITY PRIMARY KEY)");
this.indicator.setQuery("SELECT COUNT(*) from FOO");
Map<String, Object> health = this.indicator.health();
System.err.println(health);
assertNotNull(health.get("database"));
assertEquals("ok", health.get("status"));
assertNotNull(health.get("hello"));
}
@Test
public void error() {
this.indicator.setDataSource(this.dataSource);
this.indicator.setQuery("SELECT COUNT(*) from BAR");
Map<String, Object> health = this.indicator.health();
assertNotNull(health.get("database"));
assertEquals("error", health.get("status"));
}
@Test
public void connectionClosed() throws Exception {
DataSource dataSource = mock(DataSource.class);

Loading…
Cancel
Save