use of redis.clients.jedis.JedisShardInfo in project jedis by xetorthio.
the class ShardedJedisPoolTest method checkResourceIsCloseable.
@Test
public void checkResourceIsCloseable() throws URISyntaxException {
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxTotal(1);
config.setBlockWhenExhausted(false);
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo(new URI("redis://:foobared@localhost:6380")));
shards.add(new JedisShardInfo(new URI("redis://:foobared@localhost:6379")));
ShardedJedisPool pool = new ShardedJedisPool(config, shards);
ShardedJedis jedis = pool.getResource();
try {
jedis.set("hello", "jedis");
} finally {
jedis.close();
}
ShardedJedis jedis2 = pool.getResource();
try {
assertEquals(jedis, jedis2);
} finally {
jedis2.close();
}
}
use of redis.clients.jedis.JedisShardInfo in project jedis by xetorthio.
the class ShardedJedisTest method testMasterSlaveShardingConsistencyWithShardNaming.
@Test
public void testMasterSlaveShardingConsistencyWithShardNaming() {
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>(3);
shards.add(new JedisShardInfo("localhost", Protocol.DEFAULT_PORT, "HOST1:1234"));
shards.add(new JedisShardInfo("localhost", Protocol.DEFAULT_PORT + 1, "HOST2:1234"));
shards.add(new JedisShardInfo("localhost", Protocol.DEFAULT_PORT + 2, "HOST3:1234"));
Sharded<Jedis, JedisShardInfo> sharded = new Sharded<Jedis, JedisShardInfo>(shards, Hashing.MURMUR_HASH);
List<JedisShardInfo> otherShards = new ArrayList<JedisShardInfo>(3);
otherShards.add(new JedisShardInfo("otherhost", Protocol.DEFAULT_PORT, "HOST2:1234"));
otherShards.add(new JedisShardInfo("otherhost", Protocol.DEFAULT_PORT + 1, "HOST3:1234"));
otherShards.add(new JedisShardInfo("otherhost", Protocol.DEFAULT_PORT + 2, "HOST1:1234"));
Sharded<Jedis, JedisShardInfo> sharded2 = new Sharded<Jedis, JedisShardInfo>(otherShards, Hashing.MURMUR_HASH);
for (int i = 0; i < 1000; i++) {
JedisShardInfo jedisShardInfo = sharded.getShardInfo(Integer.toString(i));
JedisShardInfo jedisShardInfo2 = sharded2.getShardInfo(Integer.toString(i));
assertEquals(jedisShardInfo.getName(), jedisShardInfo2.getName());
}
}
use of redis.clients.jedis.JedisShardInfo in project jedis by xetorthio.
the class ShardedJedisTest method testAvoidLeaksUponDisconnect.
/**
* Test for "Issue - BinaryShardedJedis.disconnect() may occur memory leak". You can find more
* detailed information at https://github.com/xetorthio/jedis/issues/808
* @throws InterruptedException
*/
@Test
public void testAvoidLeaksUponDisconnect() throws InterruptedException {
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>(2);
// 6379
JedisShardInfo shard1 = new JedisShardInfo(redis1.getHost(), redis1.getPort());
shard1.setPassword("foobared");
shards.add(shard1);
// 6380
JedisShardInfo shard2 = new JedisShardInfo(redis2.getHost(), redis2.getPort());
shard2.setPassword("foobared");
shards.add(shard2);
@SuppressWarnings("resource") ShardedJedis shardedJedis = new ShardedJedis(shards);
// establish the connection for two redis servers
shardedJedis.set("a", "bar");
JedisShardInfo ak = shardedJedis.getShardInfo("a");
assertEquals(shard2, ak);
shardedJedis.set("b", "bar1");
JedisShardInfo bk = shardedJedis.getShardInfo("b");
assertEquals(shard1, bk);
// We set a name to the instance so it's easy to find it
Iterator<Jedis> it = shardedJedis.getAllShards().iterator();
Jedis deadClient = it.next();
deadClient.clientSetname("DEAD");
ClientKillerUtil.killClient(deadClient, "DEAD");
assertEquals(true, deadClient.isConnected());
assertEquals(false, deadClient.getClient().getSocket().isClosed());
// normal - not found
assertEquals(false, deadClient.getClient().isBroken());
shardedJedis.disconnect();
assertEquals(false, deadClient.isConnected());
assertEquals(true, deadClient.getClient().getSocket().isClosed());
assertEquals(true, deadClient.getClient().isBroken());
Jedis jedis2 = it.next();
assertEquals(false, jedis2.isConnected());
assertEquals(true, jedis2.getClient().getSocket().isClosed());
assertEquals(false, jedis2.getClient().isBroken());
}
use of redis.clients.jedis.JedisShardInfo in project jedis by xetorthio.
the class ShardedJedisTest method checkCloseable.
@Test
public void checkCloseable() {
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo(redis1.getHost(), redis1.getPort()));
shards.add(new JedisShardInfo(redis2.getHost(), redis2.getPort()));
shards.get(0).setPassword("foobared");
shards.get(1).setPassword("foobared");
ShardedJedis jedisShard = new ShardedJedis(shards);
try {
jedisShard.set("shard_closeable", "true");
} finally {
jedisShard.close();
}
for (Jedis jedis : jedisShard.getAllShards()) {
assertTrue(!jedis.isConnected());
}
}
use of redis.clients.jedis.JedisShardInfo in project jedis by xetorthio.
the class ShardedJedisTest method getKeysDifferentShard.
private List<String> getKeysDifferentShard(ShardedJedis jedis) {
List<String> ret = new ArrayList<String>();
JedisShardInfo first = jedis.getShardInfo("a0");
ret.add("a0");
for (int i = 1; i < 100; ++i) {
JedisShardInfo actual = jedis.getShardInfo("a" + i);
if (actual != first) {
ret.add("a" + i);
break;
}
}
return ret;
}
Aggregations