@Before public void setUp() { this.cache = new SmallTableCache.SmallTableLocalCache<>(); this.counter = new AtomicInteger(0); }
@Test public void testPutL2() throws ExecutionException { FakeTicker ticker = new FakeTicker(); cache = new SmallTableCache.SmallTableLocalCache<>(ticker); cache.put(KEY, new String(TEST_VALUE_1)); String res = cache.get(KEY, () -> { counter.incrementAndGet(); return new String(TEST_VALUE_2); }); ticker.advance(60, TimeUnit.SECONDS); cache.cleanup(); assertEquals(TEST_VALUE_1, res); assertEquals(0, counter.get()); }
@Test public void testL2Hit() throws ExecutionException { FakeTicker ticker = new FakeTicker(); cache = new SmallTableCache.SmallTableLocalCache<>(ticker); cache.get(KEY, () -> { counter.incrementAndGet(); return new String(TEST_VALUE_1); }); ticker.advance(60, TimeUnit.SECONDS); String res = cache.get(KEY, () -> { counter.incrementAndGet(); return new String(TEST_VALUE_2); }); assertEquals(TEST_VALUE_1, res); assertEquals(1, counter.get()); assertEquals(1, cache.size()); }
@Test public void testL2IsNotClearedIfTheItemIsInL1() throws ExecutionException { FakeTicker ticker = new FakeTicker(); cache = new SmallTableCache.SmallTableLocalCache<>(ticker); cache.get(KEY, () -> { counter.incrementAndGet(); return new String(TEST_VALUE_1); }); forceOOMToClearSoftValues(); ticker.advance(60, TimeUnit.SECONDS); cache.cleanup(); String res = cache.get(KEY, () -> { counter.incrementAndGet(); return new String(TEST_VALUE_2); }); assertEquals(TEST_VALUE_1, res); assertEquals(1, counter.get()); assertEquals(1, cache.size()); }
@Test public void testL2Miss() throws ExecutionException { FakeTicker ticker = new FakeTicker(); cache = new SmallTableCache.SmallTableLocalCache<>(ticker); cache.get(KEY, () -> { counter.incrementAndGet(); return new String(TEST_VALUE_1); }); ticker.advance(60, TimeUnit.SECONDS); cache.cleanup(); forceOOMToClearSoftValues(); String res = cache.get(KEY, () -> { counter.incrementAndGet(); return new String(TEST_VALUE_2); }); assertEquals(TEST_VALUE_2, res); assertEquals(2, counter.get()); assertEquals(1, cache.size()); }