DATAREDIS-462 - Polishing.

Updated javadoc, fixed indentation, organize imports and some minor refactoring.

Original Pull Request: #169
This commit is contained in:
Christoph Strobl
2016-02-17 14:17:12 +01:00
parent b58c18f85b
commit 1e5772d00b
26 changed files with 156 additions and 142 deletions

View File

@@ -17,7 +17,6 @@ package org.springframework.data.redis.connection.lettuce;
import java.util.concurrent.TimeUnit;
import com.lambdaworks.redis.resource.ClientResources;
import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject;
@@ -31,6 +30,7 @@ import org.springframework.util.Assert;
import com.lambdaworks.redis.RedisAsyncConnection;
import com.lambdaworks.redis.RedisClient;
import com.lambdaworks.redis.RedisURI;
import com.lambdaworks.redis.resource.ClientResources;
/**
* Default implementation of {@link LettucePool}.
@@ -41,7 +41,7 @@ import com.lambdaworks.redis.RedisURI;
*/
public class DefaultLettucePool implements LettucePool, InitializingBean {
@SuppressWarnings("rawtypes")//
@SuppressWarnings("rawtypes") //
private GenericObjectPool<RedisAsyncConnection> internalPool;
private RedisClient client;
private int dbIndex = 0;
@@ -104,10 +104,9 @@ public class DefaultLettucePool implements LettucePool, InitializingBean {
@SuppressWarnings({ "rawtypes" })
public void afterPropertiesSet() {
if(clientResources != null) {
if (clientResources != null) {
this.client = RedisClient.create(clientResources, getRedisURI());
}
else {
} else {
this.client = RedisClient.create(getRedisURI());
}
@@ -283,19 +282,22 @@ public class DefaultLettucePool implements LettucePool, InitializingBean {
}
/**
* Returns the client resources to reuse the client infrastructure.
* @return client resources
* Get the {@link ClientResources} to reuse infrastructure.
*
* @return {@literal null} if not set.
* @since 1.7
*/
*/
public ClientResources getClientResources() {
return clientResources;
}
/**
* Sets the client resources to reuse the client infrastructure.
* @param clientResources
* Sets the {@link ClientResources} to reuse the client infrastructure. <br />
* Set to {@literal null} to not share resources.
*
* @param clientResources can be {@literal null}.
* @since 1.7
*/
*/
public void setClientResources(ClientResources clientResources) {
this.clientResources = clientResources;
}

View File

@@ -20,7 +20,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import com.lambdaworks.redis.resource.ClientResources;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.DisposableBean;
@@ -52,6 +51,7 @@ import com.lambdaworks.redis.RedisException;
import com.lambdaworks.redis.RedisFuture;
import com.lambdaworks.redis.RedisURI;
import com.lambdaworks.redis.cluster.RedisClusterClient;
import com.lambdaworks.redis.resource.ClientResources;
/**
* Connection factory creating <a href="http://github.com/mp911de/lettuce">Lettuce</a>-based connections.
@@ -390,24 +390,6 @@ public class LettuceConnectionFactory implements InitializingBean, DisposableBea
this.password = password;
}
/**
* Returns the client resources to reuse the client infrastructure.
* @return client resources
* @since 1.7
*/
public ClientResources getClientResources() {
return clientResources;
}
/**
* Sets the client resources to reuse the client infrastructure.
* @param clientResources
* @since 1.7
*/
public void setClientResources(ClientResources clientResources) {
this.clientResources = clientResources;
}
/**
* Returns the shutdown timeout for shutting down the RedisClient (in milliseconds).
*
@@ -428,6 +410,27 @@ public class LettuceConnectionFactory implements InitializingBean, DisposableBea
this.shutdownTimeout = shutdownTimeout;
}
/**
* Get the {@link ClientResources} to reuse infrastructure.
*
* @return {@literal null} if not set.
* @since 1.7
*/
public ClientResources getClientResources() {
return clientResources;
}
/**
* Sets the {@link ClientResources} to reuse the client infrastructure. <br />
* Set to {@literal null} to not share resources.
*
* @param clientResources can be {@literal null}.
* @since 1.7
*/
public void setClientResources(ClientResources clientResources) {
this.clientResources = clientResources;
}
/**
* Specifies if pipelined results should be converted to the expected data type. If false, results of
* {@link LettuceConnection#closePipeline()} and {LettuceConnection#exec()} will be of the type returned by the
@@ -488,8 +491,9 @@ public class LettuceConnectionFactory implements InitializingBean, DisposableBea
private AbstractRedisClient createRedisClient() {
if (isRedisSentinelAware()) {
RedisURI redisURI = getSentinelRedisURI();
if(clientResources == null) {
if (clientResources == null) {
return RedisClient.create(redisURI);
}
@@ -511,10 +515,9 @@ public class LettuceConnectionFactory implements InitializingBean, DisposableBea
}
RedisClusterClient clusterClient;
if(clientResources == null) {
if (clientResources == null) {
clusterClient = RedisClusterClient.create(initialUris);
}
else {
} else {
clusterClient = RedisClusterClient.create(clientResources, initialUris);
}
@@ -534,7 +537,7 @@ public class LettuceConnectionFactory implements InitializingBean, DisposableBea
builder.withPassword(password);
}
builder.withTimeout(timeout, TimeUnit.MILLISECONDS);
if(clientResources != null) {
if (clientResources != null) {
return RedisClient.create(clientResources, builder.build());
}

View File

@@ -18,10 +18,6 @@ package org.springframework.data.redis.connection.lettuce;
import java.io.IOException;
import java.util.List;
import com.lambdaworks.redis.RedisClient;
import com.lambdaworks.redis.RedisSentinelAsyncConnection;
import com.lambdaworks.redis.RedisURI;
import com.lambdaworks.redis.resource.ClientResources;
import org.springframework.data.redis.ExceptionTranslationStrategy;
import org.springframework.data.redis.FallbackExceptionTranslationStrategy;
import org.springframework.data.redis.connection.NamedNode;
@@ -30,6 +26,11 @@ import org.springframework.data.redis.connection.RedisSentinelConnection;
import org.springframework.data.redis.connection.RedisServer;
import org.springframework.util.Assert;
import com.lambdaworks.redis.RedisClient;
import com.lambdaworks.redis.RedisSentinelAsyncConnection;
import com.lambdaworks.redis.RedisURI.Builder;
import com.lambdaworks.redis.resource.ClientResources;
/**
* @author Christoph Strobl
* @author Mark Paluch
@@ -45,6 +46,7 @@ public class LettuceSentinelConnection implements RedisSentinelConnection {
/**
* Creates a {@link LettuceSentinelConnection} with a dedicated client for a supplied {@link RedisNode}.
*
* @param sentinel The sentinel to connect to.
*/
public LettuceSentinelConnection(RedisNode sentinel) {
@@ -53,31 +55,38 @@ public class LettuceSentinelConnection implements RedisSentinelConnection {
/**
* Creates a {@link LettuceSentinelConnection} with a client for the supplied {@code host} and {@code port}.
* @param host hostname must not be {@literal null}
* @param port sentinel port
*
* @param host must not be {@literal null}.
* @param port sentinel port.
*/
public LettuceSentinelConnection(String host, int port) {
Assert.notNull(host, "Cannot create LettuceSentinelConnection using 'null' as host.");
redisClient = RedisClient.create(new RedisURI.Builder().redis(host, port).build());
redisClient = RedisClient.create(Builder.redis(host, port).build());
init();
}
/**
* Creates a {@link LettuceSentinelConnection} with a client for the supplied {@code host} and {@code port} and reuse
* existing {@code clientResources}.
* @param clientResources must not be {@literal null}
* @param host hostname must not be {@literal null}
* @param port sentinel port
* existing {@link ClientResources}.
*
* @param host must not be {@literal null}.
* @param port sentinel port.
* @param clientResources must not be {@literal null}.
*/
public LettuceSentinelConnection(ClientResources clientResources, String host, int port) {
public LettuceSentinelConnection(String host, int port, ClientResources clientResources) {
Assert.notNull(clientResources, "Cannot create LettuceSentinelConnection using 'null' as ClientResources.");
Assert.notNull(host, "Cannot create LettuceSentinelConnection using 'null' as host.");
redisClient = RedisClient.create(clientResources, new RedisURI.Builder().redis(host, port).build());
redisClient = RedisClient.create(clientResources, Builder.redis(host, port).build());
init();
}
/**
* Creates a {@link LettuceSentinelConnection} using a supplied {@link RedisClient}.
*
* @param redisClient
*/
public LettuceSentinelConnection(RedisClient redisClient) {
@@ -89,6 +98,7 @@ public class LettuceSentinelConnection implements RedisSentinelConnection {
/**
* Creates a {@link LettuceSentinelConnection} using a supplied redis connection.
*
* @param connection native Lettuce connection, must not be {@literal null}
*/
protected LettuceSentinelConnection(RedisSentinelAsyncConnection<String, String> connection) {
@@ -181,8 +191,7 @@ public class LettuceSentinelConnection implements RedisSentinelConnection {
Assert.hasText(server.getHost(), "Host must not be 'null' for server to monitor.");
Assert.notNull(server.getPort(), "Port must not be 'null' for server to monitor.");
Assert.notNull(server.getQuorum(), "Quorum must not be 'null' for server to monitor.");
connection.monitor(server.getName(), server.getHost(), server.getPort().intValue(), server.getQuorum()
.intValue());
connection.monitor(server.getName(), server.getHost(), server.getPort().intValue(), server.getQuorum().intValue());
}
/*
@@ -194,7 +203,7 @@ public class LettuceSentinelConnection implements RedisSentinelConnection {
connection.close();
connection = null;
if(redisClient != null) {
if (redisClient != null) {
redisClient.shutdown();
}
}
@@ -209,7 +218,6 @@ public class LettuceSentinelConnection implements RedisSentinelConnection {
return redisClient.connectSentinelAsync();
}
@Override
public boolean isOpen() {
return connection != null && connection.isOpen();

View File

@@ -57,7 +57,7 @@ public class DefaultLettucePoolTests {
@Test
public void testGetResource() {
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
RedisAsyncConnection<byte[], byte[]> client = pool.getResource();
assertNotNull(client);
@@ -71,7 +71,7 @@ public class DefaultLettucePoolTests {
poolConfig.setMaxTotal(1);
poolConfig.setMaxWaitMillis(1);
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig);
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
RedisAsyncConnection<byte[], byte[]> client = pool.getResource();
assertNotNull(client);
@@ -88,7 +88,7 @@ public class DefaultLettucePoolTests {
PoolConfig poolConfig = new PoolConfig();
poolConfig.setTestOnBorrow(true);
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig);
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
RedisAsyncConnection<byte[], byte[]> client = pool.getResource();
assertNotNull(client);
@@ -98,7 +98,7 @@ public class DefaultLettucePoolTests {
@Test(expected = PoolException.class)
public void testGetResourceCreationUnsuccessful() throws Exception {
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), 3333);
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
pool.getResource();
}
@@ -109,7 +109,7 @@ public class DefaultLettucePoolTests {
poolConfig.setMaxTotal(1);
poolConfig.setMaxWaitMillis(1);
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig);
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
RedisAsyncConnection<byte[], byte[]> client = pool.getResource();
assertNotNull(client);
@@ -124,7 +124,7 @@ public class DefaultLettucePoolTests {
poolConfig.setMaxTotal(1);
poolConfig.setMaxWaitMillis(1);
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig);
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
RedisAsyncConnection<byte[], byte[]> client = pool.getResource();
assertNotNull(client);
@@ -143,18 +143,7 @@ public class DefaultLettucePoolTests {
@Test
public void testCreateWithDbIndex() {
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
this.pool.setClientResources(TestClientResources.get());
pool.setDatabase(1);
pool.afterPropertiesSet();
assertNotNull(pool.getResource());
}
/**
* @see DATAREDIS-462
*/
@Test
public void poolWorksWithoutClientResources() {
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.setDatabase(1);
pool.afterPropertiesSet();
assertNotNull(pool.getResource());
@@ -163,7 +152,7 @@ public class DefaultLettucePoolTests {
@Test(expected = PoolException.class)
public void testCreateWithDbIndexInvalid() {
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.setDatabase(17);
pool.afterPropertiesSet();
pool.getResource();
@@ -172,7 +161,7 @@ public class DefaultLettucePoolTests {
@Test(expected = PoolException.class)
public void testCreateWithPasswordNoPassword() {
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.setPassword("notthepassword");
pool.afterPropertiesSet();
pool.getResource();
@@ -182,7 +171,7 @@ public class DefaultLettucePoolTests {
@Test
public void testCreatePassword() {
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.setPassword("foo");
pool.afterPropertiesSet();
RedisAsyncConnection<byte[], byte[]> conn = pool.getResource();
@@ -194,9 +183,21 @@ public class DefaultLettucePoolTests {
@Test(expected = PoolException.class)
public void testCreateInvalidPassword() {
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
this.pool.setClientResources(TestClientResources.get());
this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.setPassword("bad");
pool.afterPropertiesSet();
pool.getResource();
}
/**
* @see DATAREDIS-462
*/
@Test
public void poolWorksWithoutClientResources() {
this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
pool.setDatabase(1);
pool.afterPropertiesSet();
assertNotNull(pool.getResource());
}
}

View File

@@ -85,7 +85,7 @@ public class LettuceClusterConnectionTests implements ClusterConnectionTests {
@Before
public void setUp() {
client = RedisClusterClient.create(TestClientResources.get(),
client = RedisClusterClient.create(LettuceTestClientResources.getSharedClientResources(),
Builder.redis(CLUSTER_HOST, MASTER_NODE_1_PORT).withTimeout(100, TimeUnit.MILLISECONDS).build());
nativeConnection = client.connectCluster();
clusterConnection = new LettuceClusterConnection(client);

View File

@@ -15,8 +15,8 @@
*/
package org.springframework.data.redis.connection.lettuce;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.hamcrest.core.Is.*;
import static org.hamcrest.core.IsEqual.*;
import static org.hamcrest.core.IsNull.*;
import static org.junit.Assert.*;
@@ -54,7 +54,7 @@ public class LettuceConnectionFactoryTests {
public void setUp() {
factory = new LettuceConnectionFactory(SettingsUtils.getHost(), SettingsUtils.getPort());
factory.setClientResources(TestClientResources.get());
factory.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory.afterPropertiesSet();
factory.setShutdownTimeout(0);
connection = new DefaultStringRedisConnection(factory.getConnection());
@@ -126,7 +126,7 @@ public class LettuceConnectionFactoryTests {
public void testSelectDb() {
LettuceConnectionFactory factory2 = new LettuceConnectionFactory(SettingsUtils.getHost(), SettingsUtils.getPort());
factory2.setClientResources(TestClientResources.get());
factory2.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory2.setShutdownTimeout(0);
factory2.setDatabase(1);
factory2.afterPropertiesSet();
@@ -229,7 +229,7 @@ public class LettuceConnectionFactoryTests {
@Test
public void testCreateFactoryWithPool() {
DefaultLettucePool pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
pool.setClientResources(TestClientResources.get());
pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
LettuceConnectionFactory factory2 = new LettuceConnectionFactory(pool);
factory2.setShutdownTimeout(0);
@@ -285,7 +285,7 @@ public class LettuceConnectionFactoryTests {
public void dbIndexShouldBePropagatedCorrectly() {
LettuceConnectionFactory factory = new LettuceConnectionFactory();
factory.setClientResources(TestClientResources.get());
factory.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory.setDatabase(2);
factory.afterPropertiesSet();

View File

@@ -58,7 +58,7 @@ public class LettuceConnectionFactoryUnitTests {
public void shouldInitClientCorrectlyWhenClusterConfigPresent() {
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfig);
connectionFactory.setClientResources(TestClientResources.get());
connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
connectionFactory.afterPropertiesSet();
ConnectionFactoryTracker.add(connectionFactory);
@@ -73,7 +73,7 @@ public class LettuceConnectionFactoryUnitTests {
public void timeoutShouldBeSetCorrectlyOnClusterClient() {
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfig);
connectionFactory.setClientResources(TestClientResources.get());
connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
connectionFactory.setTimeout(1000);
connectionFactory.afterPropertiesSet();
ConnectionFactoryTracker.add(connectionFactory);
@@ -97,7 +97,7 @@ public class LettuceConnectionFactoryUnitTests {
public void passwordShouldBeSetCorrectlyOnClusterClient() {
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfig);
connectionFactory.setClientResources(TestClientResources.get());
connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
connectionFactory.setPassword("o_O");
connectionFactory.afterPropertiesSet();
ConnectionFactoryTracker.add(connectionFactory);

View File

@@ -139,7 +139,7 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra
@Test
public void testClosePooledConnectionWithShared() {
DefaultLettucePool pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
pool.setClientResources(TestClientResources.get());
pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
LettuceConnectionFactory factory2 = new LettuceConnectionFactory(pool);
factory2.setShutdownTimeout(0);
@@ -161,7 +161,7 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra
@Test
public void testClosePooledConnectionNotShared() {
DefaultLettucePool pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
pool.setClientResources(TestClientResources.get());
pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
LettuceConnectionFactory factory2 = new LettuceConnectionFactory(pool);
factory2.setShareNativeConnection(false);
@@ -181,7 +181,7 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra
@Test
public void testCloseNonPooledConnectionNotShared() {
LettuceConnectionFactory factory2 = new LettuceConnectionFactory(SettingsUtils.getHost(), SettingsUtils.getPort());
factory2.setClientResources(TestClientResources.get());
factory2.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory2.setShutdownTimeout(0);
factory2.setShareNativeConnection(false);
factory2.afterPropertiesSet();
@@ -201,7 +201,7 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra
@Test
public void testCloseReturnBrokenResourceToPool() {
DefaultLettucePool pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
pool.setClientResources(TestClientResources.get());
pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
LettuceConnectionFactory factory2 = new LettuceConnectionFactory(pool);
factory2.setShutdownTimeout(0);
@@ -223,7 +223,7 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra
@Test
public void testSelectNotShared() {
DefaultLettucePool pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort());
pool.setClientResources(TestClientResources.get());
pool.setClientResources(LettuceTestClientResources.getSharedClientResources());
pool.afterPropertiesSet();
LettuceConnectionFactory factory2 = new LettuceConnectionFactory(pool);
factory2.setShutdownTimeout(0);
@@ -252,7 +252,7 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra
// Use a different factory to get a non-shared native conn for blocking script
final LettuceConnectionFactory factory2 = new LettuceConnectionFactory(SettingsUtils.getHost(),
SettingsUtils.getPort());
factory2.setClientResources(TestClientResources.get());
factory2.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory2.setShutdownTimeout(0);
factory2.afterPropertiesSet();
DefaultStringRedisConnection conn2 = new DefaultStringRedisConnection(factory2.getConnection());
@@ -282,7 +282,7 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra
verifyResults(Arrays.asList(new Object[] { true }));
// Lettuce does not support select when using shared conn, use a new conn factory
LettuceConnectionFactory factory2 = new LettuceConnectionFactory();
factory2.setClientResources(TestClientResources.get());
factory2.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory2.setShutdownTimeout(0);
factory2.setDatabase(1);
factory2.afterPropertiesSet();

View File

@@ -65,7 +65,7 @@ public class LettuceConnectionPipelineIntegrationTests extends AbstractConnectio
// Use separate conn factory to avoid using the underlying shared native conn on blocking script
final LettuceConnectionFactory factory2 = new LettuceConnectionFactory(SettingsUtils.getHost(),
SettingsUtils.getPort());
factory2.setClientResources(TestClientResources.get());
factory2.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory2.afterPropertiesSet();
DefaultStringRedisConnection conn2 = new DefaultStringRedisConnection(factory2.getConnection());
try {
@@ -95,7 +95,7 @@ public class LettuceConnectionPipelineIntegrationTests extends AbstractConnectio
verifyResults(Arrays.asList(new Object[] { true }));
// Lettuce does not support select when using shared conn, use a new conn factory
LettuceConnectionFactory factory2 = new LettuceConnectionFactory();
factory2.setClientResources(TestClientResources.get());
factory2.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory2.setDatabase(1);
factory2.afterPropertiesSet();
StringRedisConnection conn2 = new DefaultStringRedisConnection(factory2.getConnection());

View File

@@ -46,7 +46,7 @@ public class LettuceConnectionTransactionIntegrationTests extends AbstractConnec
verifyResults(Arrays.asList(new Object[] { true }));
// Lettuce does not support select when using shared conn, use a new conn factory
LettuceConnectionFactory factory2 = new LettuceConnectionFactory();
factory2.setClientResources(TestClientResources.get());
factory2.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory2.setShutdownTimeout(0);
factory2.setDatabase(1);
factory2.afterPropertiesSet();

View File

@@ -58,7 +58,7 @@ public class LettuceSentinelIntegrationTests extends AbstractConnectionIntegrati
public void setUp() {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(SENTINEL_CONFIG);
lettuceConnectionFactory.setClientResources(TestClientResources.get());
lettuceConnectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnectionFactory.setShareNativeConnection(false);
lettuceConnectionFactory.setShutdownTimeout(0);
lettuceConnectionFactory.afterPropertiesSet();

View File

@@ -23,44 +23,43 @@ import com.lambdaworks.redis.resource.DefaultClientResources;
/**
* Client-Resources suitable for testing. Uses {@link TestEventLoopGroupProvider} to preserve the event loop groups
* between tests. Every time a new {@link TestClientResources} instance is created, a
* between tests. Every time a new {@link LettuceTestClientResources} instance is created, a
* {@link Runtime#addShutdownHook(Thread) shutdown hook} is added to close the client resources.
*
* @author Mark Paluch
* @author Christoph Strobl
*/
public class TestClientResources {
public class LettuceTestClientResources {
private ClientResources resources = create();
private final static TestClientResources instance = new TestClientResources();
private static final ClientResources SHARED_CLIENT_RESOURCES;
/**
* Prevent instances by others.
*/
private TestClientResources() {}
static {
private ClientResources create() {
final DefaultClientResources resources = new DefaultClientResources.Builder()
SHARED_CLIENT_RESOURCES = new DefaultClientResources.Builder()
.eventLoopGroupProvider(new TestEventLoopGroupProvider()).build();
appendShutdownHook();
}
private LettuceTestClientResources() {}
private static void appendShutdownHook() {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
resources.shutdown(0, 0, TimeUnit.MILLISECONDS).get(1, TimeUnit.SECONDS);
SHARED_CLIENT_RESOURCES.shutdown(0, 0, TimeUnit.MILLISECONDS).get(1, TimeUnit.SECONDS);
} catch (Exception o_O) {
// ignore
// ignore
}
}
});
return resources;
}
/**
* @return the client resources.
*/
public static ClientResources get() {
return instance.resources;
public static ClientResources getSharedClientResources() {
return SHARED_CLIENT_RESOURCES;
}
}

View File

@@ -31,16 +31,17 @@ import io.netty.util.concurrent.Promise;
* {@link Runtime#addShutdownHook(Thread) shutdown hook} is added to close the resources.
*
* @author Mark Paluch
* @author Christoph Strobl
*/
class TestEventLoopGroupProvider extends DefaultEventLoopGroupProvider {
public static final int NUMBER_OF_THREADS = 10;
private static final int NUMBER_OF_THREADS = 10;
public TestEventLoopGroupProvider() {
public TestEventLoopGroupProvider() {
super(NUMBER_OF_THREADS);
super(NUMBER_OF_THREADS);
Runtime.getRuntime().addShutdownHook(new Thread() {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
@@ -55,7 +56,7 @@ class TestEventLoopGroupProvider extends DefaultEventLoopGroupProvider {
@Override
public Promise<Boolean> release(EventExecutorGroup eventLoopGroup, long quietPeriod, long timeout, TimeUnit unit) {
DefaultPromise<Boolean> result = new DefaultPromise<Boolean>(ImmediateEventExecutor.INSTANCE);
DefaultPromise<Boolean> result = new DefaultPromise<Boolean>(ImmediateEventExecutor.INSTANCE);
result.setSuccess(true);
return result;

View File

@@ -36,7 +36,7 @@ public class TransactionalLettuceItegrationTests extends AbstractTransactionalTe
public LettuceConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory factory = new LettuceConnectionFactory();
factory.setClientResources(TestClientResources.get());
factory.setClientResources(LettuceTestClientResources.getSharedClientResources());
factory.setHostName("localhost");
factory.setPort(6379);
return factory;

View File

@@ -32,7 +32,7 @@ import org.springframework.data.redis.ConnectionFactoryTracker;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.connection.srp.SrpConnectionFactory;
/**
@@ -63,7 +63,7 @@ public class MultithreadedRedisTemplateTests {
jedis.afterPropertiesSet();
LettuceConnectionFactory lettuce = new LettuceConnectionFactory();
lettuce.setClientResources(TestClientResources.get());
lettuce.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuce.setPort(6379);
lettuce.afterPropertiesSet();

View File

@@ -33,7 +33,7 @@ import org.springframework.data.redis.StringObjectFactory;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.serializer.GenericToStringSerializer;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.OxmSerializer;
@@ -187,7 +187,7 @@ public class RedisClusterTemplateTests<K, V> extends RedisTemplateTests<K, V> {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(new RedisClusterConfiguration(
CLUSTER_NODES));
lettuceConnectionFactory.setClientResources(TestClientResources.get());
lettuceConnectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnectionFactory.afterPropertiesSet();

View File

@@ -20,7 +20,7 @@ import org.junit.Before;
import org.springframework.data.redis.SettingsUtils;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.core.script.AbstractDefaultScriptExecutorTests;
import org.springframework.data.redis.core.script.DefaultScriptExecutor;
@@ -38,7 +38,7 @@ public class LettuceDefaultScriptExecutorTests extends AbstractDefaultScriptExec
public void setup() {
connectionFactory = new LettuceConnectionFactory(SettingsUtils.getHost(), SettingsUtils.getPort());
connectionFactory.setClientResources(TestClientResources.get());
connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
connectionFactory.setShutdownTimeout(0);
connectionFactory.afterPropertiesSet();
}

View File

@@ -51,7 +51,7 @@ import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.connection.srp.SrpConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
@@ -110,7 +110,7 @@ public class PubSubResubscribeTests {
// Lettuce
LettuceConnectionFactory lettuceConnFactory = new LettuceConnectionFactory();
lettuceConnFactory.setClientResources(TestClientResources.get());
lettuceConnFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnFactory.setPort(port);
lettuceConnFactory.setHostName(host);
lettuceConnFactory.setDatabase(2);

View File

@@ -26,7 +26,7 @@ import org.springframework.data.redis.SettingsUtils;
import org.springframework.data.redis.StringObjectFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.connection.srp.SrpConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
@@ -63,7 +63,7 @@ public class PubSubTestParams {
// add Lettuce
LettuceConnectionFactory lettuceConnFactory = new LettuceConnectionFactory();
lettuceConnFactory.setClientResources(TestClientResources.get());
lettuceConnFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnFactory.setPort(SettingsUtils.getPort());
lettuceConnFactory.setHostName(SettingsUtils.getHost());
lettuceConnFactory.afterPropertiesSet();

View File

@@ -38,7 +38,7 @@ import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.connection.srp.SrpConnectionFactory;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
@@ -100,7 +100,7 @@ public class SubscriptionConnectionTests {
// Lettuce
LettuceConnectionFactory lettuceConnFactory = new LettuceConnectionFactory();
lettuceConnFactory.setClientResources(TestClientResources.get());
lettuceConnFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnFactory.setPort(port);
lettuceConnFactory.setHostName(host);
lettuceConnFactory.setDatabase(2);

View File

@@ -23,7 +23,7 @@ import org.springframework.data.redis.StringObjectFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.connection.srp.SrpConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.support.atomic.RedisAtomicInteger;
@@ -64,7 +64,7 @@ public class BoundKeyParams {
// Lettuce
LettuceConnectionFactory lettuceConnFactory = new LettuceConnectionFactory();
lettuceConnFactory.setClientResources(TestClientResources.get());
lettuceConnFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnFactory.setPort(SettingsUtils.getPort());
lettuceConnFactory.setHostName(SettingsUtils.getHost());
lettuceConnFactory.afterPropertiesSet();

View File

@@ -23,7 +23,7 @@ import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisPool;
import org.springframework.data.redis.connection.jredis.JredisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.connection.srp.SrpConnectionFactory;
/**
@@ -48,7 +48,7 @@ public abstract class AtomicCountersParam {
// Lettuce
LettuceConnectionFactory lettuceConnFactory = new LettuceConnectionFactory();
lettuceConnFactory.setClientResources(TestClientResources.get());
lettuceConnFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnFactory.setPort(SettingsUtils.getPort());
lettuceConnFactory.setHostName(SettingsUtils.getHost());
lettuceConnFactory.afterPropertiesSet();

View File

@@ -29,7 +29,7 @@ import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisPool;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.connection.srp.SrpConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
@@ -181,7 +181,7 @@ public abstract class CollectionTestParams {
// Lettuce
LettuceConnectionFactory lettuceConnFactory = new LettuceConnectionFactory();
lettuceConnFactory.setClientResources(TestClientResources.get());
lettuceConnFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnFactory.setPort(SettingsUtils.getPort());
lettuceConnFactory.setHostName(SettingsUtils.getHost());
lettuceConnFactory.afterPropertiesSet();

View File

@@ -32,7 +32,7 @@ import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisPool;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.connection.srp.SrpConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
@@ -167,7 +167,7 @@ public class RedisMapTests extends AbstractRedisMapTests<Object, Object> {
// Lettuce
LettuceConnectionFactory lettuceConnFactory = new LettuceConnectionFactory();
lettuceConnFactory.setClientResources(TestClientResources.get());
lettuceConnFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnFactory.setHostName(SettingsUtils.getHost());
lettuceConnFactory.setPort(SettingsUtils.getPort());
lettuceConnFactory.afterPropertiesSet();

View File

@@ -41,7 +41,7 @@ import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisConnectionFactory;
import org.springframework.data.redis.connection.jredis.JredisPool;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.TestClientResources;
import org.springframework.data.redis.connection.lettuce.LettuceTestClientResources;
import org.springframework.data.redis.connection.srp.SrpConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
@@ -310,7 +310,7 @@ public class RedisPropertiesTests extends RedisMapTests {
// Lettuce
LettuceConnectionFactory lettuceConnFactory = new LettuceConnectionFactory();
lettuceConnFactory.setClientResources(TestClientResources.get());
lettuceConnFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
lettuceConnFactory.setPort(SettingsUtils.getPort());
lettuceConnFactory.setHostName(SettingsUtils.getHost());
lettuceConnFactory.afterPropertiesSet();

View File

@@ -13,8 +13,8 @@
</property>
<property name="shutdownTimeout" value="0" />
<property name="clientResources">
<bean class="org.springframework.data.redis.connection.lettuce.TestClientResources"
factory-method="get" />
<bean class="org.springframework.data.redis.connection.lettuce.LettuceTestClientResources"
factory-method="getSharedClientResources" />
</property>
</bean>