Set the version to 'unknown' when redis_version is missing

See gh-48320

Signed-off-by: Huang Xiao <youngledo@qq.com>
This commit is contained in:
Huang Xiao
2025-11-28 09:54:09 +00:00
committed by Andy Wilkinson
parent 8becf59d34
commit 2b67bbe07d
3 changed files with 31 additions and 1 deletions
@@ -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();
}
@@ -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);
@@ -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);