DATAREDIS-949 - Consider max-redirects using Lettuce.
LettuceConnectionFactory now considers the maximal redirection limit for Redis Cluster redirections. Previously, the max-redirects limit was not configured in Lettuce. Original Pull Request: #417
This commit is contained in:
committed by
Christoph Strobl
parent
2eb7067e8c
commit
50818fbb32
@@ -21,6 +21,7 @@ import static org.hamcrest.core.IsInstanceOf.*;
|
||||
import static org.hamcrest.core.IsNull.*;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.springframework.data.redis.connection.ClusterTestVariables.*;
|
||||
import static org.springframework.data.redis.connection.RedisConfiguration.*;
|
||||
import static org.springframework.data.redis.connection.lettuce.LettuceTestClientResources.*;
|
||||
@@ -32,6 +33,7 @@ import io.lettuce.core.RedisClient;
|
||||
import io.lettuce.core.RedisURI;
|
||||
import io.lettuce.core.api.StatefulConnection;
|
||||
import io.lettuce.core.api.StatefulRedisConnection;
|
||||
import io.lettuce.core.cluster.ClusterClientOptions;
|
||||
import io.lettuce.core.cluster.RedisClusterClient;
|
||||
import io.lettuce.core.cluster.api.StatefulRedisClusterConnection;
|
||||
import io.lettuce.core.codec.ByteArrayCodec;
|
||||
@@ -711,6 +713,49 @@ public class LettuceConnectionFactoryUnitTests {
|
||||
assertThat(redisUri.getDatabase(), is(equalTo(1)));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-949
|
||||
public void maxRedirectsShouldBeSetOnClientOptions() {
|
||||
|
||||
RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration();
|
||||
clusterConfiguration.clusterNode("localhost", 1234).setMaxRedirects(42);
|
||||
|
||||
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfiguration,
|
||||
LettuceClientConfiguration.defaultConfiguration());
|
||||
connectionFactory.afterPropertiesSet();
|
||||
ConnectionFactoryTracker.add(connectionFactory);
|
||||
|
||||
RedisClusterClient client = (RedisClusterClient) getField(connectionFactory, "client");
|
||||
|
||||
ClusterClientOptions options = (ClusterClientOptions) client.getOptions();
|
||||
|
||||
assertThat(options.getMaxRedirects(), is(42));
|
||||
assertThat(options.isValidateClusterNodeMembership(), is(true));
|
||||
assertThat(options.getTimeoutOptions().isApplyConnectionTimeout(), is(true));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-949
|
||||
public void maxRedirectsShouldBeSetOnClusterClientOptions() {
|
||||
|
||||
RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration();
|
||||
clusterConfiguration.clusterNode("localhost", 1234).setMaxRedirects(42);
|
||||
|
||||
LettuceClientConfiguration clientConfiguration = LettuceClientConfiguration.builder()
|
||||
.clientOptions(ClusterClientOptions.builder().validateClusterNodeMembership(false).build()).build();
|
||||
|
||||
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfiguration,
|
||||
clientConfiguration);
|
||||
connectionFactory.afterPropertiesSet();
|
||||
ConnectionFactoryTracker.add(connectionFactory);
|
||||
|
||||
RedisClusterClient client = (RedisClusterClient) getField(connectionFactory, "client");
|
||||
|
||||
ClusterClientOptions options = (ClusterClientOptions) client.getOptions();
|
||||
|
||||
assertThat(options.getMaxRedirects(), is(42));
|
||||
assertThat(options.isValidateClusterNodeMembership(), is(false));
|
||||
assertThat(options.getTimeoutOptions().isApplyConnectionTimeout(), is(false));
|
||||
}
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
static class CustomRedisConfiguration implements RedisConfiguration, WithHostAndPort {
|
||||
|
||||
Reference in New Issue
Block a user