View Javadoc

1   package com.atlassian.vcache.internal.redis;
2   
3   import com.atlassian.vcache.ChangeRate;
4   import com.atlassian.vcache.VCacheFactory;
5   import com.atlassian.vcache.internal.RequestContext;
6   import com.atlassian.vcache.internal.VCacheLifecycleManager;
7   import com.atlassian.vcache.internal.VCacheManagement;
8   import com.atlassian.vcache.internal.core.DefaultVCacheCreationHandler;
9   import com.atlassian.vcache.internal.core.ThreadLocalRequestContextSupplier;
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.AbstractVCacheServiceIT;
13  import com.atlassian.vcache.internal.test.EmptyVCacheSettingsDefaultsProvider;
14  import org.junit.After;
15  import org.junit.Before;
16  import org.junit.BeforeClass;
17  import redis.clients.jedis.JedisPool;
18  import redis.clients.jedis.JedisPoolConfig;
19  
20  import java.io.IOException;
21  import java.net.URI;
22  import java.net.URISyntaxException;
23  import java.time.Duration;
24  
25  public class RedisVCacheServiceIT extends AbstractVCacheServiceIT {
26      private static JedisPool jedisPool;
27  
28      private final ThreadLocalRequestContextSupplier requestContextSupplier =
29              ThreadLocalRequestContextSupplier.strictSupplier();
30      private final MetricsCollector metricsCollector = new DefaultMetricsCollector(requestContextSupplier);
31  
32      private RedisVCacheService service = new RedisVCacheService(
33              "confira",
34              jedisPool::getResource,
35              requestContextSupplier,
36              requestContextSupplier,
37              new EmptyVCacheSettingsDefaultsProvider(),
38              new DefaultVCacheCreationHandler(
39                      MAX_ENTRIES,
40                      MAX_TTL,
41                      MAX_ENTRIES,
42                      ChangeRate.HIGH_CHANGE,
43                      ChangeRate.HIGH_CHANGE),
44              metricsCollector,
45              begunTxnActivityHandler,
46              Duration.ofSeconds(10));
47  
48      @Override
49      protected VCacheFactory vCacheFactory() {
50          return service;
51      }
52  
53      @Override
54      protected VCacheManagement vCacheManagement() {
55          return service;
56      }
57  
58      @Override
59      protected VCacheLifecycleManager vCacheLifecycleManager() {
60          return service;
61      }
62  
63      @Override
64      protected RequestContext currentRequestContext() {
65          return requestContextSupplier.get();
66      }
67  
68      @Override
69      protected void forceNewRequestContext() {
70          clearThread();
71          initThread();
72      }
73  
74      @BeforeClass
75      public static void initClient() throws IOException, URISyntaxException {
76          final JedisPoolConfig poolConfig = new JedisPoolConfig();
77          poolConfig.setBlockWhenExhausted(false);
78          poolConfig.setMaxTotal(1);
79          jedisPool = new JedisPool(poolConfig, new URI(System.getProperty("redis.svr")));
80      }
81  
82      @Before
83      public void initThread() {
84          requestContextSupplier.initThread("tenant-123");
85      }
86  
87      @After
88      public void clearThread() {
89          requestContextSupplier.clearThread();
90      }
91  }