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