KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > cache > optimistic > OptimisticWithPassivationTest


1 /*
2  * JBoss, Home of Professional Open Source
3  *
4  * Distributable under LGPL license.
5  * See terms of license at gnu.org.
6  */

7 package org.jboss.cache.optimistic;
8
9 import junit.framework.Assert;
10 import org.jboss.cache.CacheImpl;
11 import org.jboss.cache.config.CacheLoaderConfig;
12 import org.jboss.cache.factories.XmlConfigurationParser;
13 import org.jboss.cache.loader.CacheLoader;
14 import org.jboss.cache.transaction.DummyTransactionManager;
15 import org.jboss.cache.xml.XmlHelper;
16 import org.w3c.dom.Element JavaDoc;
17
18 /**
19  * Tests optimistic locking with pasivation
20  *
21  * @author Manik Surtani (<a HREF="mailto:manik@jboss.org">manik@jboss.org</a>)
22  */

23 public class OptimisticWithPassivationTest extends AbstractOptimisticTestCase
24 {
25
26    public OptimisticWithPassivationTest(String JavaDoc s)
27    {
28       super(s);
29    }
30
31    protected CacheLoaderConfig getCacheLoaderConfig(String JavaDoc loc) throws Exception JavaDoc
32    {
33       String JavaDoc xml = " <config>\n" +
34               " \n" +
35               " <passivation>true</passivation>\n" +
36               " <preload></preload>\n" +
37               "\n" +
38               " <cacheloader>\n" +
39               " <class>org.jboss.cache.loader.FileCacheLoader</class>\n" +
40               " <properties>\n" +
41               " </properties>\n" +
42               " <async>false</async>\n" +
43               " <fetchPersistentState>false</fetchPersistentState>\n" +
44               " <ignoreModifications>false</ignoreModifications>\n" +
45               " </cacheloader>\n" +
46               " \n" +
47               " </config>";
48       Element JavaDoc element = XmlHelper.stringToElement(xml);
49       return XmlConfigurationParser.parseCacheLoaderConfig(element);
50    }
51
52    private CacheImpl createLocalCache() throws Exception JavaDoc
53    {
54       CacheImpl cache = createCacheUnstarted(false);
55       cache.getConfiguration().setCacheLoaderConfig(getCacheLoaderConfig(getTempDir()));
56
57       cache.create();
58       cache.start();
59       return cache;
60    }
61
62    public void testPassivationLocal() throws Exception JavaDoc
63    {
64       CacheImpl cache = createLocalCache();
65       CacheLoader loader = cache.getCacheLoader();
66
67       // clean up
68
cache.remove(fqn);
69       loader.remove(fqn);
70
71       Assert.assertNull(loader.get(fqn));
72
73       DummyTransactionManager mgr = DummyTransactionManager.getInstance();
74
75       // put something in the cache
76
mgr.begin();
77       cache.put(fqn, key, value);
78       mgr.commit();
79
80       // should be nothing in the loader
81
Assert.assertEquals(value, cache.get(fqn, key));
82       Assert.assertNull(loader.get(fqn));
83
84       // evict from cache
85
mgr.begin();
86       cache.evict(fqn);
87       mgr.commit();
88
89       mgr.begin();
90       // should now be passivated in the loader
91
// don't do a cache.get() first as this will activate this node from the loader again!
92
// Assert.assertNull( cache.get( fqn ) );
93
Assert.assertEquals(value, loader.get(fqn).get(key));
94
95       // now do a cache.get()...
96
Assert.assertEquals(value, cache.get(fqn, key));
97
98       // and the object should now be removed from the loader
99
Assert.assertNull(loader.get(fqn));
100       mgr.commit();
101
102       // clean up
103
mgr.begin();
104       cache.remove(fqn);
105       loader.remove(fqn);
106       mgr.commit();
107
108    }
109 }
110
Popular Tags