View Javadoc

1   package com.atlassian.vcache.internal.redis;
2   
3   import org.junit.rules.TestWatcher;
4   import org.junit.runner.Description;
5   import redis.clients.jedis.Jedis;
6   import redis.clients.jedis.JedisPool;
7   import redis.clients.jedis.JedisPoolConfig;
8   
9   import java.net.URI;
10  import java.util.function.Supplier;
11  
12  public class JedisTester extends TestWatcher {
13  
14      JedisPool jedisPool;
15      URI redisUri;
16  
17      public JedisTester() {
18          this(true);
19      }
20  
21      public JedisTester(boolean online) {
22          redisUri = online
23                  ? URI.create(System.getProperty("redis.svr"))
24                  : URI.create("tcp://localhost:4");
25      }
26  
27      @Override
28      protected void starting(Description description) {
29          final JedisPoolConfig poolConfig = new JedisPoolConfig();
30          poolConfig.setBlockWhenExhausted(false);
31          poolConfig.setMaxTotal(1); // only allow one connection to check for connection leaks
32          jedisPool = new ThreadAffinityJedisPool(poolConfig, redisUri);
33      }
34  
35      @Override
36      protected void finished(Description description) {
37          jedisPool.destroy();
38      }
39  
40      Supplier<Jedis> jedisSupplier() {
41          return jedisPool::getResource;
42      }
43  }