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 }