DATAREDIS-667 - Polishing.

Remove builder interfaces and aim for classes instead.
Also use delegation for builders avoiding constructors with too many arguments.
Alter ConnectionProvider#getConnection(Class) to return a typed connection as this is is the expected return type given the input parameters used.
Remove LettuceConnectionProvider.getConnection() method as it makes no longer sense for the non-lambda enabled interface. Remove unnecessary casts.
Add connection factory to cleanup-tracker on test class instantiation instead within the parameter supplier method to prevent shutdown by other cleanup calls that may happen in between. Reuse client resources.

Original Pull Request: #262
This commit is contained in:
Christoph Strobl
2017-08-31 15:31:34 +02:00
parent 17309dd070
commit f5ffa33f7e
19 changed files with 367 additions and 299 deletions

View File

@@ -28,6 +28,7 @@ import org.junit.Test;
* Unit tests for {@link LettuceClientConfiguration}.
*
* @author Mark Paluch
* @author Christoph Strobl
*/
public class LettuceClientConfigurationUnitTests {
@@ -36,7 +37,6 @@ public class LettuceClientConfigurationUnitTests {
LettuceClientConfiguration configuration = LettuceClientConfiguration.defaultConfiguration();
assertThat(configuration.isUsePooling()).isFalse();
assertThat(configuration.isUseSsl()).isFalse();
assertThat(configuration.isVerifyPeer()).isTrue();
assertThat(configuration.isStartTls()).isFalse();
@@ -62,7 +62,6 @@ public class LettuceClientConfigurationUnitTests {
.shutdownTimeout(Duration.ofHours(2)) //
.build();
assertThat(configuration.isUsePooling()).isFalse();
assertThat(configuration.isUseSsl()).isTrue();
assertThat(configuration.isVerifyPeer()).isFalse();
assertThat(configuration.isStartTls()).isTrue();

View File

@@ -338,7 +338,7 @@ public class LettuceConnectionFactoryTests {
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
LettuceClientConfiguration configuration = LettucePoolingClientConfiguration.builder().poolConfig(poolConfig).and()
LettuceClientConfiguration configuration = LettucePoolingClientConfiguration.builder().poolConfig(poolConfig)
.clientResources(LettuceTestClientResources.getSharedClientResources()).shutdownTimeout(Duration.ZERO).build();
LettuceConnectionFactory factory = new LettuceConnectionFactory(new RedisStandaloneConfiguration(), configuration);

View File

@@ -29,6 +29,7 @@ import org.junit.Test;
* Unit tests for {@link LettucePoolingClientConfiguration}.
*
* @author Mark Paluch
* @author Christoph Strobl
*/
public class LettucePoolingClientConfigurationUnitTests {
@@ -37,7 +38,6 @@ public class LettucePoolingClientConfigurationUnitTests {
LettucePoolingClientConfiguration configuration = LettucePoolingClientConfiguration.defaultConfiguration();
assertThat(configuration.isUsePooling()).isTrue();
assertThat(configuration.getPoolConfig()).isNotNull();
assertThat(configuration.isUseSsl()).isFalse();
assertThat(configuration.isVerifyPeer()).isTrue();
@@ -55,19 +55,17 @@ public class LettucePoolingClientConfigurationUnitTests {
ClientResources sharedClientResources = LettuceTestClientResources.getSharedClientResources();
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
LettucePoolingClientConfiguration configuration = (LettucePoolingClientConfiguration) LettucePoolingClientConfiguration
.builder() //
.poolConfig(poolConfig).and() //
LettucePoolingClientConfiguration configuration = LettucePoolingClientConfiguration.builder() //
.useSsl() //
.disablePeerVerification() //
.startTls().and() //
.poolConfig(poolConfig) //
.clientOptions(clientOptions) //
.clientResources(sharedClientResources) //
.commandTimeout(Duration.ofMinutes(5)) //
.shutdownTimeout(Duration.ofHours(2)) //
.build();
assertThat(configuration.isUsePooling()).isTrue();
assertThat(configuration.getPoolConfig()).isEqualTo(poolConfig);
assertThat(configuration.isUseSsl()).isTrue();
assertThat(configuration.isVerifyPeer()).isFalse();

View File

@@ -115,11 +115,11 @@ public abstract class LettuceReactiveCommandsTestsBase {
public void setUp() {
if (nativeConnectionProvider instanceof StandaloneConnectionProvider) {
nativeCommands = ((StatefulRedisConnection) nativeConnectionProvider.getConnection()).sync();
nativeCommands = nativeConnectionProvider.getConnection(StatefulRedisConnection.class).sync();
this.connection = new LettuceReactiveRedisConnection(connectionProvider);
} else {
nativeCommands = ((StatefulRedisClusterConnection) nativeConnectionProvider.getConnection()).sync();
nativeCommands = nativeConnectionProvider.getConnection(StatefulRedisClusterConnection.class).sync();
this.connection = new LettuceReactiveRedisClusterConnection(connectionProvider);
}
}

View File

@@ -63,7 +63,9 @@ public class LettuceSentinelIntegrationTests extends AbstractConnectionIntegrati
public @Rule MinimumRedisVersionRule minimumVersionRule = new MinimumRedisVersionRule();
public LettuceSentinelIntegrationTests(LettuceConnectionFactory connectionFactory, String displayName) {
this.connectionFactory = connectionFactory;
ConnectionFactoryTracker.add(connectionFactory);
}
@Parameters(name = "{1}")
@@ -78,13 +80,11 @@ public class LettuceSentinelIntegrationTests extends AbstractConnectionIntegrati
lettuceConnectionFactory.afterPropertiesSet();
LettuceConnectionFactory pooledConnectionFactory = new LettuceConnectionFactory(SENTINEL_CONFIG,
LettucePoolingClientConfiguration.builder().build());
LettucePoolingClientConfiguration.builder()
.clientResources(LettuceTestClientResources.getSharedClientResources()).build());
pooledConnectionFactory.setShareNativeConnection(false);
pooledConnectionFactory.afterPropertiesSet();
ConnectionFactoryTracker.add(lettuceConnectionFactory);
ConnectionFactoryTracker.add(pooledConnectionFactory);
parameters.add(new Object[] { lettuceConnectionFactory, "Sentinel" });
parameters.add(new Object[] { pooledConnectionFactory, "Sentinel/Pooled" });

View File

@@ -66,8 +66,8 @@ abstract public class ReactiveOperationsTestParams {
.clientResources(LettuceTestClientResources.getSharedClientResources()) //
.build();
LettuceClientConfiguration poolingConfiguration = LettucePoolingClientConfiguration.builder() //
.and().shutdownTimeout(Duration.ZERO) //
LettucePoolingClientConfiguration poolingConfiguration = LettucePoolingClientConfiguration.builder() //
.shutdownTimeout(Duration.ZERO) //
.clientResources(LettuceTestClientResources.getSharedClientResources()) //
.build();