1 package com.atlassian.vcache.internal.guava;
2
3 import com.atlassian.marshalling.jdk.StringMarshalling;
4 import com.atlassian.vcache.DirectExternalCache;
5 import com.atlassian.vcache.ExternalCacheSettings;
6 import com.atlassian.vcache.internal.RequestContext;
7 import com.atlassian.vcache.internal.RequestMetrics;
8 import com.atlassian.vcache.internal.core.DefaultRequestContext;
9 import com.atlassian.vcache.internal.core.Sha1ExternalCacheKeyGenerator;
10 import com.atlassian.vcache.internal.core.metrics.DefaultMetricsCollector;
11 import com.atlassian.vcache.internal.core.metrics.MetricsCollector;
12 import com.atlassian.vcache.internal.test.AbstractDirectExternalCacheIT;
13
14 import java.time.Duration;
15 import java.util.Optional;
16
17 public class GuavaDirectExternalCacheIT extends AbstractDirectExternalCacheIT {
18 private final RequestContext requestContext = new DefaultRequestContext("tenant-id");
19 private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
20
21 @Override
22 protected DirectExternalCache<String> createCache(String name, ExternalCacheSettings settings) {
23 return metricsCollector.wrap(
24 new GuavaDirectExternalCache<>(
25 name,
26 GuavaUtils.buildDelegate(settings),
27 () -> requestContext,
28 new Sha1ExternalCacheKeyGenerator("it-test-42"),
29 Optional.of(StringMarshalling.pair()),
30 Duration.ofSeconds(1)));
31 }
32
33 @Override
34 protected RequestMetrics requestMetrics() {
35 return metricsCollector.obtainRequestMetrics(requestContext);
36 }
37 }