package io.craft.atom.redis;
import io.craft.atom.redis.api.Redis;
import io.craft.atom.redis.api.RedisFactory;
import io.craft.atom.redis.api.ShardedRedis;
import io.craft.atom.test.CaseCounter;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
/**
* Test for {@link ShardedRedis}
*
* @author mindwind
* @version 1.0, Dec 3, 2013
*/
public class TestShardedRedis extends AbstractRedisTests {
private ShardedRedis shardedRedis;
private ShardedJedisPool shardedPool ;
// ~ -------------------------------------------------------------------------------------------------------------
public TestShardedRedis() {
super();
init();
}
private void init() {
redis1.slaveofnoone();
redis2.slaveofnoone();
redis3.slaveofnoone();
List<Redis> shards = new ArrayList<Redis>(3);
shards.add(redis1);
shards.add(redis2);
shards.add(redis3);
shardedRedis = RedisFactory.newShardedRedis(shards);
List<JedisShardInfo> shardinfos = new ArrayList<JedisShardInfo>();
shardinfos.add(new JedisShardInfo(HOST, PORT1));
shardinfos.add(new JedisShardInfo(HOST, PORT2));
shardinfos.add(new JedisShardInfo(HOST, PORT3));
shardedPool = new ShardedJedisPool(new JedisPoolConfig(), shardinfos);
}
// ~ -------------------------------------------------------------------------------------------------------------
@Test
public void testHashSharded() {
for (int i = 0; i < 10000; i++) {
String key = "test-" + i;
String value = "value-" + i;
shardedRedis.set(key, key, value);
ShardedJedis sj = shardedPool.getResource();
try {
String v = sj.get(key);
Assert.assertEquals(value, v);
} finally {
sj.close();
}
}
System.out.println(String.format("[CRAFT-ATOM-REDIS] (^_^) <%s> Case -> test hash sharded. ", CaseCounter.incr(1)));
}
}