Clover coverage report -
Coverage timestamp: Wed Jan 31 2007 15:38:53 EST
file stats: LOC: 197   Methods: 6
NCLOC: 143   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
FIFOQueueTest.java 66.7% 100% 100% 93.4%
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 org.jboss.cache.config.EvictionConfig;
 10    import org.jboss.cache.config.EvictionRegionConfig;
 11   
 12    import junit.framework.TestCase;
 13   
 14    /**
 15    * Unit tests for FIFOQueue.
 16    *
 17    * @author Daniel Huang (dhuang@jboss.org)
 18    * @version $Revision: 1.4 $
 19    */
 20    public class FIFOQueueTest extends TestCase
 21    {
 22    private static final int CAPACITY = EvictionConfig.EVENT_QUEUE_SIZE_DEFAULT;
 23   
 24    private FIFOQueue queue;
 25   
 26  4 public void setUp() throws Exception
 27    {
 28  4 super.setUp();
 29  4 queue = new FIFOQueue();
 30    }
 31   
 32  4 public void tearDown() throws Exception
 33    {
 34  4 super.tearDown();
 35    }
 36   
 37  1 public void testQueue() throws Exception
 38    {
 39  1 for (int i = 0; i < 50000; i++)
 40    {
 41  50000 NodeEntry ne = new NodeEntry("/a/b/c/" + Integer.toString(i));
 42  50000 queue.addNodeEntry(ne);
 43    }
 44   
 45  1 assertEquals(queue.getFirstNodeEntry().getFqn().toString(), "/a/b/c/0");
 46   
 47  1 assertEquals(50000, queue.getNumberOfNodes());
 48  1 assertTrue(queue.containsNodeEntry(new NodeEntry("/a/b/c/250")));
 49   
 50  1 NodeEntry ne27500 = queue.getNodeEntry("/a/b/c/27500");
 51  1 assertEquals("/a/b/c/27500", ne27500.getFqn().toString());
 52   
 53    // now make sure the ordering is correct.
 54  1 int k = 0;
 55  1 NodeEntry ne;
 56  ? while ((ne = queue.getFirstNodeEntry()) != null)
 57    {
 58  25000 assertEquals("/a/b/c/" + Integer.toString(k), ne.getFqn().toString());
 59  25000 queue.removeNodeEntry(ne);
 60  25000 k++;
 61  25000 if (k == 25000)
 62    {
 63  1 break;
 64    }
 65    }
 66   
 67  1 assertEquals(queue.getFirstNodeEntry().getFqn().toString(), "/a/b/c/25000");
 68   
 69  1 assertEquals(25000, queue.getNumberOfNodes());
 70  1 k = 25000;
 71  ? while ((ne = queue.getFirstNodeEntry()) != null)
 72    {
 73  25000 assertEquals(ne.getFqn().toString(), "/a/b/c/" + Integer.toString(k));
 74  25000 queue.removeNodeEntry(ne);
 75  25000 k++;
 76    }
 77   
 78  1 assertEquals(0, queue.getNumberOfNodes());
 79   
 80  1 assertFalse(queue.containsNodeEntry(new NodeEntry("/a/b/c/27500")));
 81   
 82  1 assertNull(queue.getNodeEntry("/a/b/c/27500"));
 83    }
 84   
 85  1 public void testGetFirstNodeEntry() throws Exception
 86    {
 87  1 for (int i = 0; i < 50000; i++)
 88    {
 89  50000 NodeEntry ne = new NodeEntry("/a/b/c/" + Integer.toString(i));
 90  50000 queue.addNodeEntry(ne);
 91    }
 92   
 93  1 NodeEntry ne;
 94  1 int count = 0;
 95  ? while ((ne = queue.getFirstNodeEntry()) != null)
 96    {
 97  50000 assertEquals("/a/b/c/" + Integer.toString(count), ne.getFqn().toString());
 98  50000 queue.removeNodeEntry(ne);
 99  50000 count++;
 100    }
 101    }
 102   
 103  1 public void testLargeAddAndRemoval() throws Exception
 104    {
 105  1 long begin = System.currentTimeMillis();
 106  1 for (int i = 0; i < CAPACITY; i++)
 107    {
 108  200000 queue.addNodeEntry(new NodeEntry("/test/" + Integer.toString(i)));
 109    }
 110  1 System.out.println("Took " + (System.currentTimeMillis() - begin) + "ms to add " + CAPACITY + " entries to queue");
 111   
 112  1 assertEquals(CAPACITY, queue.getNumberOfNodes());
 113   
 114  1 begin = System.currentTimeMillis();
 115  1 for (int i = CAPACITY - 1; i >= 0; i--)
 116    {
 117    // pop it backwards for worse case scenario if O(n) = n
 118  200000 queue.removeNodeEntry(new NodeEntry("/test/" + Integer.toString(i)));
 119    }
 120   
 121  1 System.out.println("Took " + (System.currentTimeMillis() - begin) + "ms to remove " + CAPACITY + " entries to queue");
 122   
 123  1 assertEquals(0, queue.getNumberOfNodes());
 124   
 125  1 begin = System.currentTimeMillis();
 126  1 for (int i = 0; i < CAPACITY; i++)
 127    {
 128  200000 queue.addNodeEntry(new NodeEntry("/test/" + Integer.toString(i)));
 129    }
 130  1 System.out.println("Took " + (System.currentTimeMillis() - begin) + "ms to readd " + CAPACITY + " entries to queue");
 131   
 132  1 assertEquals(CAPACITY, queue.getNumberOfNodes());
 133  1 NodeEntry ne;
 134  1 begin = System.currentTimeMillis();
 135   
 136  ? while ((ne = queue.getFirstNodeEntry()) != null)
 137    {
 138  200000 queue.removeNodeEntry(ne);
 139    }
 140   
 141  1 System.out.println("Took " + (System.currentTimeMillis() - begin) + "ms to iterate via getFirstNodeEntry() and remove (pop from top of queue) " +
 142    CAPACITY + " entries from queue");
 143   
 144  1 assertEquals(0, queue.getNumberOfNodes());
 145    }
 146   
 147  1 public void testNumElements() throws Exception
 148    {
 149  1 FIFOQueue queue = new FIFOQueue();
 150   
 151  1 NodeEntry ne = new NodeEntry("/a/b/c");
 152  1 ne.setNumberOfElements(50);
 153  1 queue.addNodeEntry(ne);
 154   
 155  1 assertEquals(50, queue.getNumberOfElements());
 156  1 assertEquals(1, queue.getNumberOfNodes());
 157   
 158  1 queue.removeNodeEntry(ne);
 159  1 assertEquals(0, queue.getNumberOfElements());
 160   
 161  1 for (int i = 0; i < 10; i++)
 162    {
 163  10 ne = new NodeEntry("/a/b/c/" + Integer.toString(i));
 164  10 ne.setNumberOfElements(i);
 165  10 queue.addNodeEntry(ne);
 166    }
 167   
 168  1 assertEquals(45, queue.getNumberOfElements());
 169  1 assertEquals(10, queue.getNumberOfNodes());
 170   
 171  1 ne = queue.getNodeEntry("/a/b/c/0");
 172  1 assertNotNull(ne);
 173  1 assertEquals(0, ne.getNumberOfElements());
 174  1 ne.setNumberOfElements(500);
 175   
 176  1 assertEquals(545, queue.getNumberOfElements());
 177  1 ne = queue.getNodeEntry("/a/b/c/0");
 178  1 assertEquals(500, ne.getNumberOfElements());
 179   
 180  1 queue.removeNodeEntry(ne);
 181   
 182  1 assertEquals(45, queue.getNumberOfElements());
 183  1 assertEquals(9, queue.getNumberOfNodes());
 184  1 for (int i = 1; i < 10; i++)
 185    {
 186  9 ne = queue.getNodeEntry("/a/b/c/" + Integer.toString(i));
 187  9 assertEquals(i, ne.getNumberOfElements());
 188  9 queue.removeNodeEntry(ne);
 189    }
 190   
 191  1 assertEquals(0, queue.getNumberOfNodes());
 192  1 assertEquals(0, queue.getNumberOfElements());
 193   
 194  1 assertNull(queue.getNodeEntry("/a/b/c/0"));
 195  1 assertNull(queue.getFirstNodeEntry());
 196    }
 197    }