Skip to content

Commit c7c9a8a

Browse files
mp911dechristophstrobl
authored andcommitted
DATAREDIS-537 - Add support for Redis Cluster and SSL.
Support SSL, StartTLS and VerifyPeer flags. Original Pull Request: #210
1 parent 7a713aa commit c7c9a8a

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,10 @@ private AbstractRedisClient createRedisClient() {
565565

566566
RedisURI redisURI = new RedisURI(node.getHost(), node.getPort(), timeout, TimeUnit.MILLISECONDS);
567567

568+
redisURI.setSsl(useSsl);
569+
redisURI.setVerifyPeer(verifyPeer);
570+
redisURI.setStartTls(startTls);
571+
568572
if (StringUtils.hasText(password)) {
569573
redisURI.setPassword(password);
570574
}

src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.junit.Before;
2929
import org.junit.Test;
3030
import org.springframework.data.redis.ConnectionFactoryTracker;
31+
import org.springframework.data.redis.connection.ClusterTestVariables;
3132
import org.springframework.data.redis.connection.RedisClusterConfiguration;
3233
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
3334

@@ -243,4 +244,69 @@ public void startTLSOptionShouldBeSetCorrectlyOnClient() {
243244
assertThat(connectionFactory.isStartTls(), is(true));
244245
}
245246

247+
/**
248+
* @see DATAREDIS-537
249+
*/
250+
@Test
251+
public void sslShouldBeSetCorrectlyOnClusterClient() {
252+
253+
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(new RedisClusterConfiguration().clusterNode(ClusterTestVariables.CLUSTER_NODE_1));
254+
connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
255+
connectionFactory.setUseSsl(true);
256+
connectionFactory.afterPropertiesSet();
257+
ConnectionFactoryTracker.add(connectionFactory);
258+
259+
AbstractRedisClient client = (AbstractRedisClient) getField(connectionFactory, "client");
260+
assertThat(client, instanceOf(RedisClusterClient.class));
261+
262+
Iterable<RedisURI> initialUris = (Iterable<RedisURI>) getField(client, "initialUris");
263+
264+
for (RedisURI uri : initialUris) {
265+
assertThat(uri.isSsl(), is(true));
266+
}
267+
}
268+
269+
/**
270+
* @see DATAREDIS-537
271+
*/
272+
@Test
273+
public void startTLSOptionShouldBeSetCorrectlyOnClusterClient() {
274+
275+
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(new RedisClusterConfiguration().clusterNode(ClusterTestVariables.CLUSTER_NODE_1));
276+
connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
277+
connectionFactory.setStartTls(true);
278+
connectionFactory.afterPropertiesSet();
279+
ConnectionFactoryTracker.add(connectionFactory);
280+
281+
AbstractRedisClient client = (AbstractRedisClient) getField(connectionFactory, "client");
282+
assertThat(client, instanceOf(RedisClusterClient.class));
283+
284+
Iterable<RedisURI> initialUris = (Iterable<RedisURI>) getField(client, "initialUris");
285+
286+
for (RedisURI uri : initialUris) {
287+
assertThat(uri.isStartTls(), is(true));
288+
}
289+
}
290+
291+
/**
292+
* @see DATAREDIS-537
293+
*/
294+
@Test
295+
public void verifyPeerTLSOptionShouldBeSetCorrectlyOnClusterClient() {
296+
297+
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(new RedisClusterConfiguration().clusterNode(ClusterTestVariables.CLUSTER_NODE_1));
298+
connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
299+
connectionFactory.setVerifyPeer(true);
300+
connectionFactory.afterPropertiesSet();
301+
ConnectionFactoryTracker.add(connectionFactory);
302+
303+
AbstractRedisClient client = (AbstractRedisClient) getField(connectionFactory, "client");
304+
assertThat(client, instanceOf(RedisClusterClient.class));
305+
306+
Iterable<RedisURI> initialUris = (Iterable<RedisURI>) getField(client, "initialUris");
307+
308+
for (RedisURI uri : initialUris) {
309+
assertThat(uri.isVerifyPeer(), is(true));
310+
}
311+
}
246312
}

0 commit comments

Comments
 (0)