From jbosscache-commits at lists.jboss.org Wed Aug 20 08:04:28 2008 Content-Type: multipart/mixed; boundary="===============8555352053307553020==" MIME-Version: 1.0 From: jbosscache-commits at lists.jboss.org To: jbosscache-commits at lists.jboss.org Subject: [jbosscache-commits] JBoss Cache SVN: r6583 - in core/trunk/src: main/java/org/jboss/cache/config and 7 other directories. Date: Wed, 20 Aug 2008 08:04:27 -0400 Message-ID: --===============8555352053307553020== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Author: mircea.markus Date: 2008-08-20 08:04:27 -0400 (Wed, 20 Aug 2008) New Revision: 6583 Added: core/trunk/src/test/java/org/jboss/cache/config/parsing/Eviction2xto3xCo= mpatibilityTest.java Modified: core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java core/trunk/src/main/java/org/jboss/cache/config/EvictionConfig.java core/trunk/src/main/java/org/jboss/cache/config/parsing/XmlConfiguration= Parser2x.java core/trunk/src/main/java/org/jboss/cache/config/parsing/element/Eviction= ElementParser.java core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterce= ptor.java core/trunk/src/main/resources/config2to3.xslt core/trunk/src/test/java/org/jboss/cache/config/ConfigurationTransformer= Test.java core/trunk/src/test/resources/configs/conf2x/eviction-enabled-cache.xml Log: updated 2.x eviction parsing and .xslt to accomodate recent API changes Modified: core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java 2008-08-19= 11:26:03 UTC (rev 6582) +++ core/trunk/src/main/java/org/jboss/cache/RPCManagerImpl.java 2008-08-20= 12:04:27 UTC (rev 6583) @@ -34,6 +34,7 @@ import org.jboss.cache.util.reflect.ReflectionUtil; import org.jboss.cache.jmx.annotations.ManagedOperation; import org.jboss.cache.jmx.annotations.ManagedAttribute; +import org.jboss.cache.jmx.annotations.MBean; import org.jgroups.Address; import org.jgroups.Channel; import org.jgroups.ChannelException; @@ -64,6 +65,7 @@ * * @author Manik Surtani (manik(a)jbo= ss.org) */ +(a)MBean (objectName =3D "RPCManager") = public class RPCManagerImpl implements RPCManager { private Channel channel; Modified: core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java 2008-08= -19 11:26:03 UTC (rev 6582) +++ core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java 2008-08= -20 12:04:27 UTC (rev 6583) @@ -714,16 +714,6 @@ if (evictionConfig.getDefaultEvictionRegionConfig().getEvictionAlgor= ithmConfig() !=3D null && !ercs.contains(evictionConfig.getDefaultEvictionRegionConfig()= )) // then the default is a real region too; not just a template for others ercs.add(0, evictionConfig.getDefaultEvictionRegionConfig()); -// if (needDefault) -// { -// // This may throw ConfigurationException if there is no default -// // eviction policy class -// EvictionRegionConfig dflt =3D evictionConfig.createDefaultEvict= ionRegionConfig(); -// ercs.add(0, dflt); // put it first -// // Need to pass this back into the evictionConfig so it knows -// // about the new region -// evictionConfig.setEvictionRegionConfigs(ercs); -// } = // create regions for the regions defined in the evictionConfig. // scan to be sure the _default_ region isn't added twice Modified: core/trunk/src/main/java/org/jboss/cache/config/EvictionConfig.ja= va =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/main/java/org/jboss/cache/config/EvictionConfig.java 200= 8-08-19 11:26:03 UTC (rev 6582) +++ core/trunk/src/main/java/org/jboss/cache/config/EvictionConfig.java 200= 8-08-20 12:04:27 UTC (rev 6583) @@ -239,6 +239,7 @@ = if (defaultEventQueueSize !=3D that.defaultEventQueueSize) return fa= lse; if (wakeupInterval !=3D that.wakeupInterval) return false; + if (defaultEvictionRegionConfig !=3D null ? !defaultEvictionRegionCo= nfig.equals(that.defaultEvictionRegionConfig) : that.defaultEvictionRegionC= onfig !=3D null) return false; if (evictionRegionConfigs !=3D null ? !evictionRegionConfigs.equals(= that.evictionRegionConfigs) : that.evictionRegionConfigs !=3D null) return false; = Modified: core/trunk/src/main/java/org/jboss/cache/config/parsing/XmlConfig= urationParser2x.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/main/java/org/jboss/cache/config/parsing/XmlConfiguratio= nParser2x.java 2008-08-19 11:26:03 UTC (rev 6582) +++ core/trunk/src/main/java/org/jboss/cache/config/parsing/XmlConfiguratio= nParser2x.java 2008-08-20 12:04:27 UTC (rev 6583) @@ -9,19 +9,14 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jboss.cache.buddyreplication.NextMemberBuddyLocator; -import org.jboss.cache.config.BuddyReplicationConfig; import org.jboss.cache.config.BuddyReplicationConfig.BuddyLocatorConfig; -import org.jboss.cache.config.CacheLoaderConfig; import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfi= g.SingletonStoreConfig; -import org.jboss.cache.config.Configuration; -import org.jboss.cache.config.ConfigurationException; -import org.jboss.cache.config.EvictionConfig; -import org.jboss.cache.config.EvictionPolicyConfig; -import org.jboss.cache.config.EvictionRegionConfig; -import org.jboss.cache.config.MissingPolicyException; -import org.jboss.cache.eviction.EvictionPolicy; +import org.jboss.cache.config.*; +import org.jboss.cache.config.parsing.element.EvictionElementParser; +import org.jboss.cache.eviction.EvictionAlgorithm; import org.jboss.cache.util.FileLookup; import org.jboss.cache.util.Util; +import org.jboss.cache.RegionManagerImpl; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; @@ -29,11 +24,8 @@ import org.w3c.dom.NodeList; = import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; import java.util.Map.Entry; -import java.util.Properties; +import java.util.*; = /** * Reads in XMLconfiguration files and spits out a {@link org.jboss.cache.= config.Configuration} object. When deployed as a @@ -246,6 +238,7 @@ } catch (Exception e) { + if (log.isTraceEnabled()) log.trace(e.getMessage()); } finally { @@ -337,20 +330,22 @@ return null; } = - - private static EvictionConfig parseEvictionConfig(Element element) + @SuppressWarnings("unchecked") + static EvictionConfig parseEvictionConfig(Element element) { - EvictionConfig ec =3D new EvictionConfig(); + EvictionConfig evictionConfig =3D new EvictionConfig(); = if (element !=3D null) { // If they set the default eviction policy in the element, use th= at // in preference to the external attribute - String temp =3D XmlConfigHelper.getTagContents(element, - "policyClass", ATTR, NAME); + String temp =3D XmlConfigHelper.getTagContents(element, "policyCl= ass", ATTR, NAME); + String defaultEvPolicyClassName =3D null; if (temp !=3D null && temp.length() > 0) { - ec.setDefaultEvictionPolicyClass(temp); + defaultEvPolicyClassName =3D temp; + EvictionAlgorithmConfig eac =3D getEvictionAlgorithmConfig(tem= p); + evictionConfig.getDefaultEvictionRegionConfig().setEvictionAlg= orithmConfig(eac); } = temp =3D XmlConfigHelper.getTagContents(element, "wakeUpIntervalS= econds", ATTR, NAME); @@ -366,11 +361,10 @@ wakeupIntervalSeconds =3D EvictionConfig.WAKEUP_DEFAULT; } = - ec.setWakeupInterval(wakeupIntervalSeconds * 1000); + evictionConfig.setWakeupInterval(wakeupIntervalSeconds * 1000); = int eventQueueSize =3D 0; - temp =3D XmlConfigHelper.getTagContents(element, - "eventQueueSize", ATTR, NAME); + temp =3D XmlConfigHelper.getTagContents(element, "eventQueueSize"= , ATTR, NAME); = if (temp !=3D null) { @@ -382,7 +376,7 @@ eventQueueSize =3D EvictionConfig.EVENT_QUEUE_SIZE_DEFAULT; } = - ec.getDefaultEvictionRegionConfig().setEventQueueSize(eventQueueS= ize); + evictionConfig.getDefaultEvictionRegionConfig().setEventQueueSize= (eventQueueSize); = NodeList list =3D element.getElementsByTagName(EvictionRegionConf= ig.REGION); if (list !=3D null && list.getLength() > 0) @@ -397,7 +391,16 @@ } try { - regionConfigs.add(parseEvictionRegionConfig((Element) no= de, ec.getDefaultEvictionPolicyClass(), eventQueueSize)); + EvictionRegionConfig evictionRegionConfig =3D parseEvict= ionRegionConfig((Element) node, defaultEvPolicyClassName, eventQueueSize); + if (!evictionRegionConfig.getRegionFqn().equals(RegionMa= nagerImpl.DEFAULT_REGION)) + { + regionConfigs.add(evictionRegionConfig); + } + else + { + evictionConfig.getDefaultEvictionRegionConfig().setEv= entQueueSize(evictionRegionConfig.getEventQueueSize()); + evictionConfig.getDefaultEvictionRegionConfig().setEv= ictionAlgorithmConfig(evictionRegionConfig.getEvictionAlgorithmConfig()); + } } catch (MissingPolicyException missingPolicy) { @@ -406,17 +409,15 @@ } } = - ec.setEvictionRegionConfigs(regionConfigs); + evictionConfig.setEvictionRegionConfigs(regionConfigs); } } = - return ec; + return evictionConfig; = } = - private static EvictionRegionConfig parseEvictionRegionConfig(Element e= lement, - String de= faultEvictionClass, - int defau= ltQueueCapacity) + private static EvictionRegionConfig parseEvictionRegionConfig(Element e= lement, String defaultEvPolicyClassName, int defaultQueueCapacity) { EvictionRegionConfig erc =3D new EvictionRegionConfig(); = @@ -435,7 +436,7 @@ = if (evictionClass =3D=3D null || evictionClass.length() =3D=3D 0) { - evictionClass =3D defaultEvictionClass; + evictionClass =3D defaultEvPolicyClassName; // if it's still null... what do we setCache? if (evictionClass =3D=3D null || evictionClass.length() =3D=3D 0) { @@ -444,10 +445,27 @@ } } = - EvictionPolicy policy; + EvictionAlgorithmConfig algorithmConfig =3D getEvictionAlgorithmConf= ig(evictionClass); + + parseEvictionPolicyConfig(element, algorithmConfig); + + erc.setEvictionAlgorithmConfig(algorithmConfig); + return erc; + } + + private static EvictionAlgorithmConfig getEvictionAlgorithmConfig(Strin= g evictionClass) + { + if (evictionClass.indexOf("org.jboss.cache.eviction") < 0) + { + throw new ConfigurationException("Unsupported custom eviction pol= icy: " + evictionClass + + ". Starting with 3.x the eviction API has changed, the code= needs to be manually migrated."); + } + String evictionAlgorithmClass =3D evictionClass.substring(0,eviction= Class.length() - "Policy".length()) + "Algorithm"; + + EvictionAlgorithm algorithm; try { - policy =3D (EvictionPolicy) Util.loadClass(evictionClass).newInst= ance(); + algorithm =3D (EvictionAlgorithm) Util.loadClass(evictionAlgorith= mClass).newInstance(); } catch (RuntimeException e) { @@ -458,10 +476,10 @@ throw new RuntimeException("Eviction class is not properly loaded= in classloader", e); } = - EvictionPolicyConfig epc; + EvictionAlgorithmConfig algorithmConfig; try { - epc =3D policy.getEvictionConfigurationClass().newInstance(); + algorithmConfig =3D algorithm.getConfigurationClass().newInstance= (); } catch (RuntimeException e) { @@ -470,16 +488,35 @@ catch (Exception e) { throw new RuntimeException("Failed to instantiate eviction config= uration of class " + - policy.getEvictionConfigurationClass(), e); + algorithm.getConfigurationClass(), e); } + return algorithmConfig; + } = - // TODO FIX this!!! -// EvictionElementParser.parseEvictionPolicyConfig(element, epc); - - erc.setEvictionPolicyConfig(epc); - return erc; + @SuppressWarnings("unchecked") + private static void parseEvictionPolicyConfig(Element element, Eviction= AlgorithmConfig target) + { + target.reset(); + ParsedAttributes attributes =3D XmlConfigHelper.extractAttributes(el= ement); + Map updatedElements =3D new HashMap(); + for (Map.Entry entry : attributes.stringAttribs.entrySet()) + { + String key =3D (String) entry.getKey(); + String value =3D (String) entry.getValue(); + if (key.indexOf("Seconds") > 0) + { + key =3D key.substring(0, key.length() - "Seconds".length()); + value =3D value.trim() + "000"; + } + updatedElements.put(key, value); + } + attributes.stringAttribs.clear(); + attributes.stringAttribs.putAll(updatedElements); + XmlConfigHelper.setValues(target, attributes.stringAttribs, false, t= rue); + XmlConfigHelper.setValues(target, attributes.xmlAttribs, true, true); } = + /** * Parses the cluster config which is used to start a JGroups channel * @@ -531,5 +568,4 @@ buffer.setLength(buffer.length() - 1); return buffer.toString(); } - } Modified: core/trunk/src/main/java/org/jboss/cache/config/parsing/element/E= victionElementParser.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/main/java/org/jboss/cache/config/parsing/element/Evictio= nElementParser.java 2008-08-19 11:26:03 UTC (rev 6582) +++ core/trunk/src/main/java/org/jboss/cache/config/parsing/element/Evictio= nElementParser.java 2008-08-20 12:04:27 UTC (rev 6583) @@ -80,7 +80,7 @@ } = String algorithmClassName =3D getAttributeValue(element, "algorithmC= lass"); - EvictionAlgorithmConfig eac =3D null; // every eviction region confi= g needs an algorithm config. + EvictionAlgorithmConfig algorithmConfig =3D null; // every eviction = region config needs an algorithm config. = if (existsAttribute(algorithmClassName)) { @@ -109,7 +109,7 @@ = try { - eac =3D Util.getInstance(algorithm.getConfigurationClass()); + algorithmConfig =3D Util.getInstance(algorithm.getConfiguratio= nClass()); } catch (Exception e) { @@ -129,7 +129,7 @@ { try { - eac =3D defaultRegion.getEvictionAlgorithmConfig().clone= (); + algorithmConfig =3D defaultRegion.getEvictionAlgorithmCo= nfig().clone(); } catch (CloneNotSupportedException e) { @@ -139,11 +139,11 @@ } } = - if (eac !=3D null) + if (algorithmConfig !=3D null) { - parseEvictionPolicyConfig(element, eac); + parseEvictionPolicyConfig(element, algorithmConfig); = - erc.setEvictionAlgorithmConfig(eac); + erc.setEvictionAlgorithmConfig(algorithmConfig); } = String actionPolicyClass =3D getAttributeValue(element, "actionPolic= yClass"); Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoader= Interceptor.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterc= eptor.java 2008-08-19 11:26:03 UTC (rev 6582) +++ core/trunk/src/main/java/org/jboss/cache/interceptors/CacheLoaderInterc= eptor.java 2008-08-20 12:04:27 UTC (rev 6583) @@ -7,7 +7,6 @@ import org.jboss.cache.NodeSPI; import org.jboss.cache.jmx.annotations.ManagedAttribute; import org.jboss.cache.jmx.annotations.ManagedOperation; -import org.jboss.cache.jmx.annotations.MBean; import org.jboss.cache.commands.read.GetChildrenNamesCommand; import org.jboss.cache.commands.read.GetDataMapCommand; import org.jboss.cache.commands.read.GetKeyValueCommand; @@ -26,7 +25,6 @@ import org.jboss.cache.config.Configuration.NodeLockingScheme; import org.jboss.cache.factories.annotations.Inject; import org.jboss.cache.factories.annotations.Start; -import org.jboss.cache.interceptors.base.CommandInterceptor; import org.jboss.cache.interceptors.base.JmxStatsCommandInterceptor; import org.jboss.cache.invocation.InvocationContext; import org.jboss.cache.loader.CacheLoader; Modified: core/trunk/src/main/resources/config2to3.xslt =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/main/resources/config2to3.xslt 2008-08-19 11:26:03 UTC (= rev 6582) +++ core/trunk/src/main/resources/config2to3.xslt 2008-08-20 12:04:27 UTC (= rev 6583) @@ -275,14 +275,27 @@ + + + + A custom eviction p= olicy is used for '/_default_' region. Starting with JBossCache 3.x the evi= ction API changed, so this config file will require manual transformation.<= /xsl:message> + + + + + + + + + + + + + - - - - - Custom eviction policies = require manual transformation. @@ -344,14 +357,16 @@ - - + + + - - + + + Modified: core/trunk/src/test/java/org/jboss/cache/config/ConfigurationTran= sformerTest.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/test/java/org/jboss/cache/config/ConfigurationTransforme= rTest.java 2008-08-19 11:26:03 UTC (rev 6582) +++ core/trunk/src/test/java/org/jboss/cache/config/ConfigurationTransforme= rTest.java 2008-08-20 12:04:27 UTC (rev 6583) @@ -34,7 +34,7 @@ */ public void testSingleFile() throws Exception { - String fileName =3D getFileName("/default-test-config2x.xml"); + String fileName =3D getFileName("/policyPerRegion-eviction.xml"); ByteArrayOutputStream baos =3D new ByteArrayOutputStream(); convertor.parse(fileName, baos, XSLT_FILE); System.out.println("result =3D \n" + baos); @@ -51,12 +51,42 @@ public void testEqualityOnTransformedFiles() throws Exception { String[] fileNames =3D { -// "buddy-replication-cache.xml", -// "cacheloader-enabled-cache.xml", + "buddy-replication-cache.xml", + "local-cache.xml", + "multiplexer-enabled-cache.xml", + "total-replication-cache.xml", + }; + for (String file : fileNames) + { + System.out.println("Processing file =3D " + file); + String fileName =3D getFileName(file); + ByteArrayOutputStream baos =3D new ByteArrayOutputStream(); + convertor.parse(fileName, baos, XSLT_FILE); +// System.out.println("result =3D \n" + baos); + + XmlConfigurationParser newParser =3D new XmlConfigurationParser(); + XmlConfigurationParser2x oldParser =3D new XmlConfigurationParser= 2x(); + + Configuration newConfig =3D newParser.parseStream(new ByteArrayIn= putStream(baos.toByteArray())); + Configuration oldConfig =3D oldParser.parseFile(fileName); + + assert newConfig.equals(oldConfig); + } + } + + /** + * Not like the rest of elements, eviction was also changed in 3.x. + * As the parser produces different results, we semantically check here= that eviction is transformed corectly. + */ + public void testEqualityOnEvictionTransformedFiles() throws Exception + { + String[] fileNames =3D { + "cacheloader-enabled-cache.xml", + "clonable-config.xml", + "default-test-config2x.xml", "eviction-enabled-cache.xml", -// "local-cache.xml", "multiplexer-enabled-cache.xml", -// "optimistically-locked-cache.xml", "total-replication-cache.= xml", "clonable-config.xml", -// "policyPerRegion-eviction.xml" , "default-test-config2x.xml" + "optimistically-locked-cache.xml", + "policyPerRegion-eviction.xml" , }; for (String file : fileNames) { @@ -64,7 +94,7 @@ String fileName =3D getFileName(file); ByteArrayOutputStream baos =3D new ByteArrayOutputStream(); convertor.parse(fileName, baos, XSLT_FILE); - System.out.println("result =3D \n" + baos); +// System.out.println("result =3D \n" + baos); = XmlConfigurationParser newParser =3D new XmlConfigurationParser(); XmlConfigurationParser2x oldParser =3D new XmlConfigurationParser= 2x(); Added: core/trunk/src/test/java/org/jboss/cache/config/parsing/Eviction2xto= 3xCompatibilityTest.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/test/java/org/jboss/cache/config/parsing/Eviction2xto3xC= ompatibilityTest.java (rev 0) +++ core/trunk/src/test/java/org/jboss/cache/config/parsing/Eviction2xto3xC= ompatibilityTest.java 2008-08-20 12:04:27 UTC (rev 6583) @@ -0,0 +1,189 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2008, Red Hat Middleware LLC, and individual contributors + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.cache.config.parsing; + +import org.testng.annotations.Test; +import org.testng.annotations.BeforeMethod; +import org.testng.reporters.XMLUtils; +import org.w3c.dom.Element; +import org.jboss.cache.config.parsing.element.EvictionElementParser; +import org.jboss.cache.config.EvictionConfig; +import org.jboss.cache.config.EvictionRegionConfig; +import org.jboss.cache.config.EvictionAlgorithmConfig; +import org.jboss.cache.Fqn; +import org.jboss.cache.eviction.MRUAlgorithmConfig; + +/** + * Eviction was internally changed from version 2.x to version 3.x. + * This is a tests to check eviction compatibility between these two versi= ons. + * + * @author Mircea.Markus(a)jboss.com + * @since 3.0 + */ +(a)Test(groups =3D "unit") +public class Eviction2xto3xCompatibilityTest +{ + private EvictionElementParser evictionElementParser; + + @BeforeMethod + public void setUp() + { + evictionElementParser =3D new EvictionElementParser(); + } + + public void testDefaultValues1() throws Exception + { + String oldFormat =3D + " \n" + + " \n" + + " 5\n" + + " 200000= \n" + + " org.jboss= .cache.eviction.LRUPolicy\n" + + " \n" + + " 5001\n" + + " 1001\n" + + " \n" + + " \n" + + " 1000\n" + + " 5000\n" + + " \n" + + " \n" + + " "; + Element oldEl =3D XmlConfigHelper.stringToElementInCoreNS(oldFormat); + EvictionConfig oldEvConfig =3D XmlConfigurationParser2x.parseEvictio= nConfig(oldEl); + //this will be transformed in root region, so make sure that the roo= t region will be corectly set up + MRUAlgorithmConfig defaultAlgorithmConfig =3D (MRUAlgorithmConfig) o= ldEvConfig.getDefaultEvictionRegionConfig().getEvictionAlgorithmConfig(); + assert oldEvConfig.getDefaultEvictionRegionConfig().getEventQueueSiz= e() =3D=3D 1234; + assert defaultAlgorithmConfig.getEvictionAlgorithmClassName().equals= ("org.jboss.cache.eviction.MRUAlgorithm"); + assert defaultAlgorithmConfig.getMaxNodes() =3D=3D 5001; + assert defaultAlgorithmConfig.getMinTimeToLive() =3D=3D 1001000; + + + assert oldEvConfig.getEvictionRegionConfigs().size() =3D=3D 1; + EvictionRegionConfig orgJbossData =3D oldEvConfig.getEvictionRegionC= onfigs().get(0); + assert orgJbossData.getRegionFqn().equals(Fqn.fromString("org/jboss/= data")); + assert orgJbossData.getEvictionAlgorithmConfig().getEvictionAlgorith= mClassName().equals("org.jboss.cache.eviction.LRUAlgorithm"); + assert orgJbossData.getEventQueueSize() =3D=3D 200000; + } + + public void simpleTest() throws Exception + { + String oldFormat =3D + " \n" + + " \n" + + " 5\n" + + " 200000= \n" + + " org.jboss= .cache.eviction.LRUPolicy\n" + + " \n" + + " 5000\n" + + " = 1000\n" + + " \n" + + " \n" + + " 1000\n" + + " 5000\n" + + " \n" + + " \n" + + " "; + String newFormat =3D + "\n" + + " \n" + + " 5000\n"= + + " 1000000\n" + + " \n" + + " \n" + + " 1000000\n" + + " 5000\n"= + + " \n" + + ""; + Element oldEl =3D XmlConfigHelper.stringToElementInCoreNS(oldFormat); + Element newEl =3D XmlConfigHelper.stringToElementInCoreNS(newFormat); + EvictionConfig oldEvConfig =3D XmlConfigurationParser2x.parseEvictio= nConfig(oldEl); + EvictionConfig newEvConfig =3D evictionElementParser.parseEvictionEl= ement(newEl); + assert oldEvConfig.getDefaultEvictionRegionConfig().equals(newEvConf= ig.getDefaultEvictionRegionConfig()); + + EvictionRegionConfig oldRegionConfig =3D oldEvConfig.getEvictionRegi= onConfigs().get(0); + EvictionRegionConfig newRegionConfig =3D newEvConfig.getEvictionRegi= onConfigs().get(0); + EvictionAlgorithmConfig oldEvictionAlgorithmConfig =3D oldRegionConf= ig.getEvictionAlgorithmConfig(); + EvictionAlgorithmConfig newEvictionAlgorithmConfig =3D newRegionConf= ig.getEvictionAlgorithmConfig(); + assert oldEvictionAlgorithmConfig.equals(newEvictionAlgorithmConfig); + + assert oldEvConfig.equals(newEvConfig); + } + + public void testFailureOnCustomEvictionPolicy() throws Exception + { + String oldFormat =3D + " \n" + + " \n" + + " 5\n" + + " 200000= \n" + + " org.jboss= .cache.eviction.LRUPolicy\n" + + " \n" + + " 5000\n" + + " = 1000\n" + + " \n" + + " \n" + + " 1000\n" + + " 5000\n" + + " \n" + + " \n" + + " "; + Element element =3D XmlConfigHelper.stringToElementInCoreNS(oldForma= t); + try + { + XmlConfigurationParser2x.parseEvictionConfig(element); + assert false : "custom eviction config not supported for the old = parser"; + } catch (Exception e) + { + System.out.println(e.getMessage()); + } + } + + public void testFailureOnCustomDefaultEvictionPolicy() throws Exception + { + String oldFormat =3D + " \n" + + " \n" + + " 5\n" + + " 200000= \n" + + " org.custo= m.eviction.policy.LFUPolicy\n" + + " \n" + + " 5000\n" + + " = 1000\n" + + " \n" + + " \n" + + " 1000\n" + + " 5000\n" + + " \n" + + " \n" + + " "; + Element element =3D XmlConfigHelper.stringToElementInCoreNS(oldForma= t); + try + { + XmlConfigurationParser2x.parseEvictionConfig(element); + assert false : "default custom eviction config not supported for = the old parser"; + } catch (Exception e) + { + System.out.println(e.getMessage()); + } + } +} Modified: core/trunk/src/test/resources/configs/conf2x/eviction-enabled-cac= he.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- core/trunk/src/test/resources/configs/conf2x/eviction-enabled-cache.xml= 2008-08-19 11:26:03 UTC (rev 6582) +++ core/trunk/src/test/resources/configs/conf2x/eviction-enabled-cache.xml= 2008-08-20 12:04:27 UTC (rev 6583) @@ -62,25 +62,12 @@ 5000 - 1000 + 1000 - 1000 + 1000 5000 - - - - - - - - - - - - - = --===============8555352053307553020==--