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