Skip to content

Commit cbe5ecf

Browse files
committed
Polishing.
Prepare pool for Jedis as well. Introduce generics for Add ticket references to tests. See #3072
1 parent 1d6788e commit cbe5ecf

File tree

4 files changed

+36
-6
lines changed

4 files changed

+36
-6
lines changed

src/main/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.java

+6
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,12 @@ public void start() {
730730

731731
if (getUsePool() && !isRedisClusterAware()) {
732732
this.pool = createPool();
733+
734+
try {
735+
this.pool.preparePool();
736+
} catch (Exception ex) {
737+
throw new PoolException("Could not prepare the pool", ex);
738+
}
733739
}
734740

735741
if (isRedisClusterAware()) {

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

-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ class LettucePoolingConnectionProvider implements LettuceConnectionProvider, Red
9797

9898
try {
9999
newPool.preparePool();
100-
101100
} catch (Exception ex) {
102101
throw new PoolException("Could not prepare the pool", ex);
103102
}

src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactoryUnitTests.java

+27-3
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@
1919
import static org.mockito.Mockito.*;
2020

2121
import redis.clients.jedis.DefaultJedisClientConfig;
22+
import redis.clients.jedis.Jedis;
2223
import redis.clients.jedis.JedisClientConfig;
2324
import redis.clients.jedis.JedisCluster;
2425
import redis.clients.jedis.JedisPoolConfig;
2526
import redis.clients.jedis.RedisProtocol;
27+
import redis.clients.jedis.util.Pool;
2628

2729
import java.io.IOException;
2830
import java.security.NoSuchAlgorithmException;
@@ -265,6 +267,28 @@ void shouldApplyClientConfiguration() throws NoSuchAlgorithmException {
265267
assertThat(connectionFactory.getPoolConfig()).isSameAs(poolConfig);
266268
}
267269

270+
@Test // GH-3072
271+
void shouldInitializePool() throws Exception {
272+
273+
JedisPoolConfig poolConfig = new JedisPoolConfig();
274+
Pool<Jedis> poolMock = mock(Pool.class);
275+
276+
JedisClientConfiguration configuration = JedisClientConfiguration.builder() //
277+
.usePooling().poolConfig(poolConfig) //
278+
.build();
279+
280+
connectionFactory = new JedisConnectionFactory(new RedisStandaloneConfiguration(), configuration) {
281+
@Override
282+
protected Pool<Jedis> createRedisPool() {
283+
return poolMock;
284+
}
285+
};
286+
287+
connectionFactory.afterPropertiesSet();
288+
289+
verify(poolMock).preparePool();
290+
}
291+
268292
@Test // DATAREDIS-574
269293
void shouldReturnStandaloneConfiguration() {
270294

@@ -382,12 +406,12 @@ void earlyStartupDoesNotStartConnectionFactory() {
382406
private JedisConnectionFactory initSpyedConnectionFactory(RedisSentinelConfiguration sentinelConfiguration,
383407
@Nullable JedisPoolConfig poolConfig) {
384408

409+
Pool<Jedis> poolMock = mock(Pool.class);
385410
// we have to use a spy here as jedis would start connecting to redis sentinels when the pool is created.
386411
JedisConnectionFactory connectionFactorySpy = spy(new JedisConnectionFactory(sentinelConfiguration, poolConfig));
387412

388-
doReturn(null).when(connectionFactorySpy).createRedisSentinelPool(any(RedisSentinelConfiguration.class));
389-
390-
doReturn(null).when(connectionFactorySpy).createRedisPool();
413+
doReturn(poolMock).when(connectionFactorySpy).createRedisSentinelPool(any(RedisSentinelConfiguration.class));
414+
doReturn(poolMock).when(connectionFactorySpy).createRedisPool();
391415

392416
return connectionFactorySpy;
393417
}

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static org.mockito.Mockito.*;
1919

20+
import io.lettuce.core.api.StatefulConnection;
2021
import io.lettuce.core.api.StatefulRedisConnection;
2122
import io.lettuce.core.api.async.RedisAsyncCommands;
2223

@@ -74,10 +75,10 @@ void shouldDiscardTransactionOnReleaseOnActiveTransaction() {
7475
verify(commandsMock).discard();
7576
}
7677

77-
@Test
78+
@Test // GH-3072
7879
void shouldPrepareThePool() {
7980

80-
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
81+
GenericObjectPoolConfig<StatefulConnection<?, ?>> poolConfig = new GenericObjectPoolConfig<>();
8182
poolConfig.setMinIdle(5);
8283
poolConfig.setMaxIdle(8);
8384
poolConfig.setMaxTotal(10);

0 commit comments

Comments
 (0)