View Javadoc

1   package com.atlassian.vcache.internal.legacy;
2   
3   import com.atlassian.cache.CacheException;
4   import com.atlassian.cache.CacheSettings;
5   import com.atlassian.cache.CacheSettingsBuilder;
6   import com.atlassian.cache.memory.MemoryCacheManager;
7   import com.atlassian.vcache.JvmCache;
8   import com.atlassian.vcache.JvmCacheSettings;
9   import com.atlassian.vcache.internal.test.AbstractJvmCacheTest;
10  import org.junit.Test;
11  
12  import java.time.Duration;
13  import java.util.concurrent.TimeUnit;
14  
15  import static com.atlassian.vcache.internal.NameValidator.requireValidCacheName;
16  
17  public class LegacyJvmCacheTest extends AbstractJvmCacheTest {
18      private MemoryCacheManager cacheManager = new MemoryCacheManager();
19  
20      @Override
21      protected <K, V> JvmCache<K, V> createCache(String name, JvmCacheSettings settings) {
22          final CacheSettings legacySettings = new CacheSettingsBuilder()
23                  .local()
24                  .maxEntries(settings.getMaxEntries().orElse(100))
25                  .expireAfterWrite(settings.getDefaultTtl().orElse(Duration.ofSeconds(60)).toNanos(), TimeUnit.NANOSECONDS)
26                  .build();
27  
28          return new LegacyJvmCache<>(cacheManager.getCache(requireValidCacheName(name), null, legacySettings));
29      }
30  
31      @Test
32      public void detect_illegal_recursion_supplier() {
33          thrown.expect(CacheException.class);
34          thrown.expectMessage("Recursive call with key: first");
35  
36          final JvmCache<String, String> cache = createCache("abc");
37  
38          cache.get("first", () ->
39                  cache.get("first", () -> "fail"));
40      }
41  }