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.RequestMetrics;
9   import com.atlassian.vcache.internal.core.DefaultRequestContext;
10  import com.atlassian.vcache.internal.core.Sha1ExternalCacheKeyGenerator;
11  import com.atlassian.vcache.internal.core.metrics.DefaultMetricsCollector;
12  import com.atlassian.vcache.internal.core.metrics.MetricsCollector;
13  import com.atlassian.vcache.internal.test.AbstractUnreliableStableReadExternalCacheIT;
14  import org.junit.Rule;
15  
16  import java.time.Duration;
17  
18  public class RedisStableReadExternalCacheIT extends AbstractUnreliableStableReadExternalCacheIT {
19      @Rule
20      public JedisTester jedisTester = new JedisTester();
21  
22      @Rule
23      public JedisTester offlineJedisTester = new JedisTester(false);
24  
25      private RequestContext requestContext = new DefaultRequestContext(() -> "tenant-id");
26      private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
27  
28      @Override
29      protected StableReadExternalCache<String> createCache(String name, ExternalCacheSettings settings, Duration lockTimeout) {
30          return metricsCollector.wrap(
31                  new RedisStableReadExternalCache<>(
32                          jedisTester.jedisSupplier(),
33                          () -> requestContext,
34                          new Sha1ExternalCacheKeyGenerator("redis-test"),
35                          name,
36                          JavaSerializationMarshalling.pair(String.class),
37                          settings,
38                          metricsCollector,
39                          lockTimeout));
40      }
41  
42      @Override
43      protected StableReadExternalCache<String> createOfflineCache(String name, ExternalCacheSettings settings, Duration lockTimeout) {
44          return new RedisStableReadExternalCache<>(
45                  offlineJedisTester.jedisSupplier(),
46                  () -> requestContext,
47                  new Sha1ExternalCacheKeyGenerator("redis-test-offline"),
48                  name,
49                  JavaSerializationMarshalling.pair(String.class),
50                  settings,
51                  metricsCollector,
52                  lockTimeout);
53      }
54  
55      @Override
56      protected DirectExternalCache<String> obtainDirectCache(String name, ExternalCacheSettings settings) {
57          return new RedisDirectExternalCache<>(
58                  jedisTester.jedisSupplier(),
59                  () -> requestContext,
60                  new Sha1ExternalCacheKeyGenerator("redis-test"),
61                  name,
62                  JavaSerializationMarshalling.pair(String.class),
63                  settings,
64                  Duration.ofSeconds(1));
65      }
66  
67      @Override
68      protected RequestMetrics requestMetrics() {
69          return metricsCollector.obtainRequestMetrics(requestContext);
70      }
71  }