Polish "Add spring.data.redis.lettuce.read-from property"
See gh-42588 Co-authored-by: Stephane Nicoll <stephane.nicoll@broadcom.com>
This commit is contained in:
committed by
Stéphane Nicoll
parent
fd115980e7
commit
e4bcda258a
@@ -174,17 +174,25 @@ class LettuceConnectionConfiguration extends RedisConnectionConfiguration {
|
||||
}
|
||||
}
|
||||
|
||||
private static ReadFrom getReadFrom(String readFrom) {
|
||||
private ReadFrom getReadFrom(String readFrom) {
|
||||
int index = readFrom.indexOf(':');
|
||||
if (index == -1) {
|
||||
String name = readFrom.replaceAll("-", "");
|
||||
return ReadFrom.valueOf(name);
|
||||
return ReadFrom.valueOf(getCanonicalReadFromName(readFrom));
|
||||
}
|
||||
String name = readFrom.substring(0, index).replaceAll("-", "");
|
||||
String name = getCanonicalReadFromName(readFrom.substring(0, index));
|
||||
String value = readFrom.substring(index + 1);
|
||||
return ReadFrom.valueOf(name + ":" + value);
|
||||
}
|
||||
|
||||
private String getCanonicalReadFromName(String name) {
|
||||
StringBuilder canonicalName = new StringBuilder(name.length());
|
||||
name.chars()
|
||||
.filter(Character::isLetterOrDigit)
|
||||
.map(Character::toLowerCase)
|
||||
.forEach((c) -> canonicalName.append((char) c));
|
||||
return canonicalName.toString();
|
||||
}
|
||||
|
||||
private ClientOptions createClientOptions(
|
||||
ObjectProvider<LettuceClientOptionsBuilderCustomizer> clientConfigurationBuilderCustomizers) {
|
||||
ClientOptions.Builder builder = initializeClientOptionsBuilder();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
* Copyright 2012-2025 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.
|
||||
@@ -122,7 +122,7 @@ class RedisAutoConfigurationTests {
|
||||
});
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ParameterizedTest(name = "{0}")
|
||||
@MethodSource
|
||||
void shouldConfigureLettuceReadFromProperty(String type, ReadFrom readFrom) {
|
||||
this.contextRunner.withPropertyValues("spring.data.redis.lettuce.read-from:" + type).run((context) -> {
|
||||
@@ -132,6 +132,14 @@ class RedisAutoConfigurationTests {
|
||||
});
|
||||
}
|
||||
|
||||
static Stream<Arguments> shouldConfigureLettuceReadFromProperty() {
|
||||
return Stream.of(Arguments.of("any", ReadFrom.ANY), Arguments.of("any-replica", ReadFrom.ANY_REPLICA),
|
||||
Arguments.of("lowest-latency", ReadFrom.LOWEST_LATENCY), Arguments.of("replica", ReadFrom.REPLICA),
|
||||
Arguments.of("replica-preferred", ReadFrom.REPLICA_PREFERRED),
|
||||
Arguments.of("upstream", ReadFrom.UPSTREAM),
|
||||
Arguments.of("upstream-preferred", ReadFrom.UPSTREAM_PREFERRED));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldConfigureLettuceRegexReadFromProperty() {
|
||||
RedisClusterNode node1 = createRedisNode("redis-node-1.region-1.example.com");
|
||||
@@ -688,14 +696,6 @@ class RedisAutoConfigurationTests {
|
||||
return ReflectionTestUtils.invokeMethod(factory, "getRedisUsername");
|
||||
}
|
||||
|
||||
static Stream<Arguments> shouldConfigureLettuceReadFromProperty() {
|
||||
return Stream.of(Arguments.of("any", ReadFrom.ANY), Arguments.of("any-replica", ReadFrom.ANY_REPLICA),
|
||||
Arguments.of("lowest-latency", ReadFrom.LOWEST_LATENCY), Arguments.of("replica", ReadFrom.REPLICA),
|
||||
Arguments.of("replica-preferred", ReadFrom.REPLICA_PREFERRED),
|
||||
Arguments.of("upstream", ReadFrom.UPSTREAM),
|
||||
Arguments.of("upstream-preferred", ReadFrom.UPSTREAM_PREFERRED));
|
||||
}
|
||||
|
||||
private RedisClusterNode createRedisNode(String host) {
|
||||
RedisClusterNode node = new RedisClusterNode();
|
||||
node.setUri(RedisURI.Builder.redis(host).build());
|
||||
|
||||
Reference in New Issue
Block a user