1 package com.atlassian.vcache.internal.legacy;
2
3 import com.atlassian.cache.Cache;
4 import com.atlassian.cache.CacheFactory;
5 import com.atlassian.cache.CacheSettings;
6 import com.atlassian.cache.CacheSettingsBuilder;
7 import com.atlassian.cache.memory.MemoryCacheManager;
8 import com.atlassian.marshalling.api.MarshallingPair;
9 import com.atlassian.marshalling.jdk.StringMarshalling;
10 import com.atlassian.vcache.DirectExternalCache;
11 import com.atlassian.vcache.TransactionalExternalCache;
12 import com.atlassian.vcache.internal.RequestContext;
13 import com.atlassian.vcache.internal.core.DefaultRequestContext;
14 import com.atlassian.vcache.internal.core.DefaultTransactionControlManager;
15 import com.atlassian.vcache.internal.core.Sha1ExternalCacheKeyGenerator;
16 import com.atlassian.vcache.internal.core.cas.IdentifiedData;
17 import com.atlassian.vcache.internal.core.metrics.DefaultMetricsCollector;
18 import com.atlassian.vcache.internal.core.metrics.MetricsCollector;
19 import com.atlassian.vcache.internal.test.AbstractTransactionalExternalCacheIT;
20 import org.junit.Before;
21
22 import java.util.Optional;
23 import java.util.concurrent.CompletionStage;
24 import java.util.concurrent.TimeUnit;
25
26 import static com.atlassian.vcache.internal.test.CompletionStageSuccessful.successful;
27 import static org.hamcrest.MatcherAssert.assertThat;
28
29 public class LegacyTransactionalExternalCacheIT extends AbstractTransactionalExternalCacheIT {
30 private RequestContext requestContext = new DefaultRequestContext("tenant-id");
31 private CacheFactory cacheFactory = new MemoryCacheManager();
32 private Sha1ExternalCacheKeyGenerator keyGenerator = new Sha1ExternalCacheKeyGenerator("it-test");
33 private Optional<MarshallingPair<String>> marshaller = Optional.of(StringMarshalling.pair());
34 private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
35
36 private LegacyTransactionalExternalCache<String> cache;
37 private LegacyDirectExternalCache<String> directCache;
38
39 @Override
40 protected TransactionalExternalCache<String> cache() {
41 return cache;
42 }
43
44 @Override
45 protected DirectExternalCache<String> directCache() {
46 return directCache;
47 }
48
49 @Override
50 protected void directCacheRefresh() {
51
52 }
53
54 @Override
55 protected void cacheTransactionSync() {
56 cache.transactionSync();
57 }
58
59 @Override
60 protected void cacheTransactionDiscard() {
61 cache.transactionDiscard();
62 }
63
64 @Before
65 public void ensureCache() {
66 final CacheSettings legacySettings = new CacheSettingsBuilder()
67 .remote()
68 .maxEntries(1000)
69 .expireAfterWrite(60, TimeUnit.SECONDS)
70 .build();
71
72 final Cache<String, IdentifiedData> delegate = cacheFactory.getCache(CACHE_NAME, null, legacySettings);
73 cache = new LegacyTransactionalExternalCache<>(
74 delegate,
75 () -> requestContext,
76 keyGenerator,
77 marshaller,
78 new DefaultTransactionControlManager(metricsCollector, context -> {}),
79 new LegacyServiceSettingsBuilder().build(),
80 metricsCollector);
81
82 directCache = new LegacyDirectExternalCache<>(
83 delegate,
84 () -> requestContext,
85 keyGenerator,
86 marshaller,
87 new LegacyServiceSettingsBuilder().build());
88
89
90 final CompletionStage<Void> rm = directCache.removeAll();
91 assertThat(rm, successful());
92 }
93 }