View Javadoc

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  }