1 package com.atlassian.vcache.internal.memcached;
2
3 import com.atlassian.marshalling.jdk.StringMarshalling;
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 net.spy.memcached.AddrUtil;
14 import net.spy.memcached.BinaryConnectionFactory;
15 import net.spy.memcached.MemcachedClient;
16 import org.junit.BeforeClass;
17
18 import java.io.IOException;
19
20 public class MemcachedStableReadExternalCacheIT extends AbstractStableReadExternalCacheIT {
21 private static MemcachedClient client;
22 private RequestContext requestContext = new DefaultRequestContext("tenant-id");
23 private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
24
25 @BeforeClass
26 public static void init_client() throws IOException {
27 client = new MemcachedClient(
28 new BinaryConnectionFactory(),
29 AddrUtil.getAddresses(System.getProperty("memcached.svr")));
30 }
31
32 @Override
33 protected StableReadExternalCache<String> createCache(String name, ExternalCacheSettings settings) {
34 return new MemcachedStableReadExternalCache<>(
35 () -> client,
36 () -> requestContext,
37 new Sha1ExternalCacheKeyGenerator("it-test"),
38 name,
39 StringMarshalling.pair(),
40 settings,
41 metricsCollector);
42 }
43
44 @Override
45 protected DirectExternalCache<String> obtainDirectCache(String name, ExternalCacheSettings settings) {
46 return new MemcachedDirectExternalCache<>(
47 () -> client,
48 () -> requestContext,
49 new Sha1ExternalCacheKeyGenerator("it-test"),
50 name,
51 StringMarshalling.pair(),
52 settings);
53 }
54 }