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.WorkContextRequestContextSupplier;
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.AbstractVCacheServiceIT;
14  import com.atlassian.vcache.internal.test.EmptyVCacheSettingsDefaultsProvider;
15  import org.junit.After;
16  import org.junit.Before;
17  import org.junit.BeforeClass;
18  import redis.clients.jedis.JedisPool;
19  import redis.clients.jedis.JedisPoolConfig;
20  
21  import java.io.IOException;
22  import java.net.URI;
23  import java.net.URISyntaxException;
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  
47      @Override
48      protected VCacheFactory vCacheFactory() {
49          return service;
50      }
51  
52      @Override
53      protected VCacheManagement vCacheManagement() {
54          return service;
55      }
56  
57      @Override
58      protected VCacheLifecycleManager vCacheLifecycleManager() {
59          return service;
60      }
61  
62      @Override
63      protected RequestContext currentRequestContext() {
64          return requestContextSupplier.get();
65      }
66  
67      @Override
68      protected void forceNewRequestContext() {
69          clearThread();
70          initThread();
71      }
72  
73      @BeforeClass
74      public static void initClient() throws IOException, URISyntaxException {
75          final JedisPoolConfig poolConfig = new JedisPoolConfig();
76          poolConfig.setBlockWhenExhausted(false);
77          poolConfig.setMaxTotal(1);
78          jedisPool = new JedisPool(poolConfig, new URI(System.getProperty("redis.svr")));
79      }
80  
81      @Before
82      public void initThread() {
83          requestContextSupplier.initThread("tenant-123");
84      }
85  
86      @After
87      public void clearThread() {
88          requestContextSupplier.clearThread();
89      }
90  }