DATAREDIS-930 - Return port/host of WithHostAndPort configurations using LettuceConnectionFactory.getPort() and getHost().

We now correctly return host and port from configurations that implement WithHostAndPort instead of always using RedisStandaloneConfiguration.

Original pull request: #385.
This commit is contained in:
Luis De Bello
2019-02-13 01:00:01 -03:00
committed by Mark Paluch
parent ff9802ad3d
commit 34951495ba
3 changed files with 126 additions and 2 deletions

View File

@@ -22,6 +22,7 @@ import static org.hamcrest.core.IsNull.*;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import static org.springframework.data.redis.connection.ClusterTestVariables.*;
import static org.springframework.data.redis.connection.RedisConfiguration.*;
import static org.springframework.data.redis.connection.lettuce.LettuceTestClientResources.*;
import static org.springframework.test.util.ReflectionTestUtils.*;
@@ -50,6 +51,7 @@ 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;
import org.springframework.data.redis.connection.RedisConfiguration;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.RedisSocketConfiguration;
@@ -63,6 +65,7 @@ import org.springframework.test.util.ReflectionTestUtils;
* @author Mark Paluch
* @author Balázs Németh
* @author Ruben Cervilla
* @author Luis De Bello
*/
public class LettuceConnectionFactoryUnitTests {
@@ -109,6 +112,52 @@ public class LettuceConnectionFactoryUnitTests {
}
}
@Test // DATAREDIS-930
public void portShouldBeReturnedProperlyBasedOnConfiguration() {
RedisConfiguration redisConfiguration = new RedisStandaloneConfiguration("localhost", 16379);
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(redisConfiguration,
LettuceClientConfiguration.defaultConfiguration());
assertThat(connectionFactory.getPort(), is(16379));
}
@Test // DATAREDIS-930
public void portShouldBeReturnedProperlyBasedOnCustomRedisConfiguration() {
RedisConfiguration redisConfiguration = new CustomRedisConfiguration("localhost", 16379);
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(redisConfiguration,
LettuceClientConfiguration.defaultConfiguration());
assertThat(connectionFactory.getPort(), is(16379));
assertThat(connectionFactory.getHostName(), is("localhost"));
}
@Test // DATAREDIS-930
public void hostNameShouldBeReturnedProperlyBasedOnConfiguration() {
RedisConfiguration redisConfiguration = new RedisStandaloneConfiguration("external");
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(redisConfiguration,
LettuceClientConfiguration.defaultConfiguration());
assertThat(connectionFactory.getHostName(), is("external"));
}
@Test // DATAREDIS-930
public void hostNameShouldBeReturnedProperlyBasedOnCustomRedisConfiguration() {
RedisConfiguration redisConfiguration = new CustomRedisConfiguration("external");
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(redisConfiguration,
LettuceClientConfiguration.defaultConfiguration());
assertThat(connectionFactory.getPort(), is(6379));
assertThat(connectionFactory.getHostName(), is("external"));
}
@Test // DATAREDIS-315
@SuppressWarnings("unchecked")
public void passwordShouldBeSetCorrectlyOnClusterClient() {
@@ -657,4 +706,42 @@ public class LettuceConnectionFactoryUnitTests {
assertThat(redisUri.getDatabase(), is(equalTo(1)));
}
private static class CustomRedisConfiguration implements RedisConfiguration, WithHostAndPort {
private static final String DEFAULT_HOST = "localhost";
private static final int DEFAULT_PORT = 6379;
private String hostName = DEFAULT_HOST;
private int port = DEFAULT_PORT;
public CustomRedisConfiguration(String hostName) {
this(hostName, DEFAULT_PORT);
}
public CustomRedisConfiguration(String hostName, int port) {
this.hostName = hostName;
this.port = port;
}
@Override
public String getHostName() {
return hostName;
}
@Override
public void setHostName(String hostName) {
this.hostName = hostName;
}
@Override
public int getPort() {
return port;
}
@Override
public void setPort(int port) {
this.port = port;
}
}
}