package com.lambdaworks.redis.support;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
import com.lambdaworks.redis.api.sync.RedisCommands;
import org.junit.Test;
import com.lambdaworks.redis.AbstractRedisClientTest;
import com.lambdaworks.redis.RedisConnection;
import com.lambdaworks.redis.RedisConnectionPool;
public class WithConnectionTest extends AbstractRedisClientTest {
@Test
public void testPooling() throws Exception {
final RedisConnectionPool<RedisCommands<String, String>> pool = client.pool();
assertThat(pool.getNumActive()).isEqualTo(0);
assertThat(pool.getNumIdle()).isEqualTo(0);
new WithConnection<RedisCommands<String, String>>(pool) {
@Override
protected void run(RedisCommands<String, String> connection) {
connection.set("key", "value");
String result = connection.get("key");
assertThat(result).isEqualTo("value");
assertThat(pool.getNumActive()).isEqualTo(1);
assertThat(pool.getNumIdle()).isEqualTo(0);
}
};
assertThat(pool.getNumActive()).isEqualTo(0);
assertThat(pool.getNumIdle()).isEqualTo(1);
}
@Test
public void testPoolingWithException() throws Exception {
final RedisConnectionPool<RedisCommands<String, String>> pool = client.pool();
assertThat(pool.getNumActive()).isEqualTo(0);
assertThat(pool.getNumIdle()).isEqualTo(0);
try {
new WithConnection<RedisCommands<String, String>>(pool) {
@Override
protected void run(RedisCommands<String, String> connection) {
connection.set("key", "value");
throw new IllegalStateException("test");
}
};
fail("Missing Exception");
} catch (Exception e) {
}
assertThat(pool.getNumActive()).isEqualTo(0);
assertThat(pool.getNumIdle()).isEqualTo(1);
}
}