Package org.infinispan.config.parsing

Source Code of org.infinispan.config.parsing.ConfigurationParserTest

package org.infinispan.config.parsing;

import org.infinispan.config.CacheLoaderManagerConfig;
import org.infinispan.config.Configuration;
import org.infinispan.config.ConfigurationException;
import org.infinispan.distribution.DefaultConsistentHash;
import org.infinispan.eviction.EvictionStrategy;
import org.infinispan.loaders.CacheStoreConfig;
import org.infinispan.loaders.decorators.SingletonStoreConfig;
import org.infinispan.loaders.file.FileCacheStore;
import org.infinispan.loaders.file.FileCacheStoreConfig;
import org.infinispan.transaction.lookup.GenericTransactionManagerLookup;
import org.infinispan.util.concurrent.IsolationLevel;
import org.testng.annotations.Test;
import org.w3c.dom.Element;

@Test(groups = "unit", testName = "config.parsing.ConfigurationParserTest")
public class ConfigurationParserTest {

   public void testLocking() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<locking\n" +
            "            isolationLevel=\"REPEATABLE_READ\"\n" +
            "            lockAcquisitionTimeout=\"200000\"\n" +
            "            writeSkewCheck=\"true\"\n" +
            "            concurrencyLevel=\"5\"/>";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureLocking(e, c);

