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