1 7 package org.jboss.cache.eviction; 8 9 import junit.framework.TestCase; 10 import org.jboss.cache.Fqn; 11 import org.jboss.cache.RegionManager; 12 import org.jboss.cache.Region; 13 14 20 public class MRUAlgorithmTest extends TestCase 21 { 22 MRUAlgorithm algorithm; 23 RegionManager regionManager; 24 25 public void setUp() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 26 { 27 super.setUp(); 28 algorithm = new MRUAlgorithm(); 29 MRUConfiguration config = new MRUConfiguration(); 30 config.setMaxNodes(0); 32 config.setEvictionPolicyClass(DummyEvictionPolicy.class.getName()); 33 regionManager = new RegionManager(); 34 regionManager.getRegion("/a/b", true).setEvictionPolicy(config); 35 } 36 37 public void tearDown() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 38 { 39 super.tearDown(); 40 } 41 42 public void testMaxNodes() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 43 { 44 Fqn fqn1 = Fqn.fromString("/a/b/c"); 45 Fqn fqn2 = Fqn.fromString("/a/b/d"); 46 Fqn fqn3 = Fqn.fromString("/a/b/e"); 47 Region region = regionManager.getRegion("/a/b", true); 48 MRUConfiguration config = (MRUConfiguration) region.getEvictionPolicyConfig(); 49 config.setMaxNodes(1); 50 region.putNodeEvent(new EvictedEventNode(fqn1, NodeEventType.ADD_NODE_EVENT)); 51 region.putNodeEvent(new EvictedEventNode(fqn2, NodeEventType.ADD_NODE_EVENT)); 52 region.putNodeEvent(new EvictedEventNode(fqn3, NodeEventType.ADD_NODE_EVENT)); 53 algorithm.process(region); 54 55 assertEquals(1, algorithm.getEvictionQueue().getNumberOfNodes()); 56 57 config.setMaxNodes(100); 58 for (int i = 0; i < 150; i++) 59 { 60 Fqn fqn = Fqn.fromString("/a/b/c/" + Integer.toString(i)); 61 region.putNodeEvent(new EvictedEventNode(fqn, NodeEventType.ADD_NODE_EVENT)); 62 } 63 64 algorithm.process(region); 65 66 assertEquals(100, algorithm.getEvictionQueue().getNumberOfNodes()); 67 } 68 69 public void testMRU() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 70 { 71 Fqn fqn1 = Fqn.fromString("/a/b/c"); 72 Fqn fqn2 = Fqn.fromString("/a/b/d"); 73 Fqn fqn3 = Fqn.fromString("/a/b/e"); 74 Fqn fqn4 = Fqn.fromString("/a/b/f"); 75 Fqn fqn5 = Fqn.fromString("/a/b/g"); 76 Fqn fqn6 = Fqn.fromString("/a/b/h"); 77 Fqn fqn7 = Fqn.fromString("/a/b/i"); 78 Fqn fqn8 = Fqn.fromString("/a/b/j"); 79 Fqn fqn9 = Fqn.fromString("/a/b/k"); 80 Fqn fqn10 = Fqn.fromString("/a/b/l"); 81 Region region = regionManager.getRegion("/a/b", true); 82 MRUConfiguration config = (MRUConfiguration) region.getEvictionPolicyConfig(); 83 config.setMaxNodes(8); 84 region.putNodeEvent(new EvictedEventNode(fqn1, NodeEventType.ADD_NODE_EVENT)); 85 region.putNodeEvent(new EvictedEventNode(fqn2, NodeEventType.ADD_NODE_EVENT)); 86 region.putNodeEvent(new EvictedEventNode(fqn3, NodeEventType.ADD_NODE_EVENT)); 87 region.putNodeEvent(new EvictedEventNode(fqn4, NodeEventType.ADD_NODE_EVENT)); 88 region.putNodeEvent(new EvictedEventNode(fqn5, NodeEventType.ADD_NODE_EVENT)); 89 region.putNodeEvent(new EvictedEventNode(fqn6, NodeEventType.ADD_NODE_EVENT)); 90 region.putNodeEvent(new EvictedEventNode(fqn7, NodeEventType.ADD_NODE_EVENT)); 91 region.putNodeEvent(new EvictedEventNode(fqn8, NodeEventType.ADD_NODE_EVENT)); 92 93 algorithm.process(region); 94 95 assertEquals(8, algorithm.getEvictionQueue().getNumberOfNodes()); 96 97 region.putNodeEvent(new EvictedEventNode(fqn9, NodeEventType.ADD_NODE_EVENT)); 98 region.putNodeEvent(new EvictedEventNode(fqn10, NodeEventType.ADD_NODE_EVENT)); 99 100 Thread.sleep(5000); 101 102 region.putNodeEvent(new EvictedEventNode(fqn2, NodeEventType.ADD_NODE_EVENT)); 103 region.putNodeEvent(new EvictedEventNode(fqn4, NodeEventType.ADD_NODE_EVENT)); 104 105 algorithm.process(region); 106 107 assertEquals(8, algorithm.getEvictionQueue().getNumberOfNodes()); 108 109 assertNull(algorithm.getEvictionQueue().getNodeEntry(fqn2)); 110 assertNull(algorithm.getEvictionQueue().getNodeEntry(fqn4)); 111 112 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn1)); 113 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn3)); 114 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn5)); 115 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn6)); 116 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn7)); 117 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn8)); 118 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn9)); 119 assertNotNull(algorithm.getEvictionQueue().getNodeEntry(fqn10)); 120 } 121 122 } 123 | Popular Tags |