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.internal.RequestContext;
7   import com.atlassian.vcache.internal.RequestMetrics;
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.AbstractUnreliableDirectExternalCacheIT;
13  import org.junit.Rule;
14  
15  import java.time.Duration;
16  import java.util.concurrent.ExecutionException;
17  
18  public class RedisDirectExternalCacheIT extends AbstractUnreliableDirectExternalCacheIT {
19      @Rule
20      public JedisTester jedisTester = new JedisTester();
21  
22      @Rule
23      public JedisTester offlineJedisTester = new JedisTester(false);
24  
25      private final RequestContext requestContext = new DefaultRequestContext(() -> "tenant-id");
26      private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
27  
28      @Override
29      protected DirectExternalCache<String> createCache(String name, ExternalCacheSettings settings) {
30          return metricsCollector.wrap(
31                  new RedisDirectExternalCache<>(
32                          jedisTester.jedisSupplier(),
33                          () -> requestContext,
34                          new Sha1ExternalCacheKeyGenerator("it-test-42"),
35                          name,
36                          JavaSerializationMarshalling.pair(String.class),
37                          settings,
38                          Duration.ofSeconds(1)));
39      }
40  
41      @Override
42      protected DirectExternalCache<String> createOfflineCache(String name, ExternalCacheSettings settings) {
43          return new RedisDirectExternalCache<>(
44                  offlineJedisTester.jedisSupplier(),
45                  () -> requestContext,
46                  new Sha1ExternalCacheKeyGenerator("it-test-43"),
47                  name,
48                  JavaSerializationMarshalling.pair(String.class),
49                  settings,
50                  Duration.ofSeconds(1));
51      }
52  
53      @Override
54      protected RequestMetrics requestMetrics() {
55          return metricsCollector.obtainRequestMetrics(requestContext);
56      }
57  
58      @Override
59      public void exact_getIdentified_removeIf() throws ExecutionException, InterruptedException {
60          // not supported
61      }
62  
63      @Override
64      public void exact_getIdentified_replaceIf() throws ExecutionException, InterruptedException {
65          // not supported
66      }
67  }