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.ExternalCacheSettings;
12 import com.atlassian.vcache.StableReadExternalCache;
13 import com.atlassian.vcache.internal.RequestContext;
14 import com.atlassian.vcache.internal.core.DefaultRequestContext;
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.AbstractStableReadExternalCacheIT;
20
21 import java.util.Optional;
22 import java.util.concurrent.TimeUnit;
23
24 public class LegacyStableReadExternalCacheIT extends AbstractStableReadExternalCacheIT {
25 private RequestContext requestContext = new DefaultRequestContext("tenant-id");
26 private CacheFactory cacheFactory = new MemoryCacheManager();
27 private Sha1ExternalCacheKeyGenerator keyGenerator = new Sha1ExternalCacheKeyGenerator("it-test");
28 private Optional<MarshallingPair<String>> marshalling = Optional.of(StringMarshalling.pair());
29 private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
30
31 @Override
32 protected StableReadExternalCache<String> createCache(String name, ExternalCacheSettings settings) {
33 final CacheSettings legacySettings = new CacheSettingsBuilder()
34 .remote()
35 .maxEntries(settings.getEntryCountHint().get())
36 .expireAfterWrite(settings.getDefaultTtl().get().toNanos(), TimeUnit.NANOSECONDS)
37 .build();
38
39 final Cache<String, IdentifiedData> delegate = cacheFactory.getCache(name, null, legacySettings);
40 return new LegacyStableReadExternalCache<>(
41 delegate,
42 () -> requestContext,
43 keyGenerator,
44 marshalling,
45 new LegacyServiceSettingsBuilder().build(),
46 metricsCollector);
47 }
48
49 @Override
50 protected DirectExternalCache<String> obtainDirectCache(String name, ExternalCacheSettings settings) {
51 final Cache<String, IdentifiedData> delegate = cacheFactory.getCache(name);
52 return new LegacyDirectExternalCache<>(
53 delegate,
54 () -> requestContext,
55 keyGenerator,
56 marshalling,
57 new LegacyServiceSettingsBuilder().build());
58 }
59 }