package io.ebeaninternal.server.cache;
import io.ebean.cache.ServerCacheOptions;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class DefaultServerCacheTest {
private DefaultServerCache createCache() {
ServerCacheOptions cacheOptions = new ServerCacheOptions();
cacheOptions.setMaxSize(100);
cacheOptions.setMaxIdleSecs(60);
cacheOptions.setMaxSecsToLive(600);
cacheOptions.setTrimFrequency(60);
return new DefaultServerCache("foo", null, cacheOptions);
}
@Test
public void testGetHitRatio() throws Exception {
DefaultServerCache cache = createCache();
assertEquals(0, cache.getHitRatio());
cache.put("A", "A");
cache.get("A");
assertEquals(100, cache.getHitRatio());
cache.get("B");
assertEquals(50, cache.getHitRatio());
cache.get("B");
cache.get("B");
assertEquals(25, cache.getHitRatio());
}
@Test
public void testSize() throws Exception {
DefaultServerCache cache = createCache();
assertEquals(0, cache.size());
cache.put("A", "A");
assertEquals(1, cache.size());
cache.put("A", "B");
assertEquals(1, cache.size());
cache.put("B", "B");
assertEquals(2, cache.size());
cache.remove("B");
cache.remove("A");
assertEquals(0, cache.size());
}
@Test
public void trimFreq_halfIdle() throws Exception {
DefaultServerCache cache = new DefaultServerCache("", null, null, 10000, 10, 20, 0);
assertEquals(cache.trimFrequency, 4);
}
@Test
public void trimFreq_halfIdle_withRounding() throws Exception {
DefaultServerCache cache = new DefaultServerCache("", null, null, 10000, 11, 20, 0);
assertEquals(cache.trimFrequency, 4);
}
@Test
public void trimFreq_halfTTL() throws Exception {
DefaultServerCache cache = new DefaultServerCache("", null, null, 10000, 0, 20, 0);
assertEquals(cache.trimFrequency, 9);
}
@Test
public void trimFreq_halfTTL_withRounding() throws Exception {
DefaultServerCache cache = new DefaultServerCache("", null, null, 10000, 0, 21, 0);
assertEquals(cache.trimFrequency, 9);
}
@Test
public void trimFreq_explicit() throws Exception {
DefaultServerCache cache = new DefaultServerCache("", null, null, 10000, 10, 20, 42);
assertEquals(cache.trimFrequency, 42);
}
}