diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java index b35efd926..417a8fa24 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java @@ -77,6 +77,7 @@ import org.springframework.util.ClassUtils; * @author Christoph Strobl * @author Mark Paluch * @author Balázs Németh + * @author Ruben Cervilla */ public class LettuceConnectionFactory implements InitializingBean, DisposableBean, RedisConnectionFactory, ReactiveRedisConnectionFactory { diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java index ae2b2e685..d398721db 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java @@ -29,9 +29,6 @@ import io.lettuce.core.ClientOptions; import io.lettuce.core.RedisClient; import io.lettuce.core.RedisURI; import io.lettuce.core.cluster.RedisClusterClient; -import io.lettuce.core.cluster.api.StatefulRedisClusterConnection; -import io.lettuce.core.codec.ByteArrayCodec; -import io.lettuce.core.codec.RedisCodec; import io.lettuce.core.resource.ClientResources; import java.security.NoSuchAlgorithmException; @@ -41,8 +38,6 @@ import java.util.Collections; import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.mockito.ArgumentMatchers; -import org.springframework.beans.DirectFieldAccessor; import org.springframework.data.redis.ConnectionFactoryTracker; import org.springframework.data.redis.connection.RedisClusterConfiguration; import org.springframework.data.redis.connection.RedisClusterConnection; @@ -57,6 +52,7 @@ import org.springframework.test.util.ReflectionTestUtils; * @author Christoph Strobl * @author Mark Paluch * @author Balázs Németh + * @author Ruben Cervilla */ public class LettuceConnectionFactoryUnitTests { @@ -68,7 +64,7 @@ public class LettuceConnectionFactoryUnitTests { } @After - public void tearDown() throws Exception { + public void tearDown() { ConnectionFactoryTracker.cleanUp(); } @@ -527,7 +523,8 @@ public class LettuceConnectionFactoryUnitTests { @Test // DATAREDIS-842 public void databaseShouldBeSetCorrectlyOnSentinelClient() { - RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration("mymaster", Collections.singleton("host:1234")); + RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration("mymaster", + Collections.singleton("host:1234")); redisSentinelConfiguration.setDatabase(1); LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(redisSentinelConfiguration); connectionFactory.setClientResources(getSharedClientResources()); diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceSentinelIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceSentinelIntegrationTests.java index f55ded715..f4f070025 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceSentinelIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceSentinelIntegrationTests.java @@ -35,6 +35,7 @@ import org.junit.runners.Parameterized.Parameters; import org.springframework.data.redis.ConnectionFactoryTracker; import org.springframework.data.redis.connection.AbstractConnectionIntegrationTests; import org.springframework.data.redis.connection.DefaultStringRedisConnection; +import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisSentinelConfiguration; import org.springframework.data.redis.connection.RedisSentinelConnection; import org.springframework.data.redis.connection.RedisServer; @@ -56,8 +57,14 @@ public class LettuceSentinelIntegrationTests extends AbstractConnectionIntegrati private static final RedisServer SLAVE_0 = new RedisServer("127.0.0.1", 6380); private static final RedisServer SLAVE_1 = new RedisServer("127.0.0.1", 6381); - private static final RedisSentinelConfiguration SENTINEL_CONFIG = new RedisSentinelConfiguration() // - .master(MASTER_NAME).sentinel(SENTINEL_0).sentinel(SENTINEL_1); + private static final RedisSentinelConfiguration SENTINEL_CONFIG; + static { + + SENTINEL_CONFIG = new RedisSentinelConfiguration() // + .master(MASTER_NAME).sentinel(SENTINEL_0).sentinel(SENTINEL_1); + + SENTINEL_CONFIG.setDatabase(5); + } public static @ClassRule RedisSentinelRule sentinelRule = RedisSentinelRule.forConfig(SENTINEL_CONFIG).oneActive(); public @Rule MinimumRedisVersionRule minimumVersionRule = new MinimumRedisVersionRule(); @@ -118,6 +125,30 @@ public class LettuceSentinelIntegrationTests extends AbstractConnectionIntegrati assertThat(servers.get(0).getName(), is(MASTER_NAME)); } + @Test // DATAREDIS-842 + public void shouldUseSpecifiedDatabase() { + + RedisConnection connection = connectionFactory.getConnection(); + + connection.flushDb(); + connection.set("foo".getBytes(), "bar".getBytes()); + connection.close(); + + LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(); + connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources()); + connectionFactory.setShutdownTimeout(0); + connectionFactory.setShareNativeConnection(false); + connectionFactory.afterPropertiesSet(); + + RedisConnection directConnection = connectionFactory.getConnection(); + assertThat(directConnection.exists("foo".getBytes()), is(false)); + directConnection.select(5); + + assertThat(directConnection.exists("foo".getBytes()), is(true)); + directConnection.close(); + connectionFactory.destroy(); + } + @Test // DATAREDIS-348 public void shouldReadSlavesOfMastersCorrectly() {