Clover coverage report -
Coverage timestamp: Wed Jan 31 2007 15:38:53 EST
file stats: LOC: 231   Methods: 6
NCLOC: 176   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ElementSizeQueueTest.java 83.3% 92.9% 100% 91.3%
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   
 11    import java.util.Iterator;
 12    import java.util.List;
 13    import java.util.Set;
 14   
 15   
 16    /**
 17    * @author Daniel Huang
 18    * @version $Revision: 1.1 $
 19    */
 20    public class ElementSizeQueueTest extends TestCase
 21    {
 22    private ElementSizeQueue queue;
 23   
 24  4 public void setUp() throws Exception
 25    {
 26  4 super.setUp();
 27  4 queue = new ElementSizeQueue();
 28    }
 29   
 30  4 public void tearDown() throws Exception
 31    {
 32  4 super.tearDown();
 33    }
 34   
 35  1 public void testQueue() throws Exception
 36    {
 37  1 NodeEntry ne;
 38  1 for (int i = 0; i < 500; i++)
 39    {
 40  500 ne = new NodeEntry("/a/b/c/" + Integer.toString(i));
 41  500 queue.addNodeEntry(ne);
 42    }
 43   
 44  1 queue.resortEvictionQueue();
 45   
 46  1 assertEquals(500, queue.getNumberOfNodes());
 47  1 assertTrue(queue.containsNodeEntry(new NodeEntry("/a/b/c/250")));
 48   
 49  1 NodeEntry ne275 = queue.getNodeEntry("/a/b/c/275");
 50  1 assertEquals("/a/b/c/275", ne275.getFqn().toString());
 51   
 52    // now make sure the ordering is correct.
 53  1 Iterator it = queue.iterate();
 54  1 int k = 0;
 55  1 while (it.hasNext())
 56    {
 57  500 ne = (NodeEntry) it.next();
 58  500 assertEquals("/a/b/c/" + Integer.toString(k), ne.getFqn().toString());
 59  500 if (k % 2 == 0)
 60    {
 61  250 ne.setNumberOfElements(k);
 62    }
 63  500 k++;
 64    }
 65   
 66  1 queue.resortEvictionQueue();
 67   
 68  1 k = 0;
 69  1 while (it.hasNext())
 70    {
 71  0 ne = (NodeEntry) it.next();
 72  0 System.out.println(ne.toString());
 73  0 if (k < 250)
 74    {
 75  0 assertEquals(k, ne.getNumberOfElements());
 76  0 assertEquals(0, k % 2);
 77    }
 78    else
 79    {
 80  0 assertTrue(k % 2 != 0);
 81  0 assertEquals(0, ne.getNumberOfElements());
 82    }
 83  0 k++;
 84    }
 85    }
 86   
 87  1 public void testPrune() throws Exception
 88    {
 89  1 for (int i = 0; i < 5000; i++)
 90    {
 91  5000 queue.addNodeEntry(new NodeEntry("/a/b/c/" + Integer.toString(i)));
 92    }
 93   
 94  1 NodeEntry ne;
 95  1 Iterator it = queue.iterate();
 96  1 int i = 0;
 97  1 while (it.hasNext())
 98    {
 99  5000 ne = (NodeEntry) it.next();
 100  5000 if (i % 2 == 0)
 101    {
 102  2500 queue.removeNodeEntry(ne);
 103    }
 104  5000 i++;
 105    }
 106   
 107  1 assertEquals(2500, queue.getNumberOfNodes());
 108   
 109  1 Set removalQueue = queue.getRemovalQueue();
 110  1 List evictionList = queue.getEvictionList();
 111   
 112  1 assertEquals(2500, removalQueue.size());
 113   
 114  1 it = removalQueue.iterator();
 115  1 while (it.hasNext())
 116    {
 117  2500 ne = (NodeEntry) it.next();
 118  2500 int currentIndex = Integer.parseInt((String) ne.getFqn().get(3));
 119  2500 assertEquals(0, currentIndex % 2);
 120   
 121  2500 assertFalse(queue.containsNodeEntry(ne));
 122  2500 assertNull(queue.getNodeEntry(ne.getFqn()));
 123  2500 assertTrue(evictionList.contains(ne));
 124    }
 125   
 126  1 assertEquals(5000, evictionList.size());
 127   
 128  1 queue.prune();
 129   
 130  1 assertEquals(0, removalQueue.size());
 131  1 assertEquals(2500, evictionList.size());
 132    }
 133   
 134  1 public void testGetFirstNodeEntry() throws Exception
 135    {
 136  1 for (int i = 0; i < 500; i++)
 137    {
 138  500 NodeEntry ne = new NodeEntry("/a/b/c/" + Integer.toString(i));
 139  500 queue.addNodeEntry(ne);
 140  500 if (i % 2 == 0)
 141    {
 142  250 ne.setNumberOfElements(2);
 143    }
 144    }
 145   
 146  1 queue.resortEvictionQueue();
 147   
 148  1 NodeEntry ne;
 149  1 int count = 0;
 150  ? while ((ne = queue.getFirstNodeEntry()) != null)
 151    {
 152  500 if (count < 250)
 153    {
 154  250 assertEquals(2, ne.getNumberOfElements());
 155    }
 156    else
 157    {
 158  250 assertEquals(0, ne.getNumberOfNodeVisits());
 159    }
 160  500 queue.removeNodeEntry(ne);
 161  500 count++;
 162    }
 163   
 164  1 assertEquals(0, queue.getNumberOfNodes());
 165    }
 166   
 167  1 public void testNumElements() throws Exception
 168    {
 169  1 ElementSizeQueue queue = new ElementSizeQueue();
 170   
 171  1 NodeEntry ne = new NodeEntry("/a/b/c");
 172  1 ne.setNumberOfElements(50);
 173  1 queue.addNodeEntry(ne);
 174   
 175  1 queue.resortEvictionQueue();
 176  1 assertEquals(50, queue.getNumberOfElements());
 177  1 assertEquals(1, queue.getNumberOfNodes());
 178   
 179  1 queue.removeNodeEntry(ne);
 180  1 assertEquals(0, queue.getNumberOfElements());
 181   
 182  1 for (int i = 0; i < 10; i++)
 183    {
 184  10 ne = new NodeEntry("/a/b/c/" + Integer.toString(i));
 185  10 ne.setNumberOfElements(i);
 186  10 queue.addNodeEntry(ne);
 187    }
 188  1 queue.resortEvictionQueue();
 189  1 assertEquals(45, queue.getNumberOfElements());
 190  1 assertEquals(10, queue.getNumberOfNodes());
 191   
 192  1 ne = queue.getNodeEntry("/a/b/c/0");
 193  1 assertNotNull(ne);
 194  1 assertEquals(0, ne.getNumberOfElements());
 195  1 ne.setNumberOfElements(500);
 196   
 197  1 assertEquals(545, queue.getNumberOfElements());
 198  1 ne = queue.getNodeEntry("/a/b/c/0");
 199  1 assertEquals(500, ne.getNumberOfElements());
 200   
 201  1 queue.resortEvictionQueue();
 202   
 203  1 ne = queue.getNodeEntry("/a/b/c/1");
 204  1 assertNotNull(ne);
 205  1 assertEquals(1, ne.getNumberOfElements());
 206   
 207  1 queue.resortEvictionQueue();
 208  1 ne.setNumberOfElements(2);
 209  1 queue.resortEvictionQueue();
 210  1 assertEquals(546, queue.getNumberOfElements());
 211   
 212  1 queue.removeNodeEntry(ne);
 213   
 214  1 assertEquals(544, queue.getNumberOfElements());
 215  1 assertEquals(9, queue.getNumberOfNodes());
 216   
 217  1 queue.removeNodeEntry(queue.getNodeEntry("/a/b/c/0"));
 218   
 219  1 for (int i = 2; i < 10; i++)
 220    {
 221  8 ne = queue.getNodeEntry("/a/b/c/" + Integer.toString(i));
 222  8 assertEquals(i, ne.getNumberOfElements());
 223  8 queue.removeNodeEntry(ne);
 224    }
 225   
 226  1 assertEquals(0, queue.getNumberOfNodes());
 227  1 assertEquals(0, queue.getNumberOfElements());
 228   
 229    }
 230   
 231    }