Clover coverage report -
Coverage timestamp: Wed Jan 31 2007 15:38:53 EST
file stats: LOC: 122   Methods: 4
NCLOC: 89   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
MRUAlgorithmTest.java 100% 87.7% 100% 88.7%
coverage coverage
 1    /*
 2    * JBoss, the OpenSource J2EE webOS
 3    *
 4    * Distributable under LGPL license.
 5    * See terms of license at gnu.org.
 6    */
 7    package org.jboss.cache.eviction;
 8   
 9    import junit.framework.TestCase;
 10    import org.jboss.cache.Fqn;
 11    import org.jboss.cache.Region;
 12    import org.jboss.cache.RegionManager;
 13   
 14    /**
 15    * Unit tests for MRUAlgorithm.
 16    *
 17    * @author Daniel Huang (dhuang@jboss.org)
 18    * @version $Revision: 1.5 $
 19    */
 20    public class MRUAlgorithmTest extends TestCase
 21    {
 22    MRUAlgorithm algorithm;
 23    RegionManager regionManager;
 24   
 25  2 public void setUp() throws Exception
 26    {
 27  2 super.setUp();
 28  2 algorithm = new MRUAlgorithm();
 29  2 MRUConfiguration config = new MRUConfiguration();
 30    // We have to setCache maxNodes!!
 31  2 config.setMaxNodes(0);
 32  2 config.setEvictionPolicyClass(DummyEvictionPolicy.class.getName());
 33  2 regionManager = new RegionManager();
 34  2 regionManager.getRegion("/a/b", true).setEvictionPolicy(config);
 35    }
 36   
 37  2 public void tearDown() throws Exception
 38    {
 39  2 super.tearDown();
 40    }
 41   
 42  1 public void testMaxNodes() throws Exception
 43    {
 44  1 Fqn fqn1 = Fqn.fromString("/a/b/c");
 45  1 Fqn fqn2 = Fqn.fromString("/a/b/d");
 46  1 Fqn fqn3 = Fqn.fromString("/a/b/e");
 47  1 Region region = regionManager.getRegion("/a/b", true);
 48  1 MRUConfiguration config = (MRUConfiguration) region.getEvictionPolicyConfig();
 49  1 config.setMaxNodes(1);
 50  1 region.putNodeEvent(new EvictedEventNode(fqn1, NodeEventType.ADD_NODE_EVENT));
 51  1 region.putNodeEvent(new EvictedEventNode(fqn2, NodeEventType.ADD_NODE_EVENT));
 52  1 region.putNodeEvent(new EvictedEventNode(fqn3, NodeEventType.ADD_NODE_EVENT));
 53  1 algorithm.process(region);
 54   
 55  1 assertEquals(1, algorithm.getEvictionQueue().getNumberOfNodes());
 56   
 57  1 config.setMaxNodes(100);
 58  1 for (int i = 0; i < 150; i++)
 59    {
 60  150 Fqn fqn = Fqn.fromString("/a/b/c/" + Integer.toString(i));
 61  150 region.putNodeEvent(new EvictedEventNode(fqn, NodeEventType.ADD_NODE_EVENT));
 62    }
 63   
 64  1 algorithm.process(region);
 65   
 66  1 assertEquals(100, algorithm.getEvictionQueue().getNumberOfNodes());
 67    }
 68   
 69  1 public void testMRU() throws Exception
 70    {
 71  1 Fqn fqn1 = Fqn.fromString("/a/b/c");
 72  1 Fqn fqn2 = Fqn.fromString("/a/b/d");
 73  1 Fqn fqn3 = Fqn.fromString("/a/b/e");
 74  1 Fqn fqn4 = Fqn.fromString("/a/b/f");
 75  1 Fqn fqn5 = Fqn.fromString("/a/b/g");
 76  1 Fqn fqn6 = Fqn.fromString("/a/b/h");
 77  1 Fqn fqn7 = Fqn.fromString("/a/b/i");
 78  1 Fqn fqn8 = Fqn.fromString("/a/b/j");
 79  1 Fqn fqn9 = Fqn.fromString("/a/b/k");
 80  1 Fqn fqn10 = Fqn.fromString("/a/b/l");
 81  1 Region region = regionManager.getRegion("/a/b", true);
 82  1 MRUConfiguration config = (MRUConfiguration) region.getEvictionPolicyConfig();
 83  1 config.setMaxNodes(8);
 84  1 region.putNodeEvent(new EvictedEventNode(fqn1, NodeEventType.ADD_NODE_EVENT));
 85  1 region.putNodeEvent(new EvictedEventNode(fqn2, NodeEventType.ADD_NODE_EVENT));
 86  1 region.putNodeEvent(new EvictedEventNode(fqn3, NodeEventType.ADD_NODE_EVENT));
 87  1 region.putNodeEvent(new EvictedEventNode(fqn4, NodeEventType.ADD_NODE_EVENT));
 88  1 region.putNodeEvent(new EvictedEventNode(fqn5, NodeEventType.ADD_NODE_EVENT));
 89  1 region.putNodeEvent(new EvictedEventNode(fqn6, NodeEventType.ADD_NODE_EVENT));
 90  1 region.putNodeEvent(new EvictedEventNode(fqn7, NodeEventType.ADD_NODE_EVENT));
 91  1 region.putNodeEvent(new EvictedEventNode(fqn8, NodeEventType.ADD_NODE_EVENT));
 92   
 93  1 algorithm.process(region);
 94   
 95  1 assertEquals(8, algorithm.getEvictionQueue().getNumberOfNodes());
 96   
 97  1 region.putNodeEvent(new EvictedEventNode(fqn9, NodeEventType.ADD_NODE_EVENT));
 98  1 region.putNodeEvent(new EvictedEventNode(fqn10, NodeEventType.ADD_NODE_EVENT));
 99   
 100  1 Thread.sleep(5000);
 101   
 102  1 region.putNodeEvent(new EvictedEventNode(fqn2, NodeEventType.ADD_NODE_EVENT));
 103  1 region.putNodeEvent(new EvictedEventNode(fqn4, NodeEventType.ADD_NODE_EVENT));
 104   
 105  1 algorithm.process(region);
 106   
 107  1 assertEquals(8, algorithm.getEvictionQueue().getNumberOfNodes());
 108   
 109  1 assertNull(algorithm.getEvictionQueue().getNodeEntry(fqn2));
 110  1 assertNull(algorithm.getEvictionQueue().getNodeEntry(fqn4));
 111   
 112  0 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn1));
 113  0 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn3));
 114  0 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn5));
 115  0 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn6));
 116  0 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn7));
 117  0 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn8));
 118  0 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn9));
 119  0 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn10));
 120    }
 121   
 122    }