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);
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 }