      assert c.getIsolationLevel() == IsolationLevel.REPEATABLE_READ;
      assert c.getLockAcquisitionTimeout() == 200000;
      assert c.isWriteSkewCheck();
      assert c.getConcurrencyLevel() == 5;
   }

   public void testTransactions() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<transaction\n" +
            "            transactionManagerLookupClass=\"org.blah.Blah\"\n" +
            "            syncRollbackPhase=\"true\"\n" +
            "            useEagerLocking=\"true\"\n" +
            "            syncCommitPhase=\"true\"/>";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureTransaction(e, c);

      assert c.getTransactionManagerLookupClass().equals("org.blah.Blah");
      assert c.isSyncCommitPhase();
      assert c.isSyncRollbackPhase();
      assert c.isUseEagerLocking();
   }

   public void testTransactionsDefaults() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<transaction />";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureTransaction(e, c);

      assert c.getTransactionManagerLookupClass().equals(GenericTransactionManagerLookup.class.getName());
      assert !c.isSyncCommitPhase();
      assert !c.isSyncRollbackPhase();
   }

   public void testCacheJmxStatistics() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<jmxStatistics enabled=\"true\"/>";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureCacheJmxStatistics(e, c);

      assert c.isExposeJmxStatistics();
   }

   public void testLazyDeserialization() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<lazyDeserialization enabled=\"true\"/>";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureLazyDeserialization(e, c);

      assert c.isUseAsyncMarshalling();
   }

   public void testJmxStatisticsDefaults() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<jmxStatistics />";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureCacheJmxStatistics(e, c);

      assert !c.isExposeJmxStatistics();
   }

   public void testInvocationBatching() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<invocationBatching enabled=\"true\"/>";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureInvocationBatching(e, c);

      assert c.isInvocationBatchingEnabled();
   }

   public void testInvocationBatchingDefaults() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<invocationBatching />";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureInvocationBatching(e, c);

      assert c.isInvocationBatchingEnabled();
   }

   public void testClustering() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<clustering mode=\"invalidation\">\n" +
            "         <stateRetrieval timeout=\"20000\" fetchInMemoryState=\"false\"/>\n" +
            "         <async useReplQueue=\"true\" replQueueInterval=\"10000\" replQueueMaxElements=\"500\" asyncMarshalling=\"false\"/>\n" +
            "      </clustering>";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureClustering(e, c);

      assert c.getCacheMode() == Configuration.CacheMode.INVALIDATION_ASYNC;
      assert c.getStateRetrievalTimeout() == 20000;
      assert !c.isFetchInMemoryState();
      assert c.isUseReplQueue();
      assert c.getReplQueueInterval() == 10000;
      assert c.getReplQueueMaxElements() == 500;
      assert c.isUseAsyncMarshalling() == false;
   }

   public void testClusteringDefaults() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<clustering />";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureClustering(e, c);

      assert c.getCacheMode() == Configuration.CacheMode.DIST_SYNC;
      assert !c.isFetchInMemoryState();
      assert !c.isUseReplQueue();
      assert c.isL1CacheEnabled();
   }

   public void testCacheLoaders() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml =
            "      <loaders passivation=\"true\" shared=\"true\" preload=\"true\">\n" +
                  "         <loader class=\"org.infinispan.loaders.file.FileCacheStore\" fetchPersistentState=\"true\"\n" +
                  "                 ignoreModifications=\"true\" purgeOnStartup=\"true\">\n" +
                  "            <properties>\n" +
                  "               <property name=\"location\" value=\"blahblah\"/>\n" +
                  "            </properties>\n" +
                  "            <singletonStore enabled=\"true\" pushStateWhenCoordinator=\"true\" pushStateTimeout=\"20000\"/>\n" +
                  "            <async enabled=\"true\" batchSize=\"15\"/>\n" +
                  "         </loader>\n" +
                  "      </loaders>      ";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureCacheLoaders(e, c);

      CacheLoaderManagerConfig clc = c.getCacheLoaderManagerConfig();
      assert clc != null;
      assert clc.isFetchPersistentState();
      assert clc.isPassivation();
      assert clc.isShared();
      assert clc.isPreload();

      CacheStoreConfig iclc = (CacheStoreConfig) clc.getFirstCacheLoaderConfig();
      assert iclc.getCacheLoaderClassName().equals(FileCacheStore.class.getName());
      assert iclc.getAsyncStoreConfig().isEnabled();
      assert iclc.getAsyncStoreConfig().getBatchSize() == 15;
      assert iclc.getAsyncStoreConfig().getPollWait() == 100;
      assert iclc.getAsyncStoreConfig().getQueueSize() == 10000;
      assert iclc.getAsyncStoreConfig().getThreadPoolSize() == 1;
      assert iclc.isFetchPersistentState();
      assert iclc.isIgnoreModifications();
      assert iclc.isPurgeOnStartup();

      assert clc.getCacheLoaderConfigs().size() == 1;
      FileCacheStoreConfig csConf = (FileCacheStoreConfig) clc.getFirstCacheLoaderConfig();
      assert csConf.getLocation().equals("blahblah");

      SingletonStoreConfig ssc = iclc.getSingletonStoreConfig();
      assert ssc.isSingletonStoreEnabled();
      assert ssc.isPushStateWhenCoordinator();
      assert ssc.getPushStateTimeout() == 20000;
   }

   public void testCacheLoadersDefaults() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<loaders>\n" +
            "         <loader class=\"org.infinispan.loaders.file.FileCacheStore\">\n" +
            "            <properties />\n" +
            "         </loader>\n" +
            "      </loaders>";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureCacheLoaders(e, c);

      CacheLoaderManagerConfig clc = c.getCacheLoaderManagerConfig();
      assert clc != null;
      assert !clc.isFetchPersistentState();
      assert !clc.isPassivation();
      assert !clc.isShared();
      assert !clc.isPreload();

      CacheStoreConfig iclc = (CacheStoreConfig) clc.getFirstCacheLoaderConfig();
      assert iclc.getCacheLoaderClassName().equals("org.infinispan.loaders.file.FileCacheStore");
      assert !iclc.getAsyncStoreConfig().isEnabled();
      assert !iclc.isFetchPersistentState();
      assert !iclc.isIgnoreModifications();
      assert !iclc.isPurgeOnStartup();

      SingletonStoreConfig ssc = iclc.getSingletonStoreConfig();
      assert !ssc.isSingletonStoreEnabled();
   }

   public void testDefaultEvictionAndExpiration() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<eviction />";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();

      parser.configureEviction(e, c);
      parser.configureExpiration(null, c);

      assert c.getEvictionMaxEntries() == -1;
      assert c.getEvictionStrategy() == EvictionStrategy.NONE;
      assert c.getEvictionWakeUpInterval() == 5000;
      assert c.getExpirationLifespan() == -1;
      assert c.getExpirationMaxIdle() == -1;
   }

   public void testEvictionAndExpiration() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String evictionXml = "<eviction strategy=\"LRU\" " +
            "wakeUpInterval=\"750\" maxEntries=\"7000\" />";
      String expirationXml = "<expiration lifespan=\"2000\" maxIdle=\"500\"/>";

      Element evictionElement = XmlConfigHelper.stringToElement(evictionXml);
      Element expirationElement = XmlConfigHelper.stringToElement(expirationXml);

      Configuration c = new Configuration();

      parser.configureEviction(evictionElement, c);
      parser.configureExpiration(expirationElement, c);

      assert c.getEvictionStrategy() == EvictionStrategy.LRU;
      assert c.getEvictionMaxEntries() == 7000;
      assert c.getEvictionWakeUpInterval() == 750;
      assert c.getExpirationLifespan() == 2000;
      assert c.getExpirationMaxIdle() == 500;
   }

   public void testClusteringDist() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<clustering mode=\"d\">\n" +
            "         <async />" +
            "         <l1 enabled=\"false\"/>\n" +
            "         <hash class=\"org.blah.Blah\" numOwners=\"900\" rehashWait=\"-1\" />" +
            "      </clustering>";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureClustering(e, c);

      assert c.getCacheMode() == Configuration.CacheMode.DIST_ASYNC;
      assert !c.isFetchInMemoryState();
      assert !c.isL1CacheEnabled();
      assert c.getConsistentHashClass().equals("org.blah.Blah");
      assert c.getNumOwners() == 900;
      assert c.getRehashWaitTime() == -1;
   }

   public void testClusteringDistDefaults() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<clustering mode=\"d\" />";
      Element e = XmlConfigHelper.stringToElement(xml);

      Configuration c = new Configuration();
      parser.configureClustering(e, c);

      assert c.getCacheMode() == Configuration.CacheMode.DIST_SYNC;
      assert !c.isFetchInMemoryState();
      assert c.isL1CacheEnabled();
      assert c.getConsistentHashClass().equals(DefaultConsistentHash.class.getName());
      assert c.getNumOwners() == 2;
      assert c.getRehashWaitTime() == 60000;
      assert c.getL1Lifespan() == 600000;
      assert c.isL1OnRehash();
   }

   public void testInvalidClusteringCombinations() throws Exception {
      XmlConfigurationParserImpl parser = new XmlConfigurationParserImpl();
      String xml = "<clustering mode=\"d\"><sync/><async/></clustering>";
      try {
         parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
         assert false : "Should fail";
      } catch (ConfigurationException ce) {
         // expected
      }

      xml = "<clustering mode=\"d\"><stateRetrieval /></clustering>";
      Configuration c = new Configuration();
      parser.configureClustering(XmlConfigHelper.stringToElement(xml), c);
      try {
         c.assertValid();
         assert false : "Should fail";
      } catch (ConfigurationException expected) {
      }

      xml = "<clustering mode=\"d\"><stateRetrieval fetchInMemoryState=\"true\"/></clustering>";
      c = new Configuration();
      parser.configureClustering(XmlConfigHelper.stringToElement(xml), c);
      try {
         c.assertValid();
         assert false : "Should fail";
      } catch (ConfigurationException expected) {
      }

      xml = "<clustering mode=\"d\"><stateRetrieval fetchInMemoryState=\"false\"/></clustering>";
      parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());

      xml = "<clustering mode=\"r\"><l1 /></clustering>";

      try {
         parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
         assert false : "Should fail";
      } catch (ConfigurationException ce) {
         // expected
      }

      xml = "<clustering mode=\"i\"><l1 /></clustering>";

      try {
         parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
         assert false : "Should fail";
      } catch (ConfigurationException ce) {
         // expected
      }

      xml = "<clustering mode=\"r\"><hash /></clustering>";

      try {
         parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
         assert false : "Should fail";
      } catch (ConfigurationException ce) {
         // expected
      }

      xml = "<clustering mode=\"i\"><hash /></clustering>";

      try {
         parser.configureClustering(XmlConfigHelper.stringToElement(xml), new Configuration());
         assert false : "Should fail";
      } catch (ConfigurationException ce) {
         // expected
      }
   }
}
TOP

Related Classes of org.infinispan.config.parsing.ConfigurationParserTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.