1 package com.atlassian.vcache.internal.legacy;
2
3 import com.atlassian.cache.CacheSettings;
4 import com.atlassian.cache.CacheSettingsBuilder;
5 import com.atlassian.cache.memory.MemoryCacheManager;
6 import com.atlassian.marshalling.jdk.StringMarshalling;
7 import com.atlassian.vcache.DirectExternalCache;
8 import com.atlassian.vcache.ExternalCacheSettings;
9 import com.atlassian.vcache.internal.RequestContext;
10 import com.atlassian.vcache.internal.RequestMetrics;
11 import com.atlassian.vcache.internal.core.DefaultRequestContext;
12 import com.atlassian.vcache.internal.core.Sha1ExternalCacheKeyGenerator;
13 import com.atlassian.vcache.internal.core.metrics.DefaultMetricsCollector;
14 import com.atlassian.vcache.internal.core.metrics.MetricsCollector;
15 import com.atlassian.vcache.internal.test.AbstractDirectExternalCacheIT;
16
17 import java.util.Optional;
18 import java.util.concurrent.TimeUnit;
19
20 public class LegacyDirectExternalCacheIT extends AbstractDirectExternalCacheIT {
21 private final RequestContext requestContext = new DefaultRequestContext("tenant-id");
22 private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
23
24 @Override
25 protected DirectExternalCache<String> createCache(String name, ExternalCacheSettings settings) {
26 final CacheSettings legacySettings = new CacheSettingsBuilder()
27 .remote()
28 .maxEntries(settings.getEntryCountHint().get())
29 .expireAfterWrite(settings.getDefaultTtl().get().toNanos(), TimeUnit.NANOSECONDS)
30 .build();
31
32 return metricsCollector.wrap(
33 new LegacyDirectExternalCache<>(
34 new MemoryCacheManager().getCache(name, null, legacySettings),
35 () -> requestContext,
36 new Sha1ExternalCacheKeyGenerator("it-test-42"),
37 Optional.of(StringMarshalling.pair()),
38 new LegacyServiceSettingsBuilder().build()));
39 }
40
41 @Override
42 protected RequestMetrics requestMetrics() {
43 return metricsCollector.obtainRequestMetrics(requestContext);
44 }
45 }