Clover coverage report -
Coverage timestamp: Wed Jan 31 2007 15:38:53 EST
file stats: LOC: 207   Methods: 9
NCLOC: 169   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
RegionManagerTest.java 100% 96.2% 100% 96.5%
coverage coverage
 1    package org.jboss.cache.eviction;
 2   
 3    import junit.framework.TestCase;
 4    import org.jboss.cache.CacheImpl;
 5    import org.jboss.cache.DefaultCacheFactory;
 6    import org.jboss.cache.Fqn;
 7    import org.jboss.cache.Region;
 8    import org.jboss.cache.RegionManager;
 9    import org.jboss.cache.config.EvictionConfig;
 10    import org.jboss.cache.config.EvictionRegionConfig;
 11    import org.jboss.cache.factories.XmlConfigurationParser;
 12    import org.jboss.cache.xml.XmlHelper;
 13    import org.w3c.dom.Element;
 14   
 15    import java.util.List;
 16   
 17    /**
 18    * Region Manager unit tests.
 19    *
 20    * @author Ben Wang, Feb 11, 2004
 21    * @author Daniel Huang (dhuang@jboss.org)
 22    * @version $Revision: 1.21 $
 23    */
 24    public class RegionManagerTest extends TestCase
 25    {
 26    private final Fqn DEFAULT_REGION = Fqn.ROOT;
 27    Fqn A_B_C = Fqn.fromString("/a/b/c");
 28    Fqn A_B = Fqn.fromString("/a/b");
 29    Fqn A_BC = Fqn.fromString("/a/bc");
 30    Fqn AOP = Fqn.fromString("/aop");
 31   
 32   
 33    EvictionPolicy policy;
 34    EvictionPolicyConfig config;
 35   
 36  6 public RegionManagerTest(String s)
 37    {
 38  6 super(s);
 39    }
 40   
 41  6 public void setUp() throws Exception
 42    {
 43  6 super.setUp();
 44  6 policy = new DummyEvictionPolicy();
 45  6 config = new DummyEvictionConfiguration();
 46    }
 47   
 48  6 public void tearDown() throws Exception
 49    {
 50  6 super.tearDown();
 51    }
 52   
 53  1 public void testCreateRegion()
 54    {
 55  1 RegionManager regionManager = new RegionManager();
 56  1 regionManager.setUsingEvictions(true);
 57  1 regionManager.getRegion(DEFAULT_REGION, true).setEvictionPolicy(config);
 58  1 regionManager.getRegion(A_B_C, true).setEvictionPolicy(config);
 59  1 regionManager.getRegion(A_B, true).setEvictionPolicy(config);
 60  1 regionManager.getRegion(AOP, true).setEvictionPolicy(config);
 61   
 62  1 List<Region> regions = regionManager.getAllRegions(Region.Type.ANY);
 63  1 assertEquals("Region size ", 4, regions.size());
 64    }
 65   
 66  1 public void testCreateRegion2()
 67    {
 68   
 69  1 RegionManager regionManager = new RegionManager();
 70  1 regionManager.setUsingEvictions(true);
 71  1 regionManager.getRegion(A_B_C, true).setEvictionPolicy(config);
 72  1 regionManager.getRegion(A_B, true).setEvictionPolicy(config);
 73  1 regionManager.getRegion(DEFAULT_REGION, true).setEvictionPolicy(config);
 74   
 75  1 List<Region> regions = regionManager.getAllRegions(Region.Type.ANY);
 76  1 assertEquals("Region size ", 3, regions.size());
 77  1 assertEquals("Region 0", DEFAULT_REGION, regions.get(0).getFqn());
 78  1 assertEquals("Region 1 ", A_B, regions.get(1).getFqn());
 79  1 assertEquals("Region 2 ", A_B_C, regions.get(2).getFqn());
 80  1 Region region = regionManager.getRegion("/a/b/c/d", false);
 81  1 assertNotNull("Region ", region);
 82  1 assertEquals("Region ", A_B_C, region.getFqn());
 83  1 region = regionManager.getRegion(A_B, false);
 84  1 assertNotNull("Region ", region);
 85  1 assertEquals("Region ", A_B, region.getFqn());
 86  1 region = regionManager.getRegion("/a", false);
 87    // Should be default.
 88  1 assertNotNull("Region ", region);
 89  1 assertEquals("Region ", DEFAULT_REGION, region.getFqn());
 90    }
 91   
 92  1 public void testNoDefaultRegion()
 93    {
 94  1 RegionManager regionManager = new RegionManager();
 95  1 regionManager.setUsingEvictions(true);
 96  1 regionManager.getRegion(A_B_C, true).setEvictionPolicy(config);
 97  1 regionManager.getRegion(A_B, true).setEvictionPolicy(config);
 98   
 99  1 try
 100    {
 101  1 regionManager.getRegion("/a", false);
 102    }
 103    catch (Exception e)
 104    {
 105    // This is ok. Should throw an runtime exception
 106  1 return;
 107    }
 108  0 fail("If we don't setCache the default region, we should throw a RTE!");
 109    }
 110   
 111  1 public void testGetRegion()
 112    {
 113  1 RegionManager regionManager = new RegionManager();
 114  1 regionManager.setUsingEvictions(true);
 115  1 regionManager.getRegion(DEFAULT_REGION, true).setEvictionPolicy(config);
 116  1 regionManager.getRegion(A_BC, true).setEvictionPolicy(config);
 117  1 regionManager.getRegion(A_B, true).setEvictionPolicy(config);
 118   
 119  1 Region region = regionManager.getRegion(A_BC, true);
 120  1 assertNotSame("Region ", DEFAULT_REGION, region.getFqn());
 121    }
 122   
 123  1 public void testConfigureWithXML() throws Exception
 124    {
 125    // test the new style configuration
 126  1 String xml = "<region name=\"/test/\" policyClass=\"org.jboss.cache.eviction.LFUPolicy\">" +
 127    "<attribute name=\"minNodes\">10</attribute>" +
 128    "<attribute name=\"maxNodes\">20</attribute>" +
 129    "</region>";
 130  1 Element element = XmlHelper.stringToElement(xml);
 131  1 RegionManager regionManager = new RegionManager();
 132  1 regionManager.setUsingEvictions(true);
 133  1 EvictionRegionConfig erc = XmlConfigurationParser.parseEvictionRegionConfig(element, null, EvictionConfig.EVENT_QUEUE_SIZE_DEFAULT);
 134  1 Region region = regionManager.getRegion(erc.getRegionFqn(), true);
 135  1 region.setEvictionPolicy(erc.getEvictionPolicyConfig());
 136   
 137  1 assertTrue(region.getEvictionPolicy() instanceof LFUPolicy);
 138  1 assertTrue(region.getEvictionPolicyConfig() instanceof LFUConfiguration);
 139  1 LFUConfiguration config = (LFUConfiguration) region.getEvictionPolicyConfig();
 140  1 assertEquals(20, config.getMaxNodes());
 141  1 assertEquals(10, config.getMinNodes());
 142  1 assertEquals(Fqn.fromString("/test/"), region.getFqn());
 143   
 144  1 CacheImpl cache = (CacheImpl) DefaultCacheFactory.getInstance().createCache(false);
 145   
 146    // test the 1.2.x style configuration
 147  1 xml = "<region name=\"abc\">" +
 148    "<attribute name=\"minNodes\">10</attribute>" +
 149    "<attribute name=\"maxNodes\">20</attribute>" +
 150    "</region>";
 151  1 element = XmlHelper.stringToElement(xml);
 152  1 erc = XmlConfigurationParser.parseEvictionRegionConfig(element, "org.jboss.cache.eviction.LFUPolicy", EvictionConfig.EVENT_QUEUE_SIZE_DEFAULT);
 153  1 regionManager = new RegionManager();
 154  1 regionManager.setUsingEvictions(true);
 155  1 region = regionManager.getRegion(erc.getRegionFqn(), true);
 156  1 region.setEvictionPolicy(erc.getEvictionPolicyConfig());
 157   
 158  1 assertTrue(region.getEvictionPolicy() instanceof LFUPolicy);
 159  1 assertTrue(region.getEvictionPolicyConfig() instanceof LFUConfiguration);
 160  1 config = (LFUConfiguration) region.getEvictionPolicyConfig();
 161  1 assertEquals(20, config.getMaxNodes());
 162  1 assertEquals(10, config.getMinNodes());
 163  1 assertEquals(Fqn.fromString("/abc/"), region.getFqn());
 164    }
 165   
 166  1 public void testRegionOrdering() throws Exception
 167    {
 168  1 Fqn A_B_C_D_E = Fqn.fromString("/a/b/c/d/e/");
 169  1 Fqn A_B_C_D = Fqn.fromString("/a/b/c/d/");
 170   
 171  1 RegionManager rm = new RegionManager();
 172  1 rm.setUsingEvictions(true);
 173  1 rm.getRegion(DEFAULT_REGION, true).setEvictionPolicy(config);
 174  1 rm.getRegion(A_B_C_D_E, true).setEvictionPolicy(config);
 175  1 rm.getRegion(A_B_C_D, true).setEvictionPolicy(config);
 176  1 rm.getRegion(A_B_C, true).setEvictionPolicy(config);
 177   
 178  1 Region region = rm.getRegion("/a/b/c/d/e/f", false);
 179  1 Region region2 = rm.getRegion("/e/f/g", false);
 180   
 181  1 assertEquals(A_B_C_D_E, region.getFqn());
 182  1 assertEquals(DEFAULT_REGION, region2.getFqn());
 183   
 184  1 List<Region> regions = rm.getAllRegions(Region.Type.ANY);
 185  1 for (int i = 0; i < regions.size(); i++)
 186    {
 187  4 switch (i)
 188    {
 189  1 case 0:
 190  1 assertEquals(DEFAULT_REGION, regions.get(i).getFqn());
 191  1 break;
 192  1 case 1:
 193  1 assertEquals(A_B_C, regions.get(i).getFqn());
 194  1 break;
 195  1 case 2:
 196  1 assertEquals(A_B_C_D, regions.get(i).getFqn());
 197  1 break;
 198  1 case 3:
 199  1 assertEquals(A_B_C_D_E, regions.get(i).getFqn());
 200  1 break;
 201  0 default:
 202  0 fail("This error condition should never be reached");
 203  0 break;
 204    }
 205    }
 206    }
 207    }