@Override public long getSize() { return entries.getSize(); }
@Override public Pair<Integer, Long> evictEntries(long sizeToFree) { checkArgument(sizeToFree > 0); Pair<Integer, Long> evicted = entries.evictLeastAccessedEntries(sizeToFree); int evictedEntries = evicted.getLeft(); long evictedSize = evicted.getRight(); if (log.isDebugEnabled()) { log.debug( "[{}] Doing cache eviction of at least {} Mb -- Deleted {} entries - Total size deleted: {} Mb " + " -- Current Size: {} Mb", ml.getName(), sizeToFree / MB, evictedEntries, evictedSize / MB, entries.getSize() / MB); } manager.entriesRemoved(evictedSize); return evicted; }
assertEquals(cache.getSize(), 100); Pair<Integer, Long> res = cache.evictLeastAccessedEntries(1); assertEquals((int) res.getLeft(), 1); assertEquals((long) res.getRight(), 1); assertEquals(cache.getSize(), 99); assertEquals(cache.getSize(), 89); assertEquals(cache.getSize(), 0); assertEquals(cache.getSize(), 100); assertEquals(cache.getSize(), 90);
@Test void customWeighter() { RangeCache<Integer, RefString> cache = new RangeCache<>(value -> value.s.length()); cache.put(0, new RefString("zero")); cache.put(1, new RefString("one")); assertEquals(cache.getSize(), 7); assertEquals(cache.getNumberOfEntries(), 2); }
@Test void doubleInsert() { RangeCache<Integer, RefString> cache = new RangeCache<>(); RefString s0 = new RefString("zero"); assertEquals(s0.refCnt(), 1); assertEquals(cache.put(0, s0), true); assertEquals(s0.refCnt(), 1); cache.put(1, new RefString("one")); assertEquals(cache.getSize(), 2); assertEquals(cache.getNumberOfEntries(), 2); RefString s = cache.get(1); assertEquals(s.s, "one"); assertEquals(s.refCnt(), 2); RefString s1 = new RefString("uno"); assertEquals(s1.refCnt(), 1); assertEquals(cache.put(1, s1), false); assertEquals(s1.refCnt(), 1); s1.release(); // Should not have been overridden in cache assertEquals(cache.getSize(), 2); assertEquals(cache.getNumberOfEntries(), 2); assertEquals(cache.get(1).s, "one"); }
cache.put(1, new RefString("1")); assertEquals(cache.getSize(), 2); assertEquals(cache.getNumberOfEntries(), 2); cache.put(11, new RefString("11")); assertEquals(cache.getSize(), 5); assertEquals(cache.getNumberOfEntries(), 5); assertEquals(cache.getSize(), 3); assertEquals(cache.getNumberOfEntries(), 3); assertEquals(cache.getSize(), 3); assertEquals(cache.getNumberOfEntries(), 3); assertEquals(cache.getSize(), 0); assertEquals(cache.getNumberOfEntries(), 0); assertEquals(cache.getSize(), 0); assertEquals(cache.getNumberOfEntries(), 0);
@Test void getRange() { RangeCache<Integer, RefString> cache = new RangeCache<>(); cache.put(0, new RefString("0")); cache.put(1, new RefString("1")); cache.put(3, new RefString("3")); cache.put(5, new RefString("5")); assertEquals(cache.getRange(1, 8), Lists.newArrayList(new RefString("1"), new RefString("3"), new RefString("5"))); cache.put(8, new RefString("8")); assertEquals(cache.getRange(1, 8), Lists.newArrayList(new RefString("1"), new RefString("3"), new RefString("5"), new RefString("8"))); cache.clear(); assertEquals(cache.getSize(), 0); assertEquals(cache.getNumberOfEntries(), 0); }
@Override public long getSize() { return entries.getSize(); }
@Override public long getSize() { return entries.getSize(); }
@Override public Pair<Integer, Long> evictEntries(long sizeToFree) { checkArgument(sizeToFree > 0); Pair<Integer, Long> evicted = entries.evictLeastAccessedEntries(sizeToFree); int evictedEntries = evicted.getLeft(); long evictedSize = evicted.getRight(); if (log.isDebugEnabled()) { log.debug( "[{}] Doing cache eviction of at least {} Mb -- Deleted {} entries - Total size deleted: {} Mb " + " -- Current Size: {} Mb", ml.getName(), sizeToFree / MB, evictedEntries, evictedSize / MB, entries.getSize() / MB); } manager.entriesRemoved(evictedSize); return evicted; }
@Override public Pair<Integer, Long> evictEntries(long sizeToFree) { checkArgument(sizeToFree > 0); Pair<Integer, Long> evicted = entries.evictLeastAccessedEntries(sizeToFree); int evictedEntries = evicted.first; long evictedSize = evicted.second; if (log.isDebugEnabled()) { log.debug( "[{}] Doing cache eviction of at least {} Mb -- Deleted {} entries - Total size deleted: {} Mb " + " -- Current Size: {} Mb", ml.getName(), sizeToFree / MB, evictedEntries, evictedSize / MB, entries.getSize() / MB); } manager.entriesRemoved(evictedSize); return evicted; }