1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.cache;
17
18 import static org.junit.jupiter.api.Assertions.assertTrue;
19
20 import org.apache.ibatis.cache.decorators.FifoCache;
21 import org.apache.ibatis.cache.decorators.LruCache;
22 import org.apache.ibatis.cache.decorators.ScheduledCache;
23 import org.apache.ibatis.cache.decorators.SerializedCache;
24 import org.apache.ibatis.cache.decorators.SoftCache;
25 import org.apache.ibatis.cache.decorators.SynchronizedCache;
26 import org.apache.ibatis.cache.decorators.TransactionalCache;
27 import org.apache.ibatis.cache.decorators.WeakCache;
28 import org.apache.ibatis.cache.impl.PerpetualCache;
29 import org.junit.jupiter.api.Test;
30
31 class SuperCacheTest {
32
33 @Test
34 void shouldDemonstrate5LevelSuperCacheHandlesLotsOfEntriesWithoutCrashing() {
35 final int N = 100000;
36 Cache cache = new PerpetualCache("default");
37 cache = new LruCache(cache);
38 cache = new FifoCache(cache);
39 cache = new SoftCache(cache);
40 cache = new WeakCache(cache);
41 cache = new ScheduledCache(cache);
42 cache = new SerializedCache(cache);
43
44 cache = new SynchronizedCache(cache);
45 cache = new TransactionalCache(cache);
46 for (int i = 0; i < N; i++) {
47 cache.putObject(i, i);
48 ((TransactionalCache) cache).commit();
49 Object o = cache.getObject(i);
50 assertTrue(o == null || i == (Integer) o);
51 }
52 assertTrue(cache.getSize() < N);
53 }
54
55 }