public void testSizeOnCache() throws Exception {
final Cache<Object, Object> cache1 = cache(0, "atomic");
final TransactionManager tm1 = tm(0, "atomic");
assertSize(cache1, 0);
cache1.put(new MagicKey("Hi", cache1), "Someone");
assertSize(cache1, 1);
tm1.begin();
assertSize(cache1, 1);
cache1.put(new MagicKey("Need", cache1), "Read Consistency");
assertSize(cache1, 2);
tm1.commit();
assertSize(cache1, 2);
tm1.begin();
assertSize(cache1, 2);
cache1.put(new MagicKey("Need Also", cache1), "Speed");
assertSize(cache1, 3);
tm1.rollback();
assertSize(cache1, 2);
Map<Object, Object> atomicMap = createAtomicMap(cache1, new MagicKey("testSizeOnCache", cache1), true);
assertSize(cache1, 3);
atomicMap.put("mm", "nn");
assertSize(cache1, 3);
tm1.begin();
assertSize(cache1, 3);
atomicMap = createAtomicMap(cache1, new MagicKey("testSizeOnCache-second", cache1), true);
assertSize(cache1, 4);
atomicMap.put("mm", "nn");
assertSize(cache1, 4);
tm1.commit();
assertSize(cache1, 4);
tm1.begin();
assertSize(cache1, 4);
atomicMap = createAtomicMap(cache1, new MagicKey("testSizeOnCache-third", cache1), true);
assertSize(cache1, 5);
atomicMap.put("mm", "nn");
assertSize(cache1, 5);
atomicMap.put("ooo", "weird!");
assertSize(cache1, 5);
atomicMap = createAtomicMap(cache1, new MagicKey("testSizeOnCache-onemore", cache1), true);
assertSize(cache1, 6);
atomicMap.put("even less?", "weird!");
assertSize(cache1, 6);
tm1.rollback();
assertSize(cache1, 4);