@Test(expectedExceptions = NullPointerException.class) public void ticker_null() { Caffeine.newBuilder().ticker(null); }
@Test public void ticker() { Ticker ticker = new FakeTicker()::read; Caffeine<?, ?> builder = Caffeine.newBuilder().ticker(ticker); assertThat(builder.ticker, is(ticker)); builder.build(); }
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()); } }
public void testAsMapKeySet_contains() { Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(1000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .ticker(fakeTicker::read)); cache.put(10, 20); fakeTicker.advance(500, TimeUnit.MILLISECONDS); cache.put(20, 22); cache.put(5, 10); fakeTicker.advance(501, TimeUnit.MILLISECONDS); assertTrue(cache.asMap().keySet().contains(20)); assertTrue(cache.asMap().keySet().contains(5)); assertFalse(cache.asMap().keySet().contains(10)); }
public void testAsMapValues_contains() { Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(1000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .ticker(fakeTicker::read)); cache.put(10, 20); fakeTicker.advance(500, TimeUnit.MILLISECONDS); cache.put(20, 22); cache.put(5, 10); fakeTicker.advance(501, TimeUnit.MILLISECONDS); assertTrue(cache.asMap().values().contains(22)); assertTrue(cache.asMap().values().contains(10)); assertFalse(cache.asMap().values().contains(20)); }
public void testAsMapKeySet() { Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(1000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .ticker(fakeTicker::read)); cache.put(10, 20); fakeTicker.advance(500, TimeUnit.MILLISECONDS); cache.put(20, 22); cache.put(5, 10); fakeTicker.advance(501, TimeUnit.MILLISECONDS); Set<Integer> foundKeys = Sets.newHashSet(); for (Integer current : cache.asMap().keySet()) { foundKeys.add(current); } assertEquals(ImmutableSet.of(20, 5), foundKeys); }
public void testAsMap_containsKey() { Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(20000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .ticker(fakeTicker::read)); cache.put(654, 2675); fakeTicker.advance(10000, TimeUnit.MILLISECONDS); cache.put(2456, 56); cache.put(2, 15); fakeTicker.advance(10001, TimeUnit.MILLISECONDS); assertTrue(cache.asMap().containsKey(2)); assertTrue(cache.asMap().containsKey(2456)); assertFalse(cache.asMap().containsKey(654)); }
public void testAsMapEntrySet() { Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(1000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .ticker(fakeTicker::read)); cache.put(10, 20); fakeTicker.advance(500, TimeUnit.MILLISECONDS); cache.put(20, 22); cache.put(5, 10); fakeTicker.advance(501, TimeUnit.MILLISECONDS); int sum = 0; for (Entry<Integer, Integer> current : cache.asMap().entrySet()) { sum += current.getKey() + current.getValue(); } assertEquals(57, sum); }
public void testExpireAfterAccess() { final Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterAccess(1000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .ticker(fakeTicker::read)); cache.put(0, 10); cache.put(2, 30); fakeTicker.advance(999, TimeUnit.MILLISECONDS); assertEquals(Integer.valueOf(30), cache.getIfPresent(2)); fakeTicker.advance(1, TimeUnit.MILLISECONDS); assertEquals(Integer.valueOf(30), cache.getIfPresent(2)); fakeTicker.advance(1000, TimeUnit.MILLISECONDS); assertEquals(null, cache.getIfPresent(0)); }
public void testExpireAfterWrite() { final Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(1000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .ticker(fakeTicker::read)); cache.put(10, 100); cache.put(20, 200); cache.put(4, 2); fakeTicker.advance(999, TimeUnit.MILLISECONDS); assertEquals(Integer.valueOf(100), cache.getIfPresent(10)); assertEquals(Integer.valueOf(200), cache.getIfPresent(20)); assertEquals(Integer.valueOf(2), cache.getIfPresent(4)); fakeTicker.advance(2, TimeUnit.MILLISECONDS); assertEquals(null, cache.getIfPresent(10)); assertEquals(null, cache.getIfPresent(20)); assertEquals(null, cache.getIfPresent(4)); cache.put(10, 20); assertEquals(Integer.valueOf(20), cache.getIfPresent(10)); fakeTicker.advance(1000, TimeUnit.MILLISECONDS); assertEquals(null, cache.getIfPresent(10)); }
public void testAsMap_containsValue() { Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder() .expireAfterWrite(20000, TimeUnit.MILLISECONDS) .executor(MoreExecutors.directExecutor()) .ticker(fakeTicker::read)); cache.put(654, 2675); fakeTicker.advance(10000, TimeUnit.MILLISECONDS); cache.put(2456, 56); cache.put(2, 15); fakeTicker.advance(10001, TimeUnit.MILLISECONDS); assertTrue(cache.asMap().containsValue(15)); assertTrue(cache.asMap().containsValue(56)); assertFalse(cache.asMap().containsValue(2675)); }
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 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 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); }
public void testRemovalScheduler_expireAfterBoth() { 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) .expireAfterWrite(EXPIRING_TIME, MILLISECONDS) .executor(MoreExecutors.directExecutor()) .removalListener(removalListener) .ticker(ticker::read), loader); runRemovalScheduler(cache, removalListener, loader, ticker, KEY_PREFIX, EXPIRING_TIME); }