Browse Source

Improve details of neo4h health indicator

This commit changes the neo4j health indicator to provide the version
and edition of the neo4j database.

See gh-20356
pull/20388/head
Said BOUDJELDA 6 years ago committed by Stephane Nicoll
parent
commit
b09d5d27e0
  1. 5
      spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/neo4j/Neo4jHealthIndicator.java
  2. 12
      spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/neo4j/Neo4jHealthIndicatorTests.java

5
spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/neo4j/Neo4jHealthIndicator.java

@ -40,7 +40,8 @@ public class Neo4jHealthIndicator extends AbstractHealthIndicator { @@ -40,7 +40,8 @@ public class Neo4jHealthIndicator extends AbstractHealthIndicator {
/**
* The Cypher statement used to verify Neo4j is up.
*/
static final String CYPHER = "match (n) return count(n) as nodes";
static final String CYPHER = "CALL dbms.components() YIELD versions, edition"
+ " UNWIND versions as version return version, edition";
private final SessionFactory sessionFactory;
@ -69,7 +70,7 @@ public class Neo4jHealthIndicator extends AbstractHealthIndicator { @@ -69,7 +70,7 @@ public class Neo4jHealthIndicator extends AbstractHealthIndicator {
*/
protected void extractResult(Session session, Health.Builder builder) throws Exception {
Result result = session.query(CYPHER, Collections.emptyMap());
builder.up().withDetail("nodes", result.queryResults().iterator().next().get("nodes"));
builder.up().withDetails(result.queryResults().iterator().next());
}
}

12
spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/neo4j/Neo4jHealthIndicatorTests.java

@ -61,17 +61,21 @@ class Neo4jHealthIndicatorTests { @@ -61,17 +61,21 @@ class Neo4jHealthIndicatorTests {
void neo4jUp() {
Result result = mock(Result.class);
given(this.session.query(Neo4jHealthIndicator.CYPHER, Collections.emptyMap())).willReturn(result);
int nodeCount = 500;
Map<String, Object> expectedCypherDetails = new HashMap<>();
expectedCypherDetails.put("nodes", nodeCount);
String edition = "community";
String version = "4.0.0";
expectedCypherDetails.put("edition", edition);
expectedCypherDetails.put("version", version);
List<Map<String, Object>> queryResults = new ArrayList<>();
queryResults.add(expectedCypherDetails);
given(result.queryResults()).willReturn(queryResults);
Health health = this.neo4jHealthIndicator.health();
assertThat(health.getStatus()).isEqualTo(Status.UP);
Map<String, Object> details = health.getDetails();
int nodeCountFromDetails = (int) details.get("nodes");
assertThat(nodeCountFromDetails).isEqualTo(nodeCount);
String editionFromDetails = details.get("edition").toString();
String versionFromDetails = details.get("version").toString();
assertThat(editionFromDetails).isEqualTo(edition);
assertThat(versionFromDetails).isEqualTo(version);
}
@Test

Loading…
Cancel
Save