View Javadoc

1   package com.atlassian.vcache.internal.redis;
2   
3   import com.atlassian.marshalling.jdk.JavaSerializationMarshalling;
4   import com.atlassian.vcache.DirectExternalCache;
5   import com.atlassian.vcache.ExternalCacheSettings;
6   import com.atlassian.vcache.StableReadExternalCache;
7   import com.atlassian.vcache.internal.RequestContext;
8   import com.atlassian.vcache.internal.core.DefaultRequestContext;
9   import com.atlassian.vcache.internal.core.Sha1ExternalCacheKeyGenerator;
10  import com.atlassian.vcache.internal.core.metrics.DefaultMetricsCollector;
11  import com.atlassian.vcache.internal.core.metrics.MetricsCollector;
12  import com.atlassian.vcache.internal.test.AbstractStableReadExternalCacheIT;
13  import org.junit.BeforeClass;
14  import redis.clients.jedis.JedisPool;
15  import redis.clients.jedis.JedisPoolConfig;
16  
17  import java.io.IOException;
18  import java.net.URI;
19  import java.net.URISyntaxException;
20  
21  public class RedisStableReadExternalCacheIT extends AbstractStableReadExternalCacheIT {
22      private static JedisPool jedisPool;
23      private RequestContext requestContext = new DefaultRequestContext("tenant-id");
24      private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
25  
26      @BeforeClass
27      public static void init_client() throws IOException, URISyntaxException {
28          final JedisPoolConfig poolConfig = new JedisPoolConfig();
29          poolConfig.setMaxTotal(1); // only allow one connection to check for connection leaks
30          jedisPool = new JedisPool(poolConfig, new URI(System.getProperty("redis.svr")));
31      }
32  
33      @Override
34      protected StableReadExternalCache<String> createCache(String name, ExternalCacheSettings settings) {
35          return new RedisStableReadExternalCache<>(
36                  jedisPool::getResource,
37                  () -> requestContext,
38                  new Sha1ExternalCacheKeyGenerator("redis-test"),
39                  name,
40                  JavaSerializationMarshalling.pair(String.class),
41                  settings,
42                  metricsCollector);
43      }
44  
45      @Override
46      protected DirectExternalCache<String> obtainDirectCache(String name, ExternalCacheSettings settings) {
47          return new RedisDirectExternalCache<>(
48                  jedisPool::getResource,
49                  () -> requestContext,
50                  new Sha1ExternalCacheKeyGenerator("redis-test"),
51                  name,
52                  JavaSerializationMarshalling.pair(String.class),
53                  settings);
54      }
55  }