package com.lambdaworks.redis;
import static org.assertj.core.api.Assertions.assertThat;
import java.net.URI;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.lambdaworks.redis.support.RedisClientFactoryBean;
public class RedisClientFactoryBeanTest {
private RedisClientFactoryBean sut = new RedisClientFactoryBean();
@After
public void tearDown() throws Exception {
FastShutdown.shutdown(sut.getObject());
sut.destroy();
}
@Test
public void testSimpleUri() throws Exception {
String uri = "redis://localhost/2";
sut.setUri(URI.create(uri));
sut.setPassword("password");
sut.afterPropertiesSet();
RedisURI redisURI = sut.getRedisURI();
assertThat(redisURI.getDatabase()).isEqualTo(2);
assertThat(redisURI.getHost()).isEqualTo("localhost");
assertThat(redisURI.getPort()).isEqualTo(RedisURI.DEFAULT_REDIS_PORT);
assertThat(new String(redisURI.getPassword())).isEqualTo("password");
}
@Test
public void testSimpleUriWithoutDB() throws Exception {
String uri = "redis://localhost/";
sut.setUri(URI.create(uri));
sut.afterPropertiesSet();
RedisURI redisURI = sut.getRedisURI();
assertThat(redisURI.getDatabase()).isEqualTo(0);
}
@Test
public void testSimpleUriWithoutDB2() throws Exception {
String uri = "redis://localhost/";
sut.setUri(URI.create(uri));
sut.afterPropertiesSet();
RedisURI redisURI = sut.getRedisURI();
assertThat(redisURI.getDatabase()).isEqualTo(0);
}
@Test
public void testSimpleUriWithPort() throws Exception {
String uri = "redis://localhost:1234/0";
sut.setUri(URI.create(uri));
sut.setPassword("password");
sut.afterPropertiesSet();
RedisURI redisURI = sut.getRedisURI();
assertThat(redisURI.getDatabase()).isEqualTo(0);
assertThat(redisURI.getHost()).isEqualTo("localhost");
assertThat(redisURI.getPort()).isEqualTo(1234);
assertThat(new String(redisURI.getPassword())).isEqualTo("password");
}
@Test
public void testSentinelUri() throws Exception {
String uri = "redis-sentinel://localhost/1#myMaster";
sut.setUri(URI.create(uri));
sut.setPassword("password");
sut.afterPropertiesSet();
RedisURI redisURI = sut.getRedisURI();
assertThat(redisURI.getDatabase()).isEqualTo(1);
RedisURI sentinelUri = redisURI.getSentinels().get(0);
assertThat(sentinelUri.getHost()).isEqualTo("localhost");
assertThat(sentinelUri.getPort()).isEqualTo(RedisURI.DEFAULT_SENTINEL_PORT);
assertThat(new String(redisURI.getPassword())).isEqualTo("password");
assertThat(redisURI.getSentinelMasterId()).isEqualTo("myMaster");
}
@Test
public void testSentinelUriWithPort() throws Exception {
String uri = "redis-sentinel://localhost:1234/1#myMaster";
sut.setUri(URI.create(uri));
sut.setPassword("password");
sut.afterPropertiesSet();
RedisURI redisURI = sut.getRedisURI();
assertThat(redisURI.getDatabase()).isEqualTo(1);
RedisURI sentinelUri = redisURI.getSentinels().get(0);
assertThat(sentinelUri.getHost()).isEqualTo("localhost");
assertThat(sentinelUri.getPort()).isEqualTo(1234);
assertThat(new String(redisURI.getPassword())).isEqualTo("password");
assertThat(redisURI.getSentinelMasterId()).isEqualTo("myMaster");
}
@Test
public void testMultipleSentinelUri() throws Exception {
String uri = "redis-sentinel://localhost,localhost2,localhost3/1#myMaster";
sut.setUri(URI.create(uri));
sut.setPassword("password");
sut.afterPropertiesSet();
RedisURI redisURI = sut.getRedisURI();
assertThat(redisURI.getDatabase()).isEqualTo(1);
assertThat(redisURI.getSentinels()).hasSize(3);
RedisURI sentinelUri = redisURI.getSentinels().get(0);
assertThat(sentinelUri.getHost()).isEqualTo("localhost");
assertThat(sentinelUri.getPort()).isEqualTo(RedisURI.DEFAULT_SENTINEL_PORT);
assertThat(redisURI.getSentinelMasterId()).isEqualTo("myMaster");
}
@Test
public void testMultipleSentinelUriWithPorts() throws Exception {
String uri = "redis-sentinel://localhost,localhost2:1234,localhost3/1#myMaster";
sut.setUri(URI.create(uri));
sut.setPassword("password");
sut.afterPropertiesSet();
RedisURI redisURI = sut.getRedisURI();
assertThat(redisURI.getDatabase()).isEqualTo(1);
assertThat(redisURI.getSentinels()).hasSize(3);
RedisURI sentinelUri1 = redisURI.getSentinels().get(0);
assertThat(sentinelUri1.getHost()).isEqualTo("localhost");
assertThat(sentinelUri1.getPort()).isEqualTo(RedisURI.DEFAULT_SENTINEL_PORT);
RedisURI sentinelUri2 = redisURI.getSentinels().get(1);
assertThat(sentinelUri2.getHost()).isEqualTo("localhost2");
assertThat(sentinelUri2.getPort()).isEqualTo(1234);
assertThat(redisURI.getSentinelMasterId()).isEqualTo("myMaster");
}
}