package org.tests.cache;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.cache.ServerCache;
import io.ebean.cache.ServerCacheStatistics;
import org.tests.model.basic.Country;
import org.tests.model.basic.ResetBasicData;
import org.junit.Assert;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class TestQueryCacheCountry extends BaseTestCase {
@Test
public void test() {
ResetBasicData.reset();
awaitL2Cache();
ServerCache queryCache = Ebean.getServerCacheManager().getQueryCache(Country.class);
queryCache.clear();
ServerCache beanCache = Ebean.getServerCacheManager().getBeanCache(Country.class);
beanCache.clear();
assertEquals(0, queryCache.getStatistics(false).getSize());
List<Country> countryList0 = Ebean.find(Country.class)
.setUseQueryCache(true)
.order().asc("name")
.findList();
assertEquals(1, queryCache.getStatistics(false).getSize());
assertTrue(!countryList0.isEmpty());
List<Country> countryList1 = Ebean.find(Country.class)
.setUseQueryCache(true)
.order().asc("name")
.findList();
ServerCacheStatistics statistics = queryCache.getStatistics(false);
assertEquals(1, statistics.getSize());
assertEquals(1, statistics.getHitCount());
Assert.assertSame(countryList1, countryList0);
Country nz = Ebean.find(Country.class, "NZ");
nz.setName("New Zealandia");
Ebean.save(nz);
awaitL2Cache();
statistics = queryCache.getStatistics(false);
assertEquals(0, statistics.getSize());
List<Country> countryList2 = Ebean.find(Country.class)
.setUseQueryCache(true)
.order().asc("name")
.findList();
Assert.assertNotSame(countryList2, countryList0);
}
}