Browse Source

Set the version to 'unknown' when redis_version is missing

See gh-48320

Signed-off-by: Huang Xiao <youngledo@qq.com>
pull/48470/head
Huang Xiao 4 weeks ago committed by Andy Wilkinson
parent
commit
2b67bbe07d
  1. 2
      spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/data/redis/RedisHealth.java
  2. 13
      spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/redis/RedisHealthIndicatorTests.java
  3. 17
      spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/redis/RedisReactiveHealthIndicatorTests.java

2
spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/data/redis/RedisHealth.java

@ -34,7 +34,7 @@ final class RedisHealth { @@ -34,7 +34,7 @@ final class RedisHealth {
}
static Builder up(Health.Builder builder, Properties info) {
builder.withDetail("version", info.getProperty("redis_version"));
builder.withDetail("version", info.getProperty("redis_version", "unknown"));
return builder.up();
}

13
spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/redis/RedisHealthIndicatorTests.java

@ -62,6 +62,19 @@ class RedisHealthIndicatorTests { @@ -62,6 +62,19 @@ class RedisHealthIndicatorTests {
assertThat(health.getDetails()).containsEntry("version", "2.8.9");
}
@Test
void redisIsUpWithMissingVersion() {
Properties info = new Properties();
RedisConnection redisConnection = mock(RedisConnection.class);
RedisServerCommands serverCommands = mock(RedisServerCommands.class);
given(redisConnection.serverCommands()).willReturn(serverCommands);
given(serverCommands.info()).willReturn(info);
RedisHealthIndicator healthIndicator = createHealthIndicator(redisConnection);
Health health = healthIndicator.health();
assertThat(health.getStatus()).isEqualTo(Status.UP);
assertThat(health.getDetails()).containsEntry("version", "unknown");
}
@Test
void redisIsDown() {
RedisConnection redisConnection = mock(RedisConnection.class);

17
spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/redis/RedisReactiveHealthIndicatorTests.java

@ -68,6 +68,23 @@ class RedisReactiveHealthIndicatorTests { @@ -68,6 +68,23 @@ class RedisReactiveHealthIndicatorTests {
then(redisConnection).should().closeLater();
}
@Test
void redisIsUpWithMissingVersion() {
Properties info = new Properties();
ReactiveRedisConnection redisConnection = mock(ReactiveRedisConnection.class);
given(redisConnection.closeLater()).willReturn(Mono.empty());
ReactiveServerCommands commands = mock(ReactiveServerCommands.class);
given(commands.info("server")).willReturn(Mono.just(info));
RedisReactiveHealthIndicator healthIndicator = createHealthIndicator(redisConnection, commands);
Mono<Health> health = healthIndicator.health();
StepVerifier.create(health).consumeNextWith((h) -> {
assertThat(h.getStatus()).isEqualTo(Status.UP);
assertThat(h.getDetails()).containsOnlyKeys("version");
assertThat(h.getDetails()).containsEntry("version", "unknown");
}).expectComplete().verify(Duration.ofSeconds(30));
then(redisConnection).should().closeLater();
}
@Test
void healthWhenClusterStateIsAbsentShouldBeUp() {
ReactiveRedisConnectionFactory redisConnectionFactory = createClusterConnectionFactory(null);

Loading…
Cancel
Save