View Javadoc

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  }