@Test(expectedExceptions = NullPointerException.class) public void executor_null() { Caffeine.newBuilder().executor(null); }
@Test public void executor() { Caffeine<?, ?> builder = Caffeine.newBuilder().executor(MoreExecutors.directExecutor()); assertThat(builder.getExecutor(), is(MoreExecutors.directExecutor())); builder.build(); }
public void testComputeIfAbsentEviction() { Cache<String, String> c = CaffeinatedGuava.build( Caffeine.newBuilder().executor(MoreExecutors.directExecutor()).maximumSize(1)); assertThat(c.asMap().computeIfAbsent("hash-1", k -> "")).isEqualTo(""); assertThat(c.asMap().computeIfAbsent("hash-1", k -> "")).isEqualTo(""); assertThat(c.asMap().computeIfAbsent("hash-1", k -> "")).isEqualTo(""); assertThat(c.size()).isEqualTo(1); assertThat(c.asMap().computeIfAbsent("hash-2", k -> "")).isEqualTo(""); }
public void testAsMapValues_iteratorRemove() { Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(1000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .ticker(fakeTicker::read)); cache.put(10, 20); Iterator<Integer> iterator = cache.asMap().values().iterator(); iterator.next(); iterator.remove(); assertEquals(0, cache.size()); } }
@DataProvider(name = "params") public Object[][] providesCache() { ConcurrentMap<String, String> source = new ConcurrentHashMap<>(); ConcurrentMap<String, Date> lastLoad = new ConcurrentHashMap<>(); AsyncLoadingCache<String, String> cache = Caffeine.newBuilder() .expireAfterWrite(TTL, TimeUnit.MILLISECONDS) .executor(executor) .buildAsync(new Loader(source, lastLoad)); return new Object[][] {{ cache, source, lastLoad }}; }
public void testConcurrentExpirationLoading() throws InterruptedException { testConcurrentLoading(Caffeine.newBuilder() .expireAfterWrite(10, TimeUnit.SECONDS) .executor(MoreExecutors.directExecutor())); }
@Override public void setUp() throws Exception { super.setUp(); this.cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterAccess(500000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .maximumSize(count)); }
public void testComputeEviction() { Cache<String, String> c = CaffeinatedGuava.build( Caffeine.newBuilder().executor(MoreExecutors.directExecutor()).maximumSize(1)); assertThat(c.asMap().compute("hash-1", (k, v) -> "a")).isEqualTo("a"); assertThat(c.asMap().compute("hash-1", (k, v) -> "b")).isEqualTo("b"); assertThat(c.asMap().compute("hash-1", (k, v) -> "c")).isEqualTo("c"); assertThat(c.size()).isEqualTo(1); assertThat(c.asMap().computeIfAbsent("hash-2", k -> "")).isEqualTo(""); }
Builder(String cacheName, CaffeineConfiguration<K, V> config) { this.config = config; this.cacheName = cacheName; this.caffeine = Caffeine.newBuilder(); this.statistics = new JCacheStatisticsMXBean(); this.ticker = config.getTickerFactory().create(); this.executor = config.getExecutorFactory().create(); this.expiryPolicy = config.getExpiryPolicyFactory().create(); this.dispatcher = new EventDispatcher<>(executor); caffeine.executor(executor); config.getCacheEntryListenerConfigurations().forEach(dispatcher::register); }
public CaffeinePolicy(Config config) { policyStats = new PolicyStats("product.Caffeine"); BasicSettings settings = new BasicSettings(config); maximumSize = settings.maximumSize(); cache = Caffeine.newBuilder() .initialCapacity(maximumSize) .maximumSize(maximumSize) .executor(Runnable::run) .build(); }
public void testEviction_maxSizeOneSegment() { IdentityLoader<Integer> loader = identityLoader(); LoadingCache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .executor(MoreExecutors.directExecutor()) .maximumSize(MAX_SIZE), loader); for (int i = 0; i < 2 * MAX_SIZE; i++) { cache.getUnchecked(i); assertEquals(Math.min(i + 1, MAX_SIZE), cache.size()); } assertEquals(MAX_SIZE, cache.size()); CacheTesting.checkValidState(cache); }
@GwtIncompatible("maximumWeight") public void testMaximumWeight_withoutWeigher() { Caffeine<Object, Object> builder = Caffeine.newBuilder() .executor(MoreExecutors.directExecutor()) .maximumWeight(1); try { CaffeinatedGuava.build(builder, identityLoader()); fail(); } catch (IllegalStateException expected) {} }
public void testEviction_overflow() { CountingRemovalListener<Object, Object> removalListener = countingRemovalListener(); IdentityLoader<Object> loader = identityLoader(); LoadingCache<Object, Object> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .maximumWeight(1L << 31) .executor(MoreExecutors.directExecutor()) .weigher(constantWeigher(Integer.MAX_VALUE)) .removalListener(removalListener), loader); cache.getUnchecked(objectWithHash(0)); cache.getUnchecked(objectWithHash(0)); assertEquals(1, removalListener.getCount()); }
public void testExpiration_expireAfterAccess() { FakeTicker ticker = new FakeTicker(); CountingRemovalListener<String, Integer> removalListener = countingRemovalListener(); WatchedCreatorLoader loader = new WatchedCreatorLoader(); LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterAccess(EXPIRING_TIME, MILLISECONDS) .executor(MoreExecutors.directExecutor()) .removalListener(removalListener) .ticker(ticker::read), loader); checkExpiration(cache, loader, ticker, removalListener); }
public void testExpiration_expireAfterWrite() { FakeTicker ticker = new FakeTicker(); CountingRemovalListener<String, Integer> removalListener = countingRemovalListener(); WatchedCreatorLoader loader = new WatchedCreatorLoader(); LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(EXPIRING_TIME, MILLISECONDS) .executor(MoreExecutors.directExecutor()) .removalListener(removalListener) .ticker(ticker::read), loader); checkExpiration(cache, loader, ticker, removalListener); }
public void testExpiringGet_expireAfterWrite() { FakeTicker ticker = new FakeTicker(); CountingRemovalListener<String, Integer> removalListener = countingRemovalListener(); WatchedCreatorLoader loader = new WatchedCreatorLoader(); LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(EXPIRING_TIME, MILLISECONDS) .executor(MoreExecutors.directExecutor()) .removalListener(removalListener) .ticker(ticker::read), loader); runExpirationTest(cache, loader, ticker, removalListener); }
public void testExpiringGet_expireAfterAccess() { FakeTicker ticker = new FakeTicker(); CountingRemovalListener<String, Integer> removalListener = countingRemovalListener(); WatchedCreatorLoader loader = new WatchedCreatorLoader(); LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterAccess(EXPIRING_TIME, MILLISECONDS) .executor(MoreExecutors.directExecutor()) .removalListener(removalListener) .ticker(ticker::read), loader); runExpirationTest(cache, loader, ticker, removalListener); }
public void testRemovalScheduler_expireAfterWrite() { FakeTicker ticker = new FakeTicker(); CountingRemovalListener<String, Integer> removalListener = countingRemovalListener(); WatchedCreatorLoader loader = new WatchedCreatorLoader(); LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(EXPIRING_TIME, MILLISECONDS) .executor(MoreExecutors.directExecutor()) .removalListener(removalListener) .ticker(ticker::read), loader); runRemovalScheduler(cache, removalListener, loader, ticker, KEY_PREFIX, EXPIRING_TIME); }
public void testRemovalScheduler_expireAfterAccess() { FakeTicker ticker = new FakeTicker(); CountingRemovalListener<String, Integer> removalListener = countingRemovalListener(); WatchedCreatorLoader loader = new WatchedCreatorLoader(); LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterAccess(EXPIRING_TIME, MILLISECONDS) .executor(MoreExecutors.directExecutor()) .removalListener(removalListener) .ticker(ticker::read), loader); runRemovalScheduler(cache, removalListener, loader, ticker, KEY_PREFIX, EXPIRING_TIME); }