/* * JBoss, Home of Professional Open Source * Copyright 2009 Red Hat Inc. and/or its affiliates and other * contributors as indicated by the @author tags. All rights reserved. * 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.infinispan.manager; import org.infinispan.Cache; import org.infinispan.config.Configuration; import org.infinispan.remoting.transport.Transport; import org.infinispan.test.AbstractInfinispanTest; import org.infinispan.test.TestingUtil; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.infinispan.transaction.TransactionMode; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; import javax.transaction.TransactionManager; import java.io.ByteArrayInputStream; import java.io.IOException; import static org.infinispan.test.TestingUtil.INFINISPAN_END_TAG; import static org.infinispan.test.TestingUtil.INFINISPAN_START_TAG; import static org.testng.Assert.assertEquals; /** * @author Manik Surtani * @since 4.0 */ @Test(groups = "functional", testName = "manager.CacheManagerXmlConfigurationTest") public class CacheManagerXmlConfigurationTest extends AbstractInfinispanTest { EmbeddedCacheManager cm; @AfterMethod public void tearDown() { if (cm != null) cm.stop(); cm =null; } public void testNamedCacheXML() throws IOException { cm = TestCacheManagerFactory.fromXml("configs/named-cache-test.xml"); assertEquals("s1", cm.getGlobalConfiguration().getSiteId()); assertEquals("r1", cm.getGlobalConfiguration().getRackId()); assertEquals("m1", cm.getGlobalConfiguration().getMachineId()); // test default cache Cache c = cm.getCache(); assert c.getConfiguration().getConcurrencyLevel() == 100; assert c.getConfiguration().getLockAcquisitionTimeout() == 1000; assert !c.getConfiguration().isTransactionalCache(); assertEquals(c.getConfiguration().getTransactionMode(), TransactionMode.NON_TRANSACTIONAL); assert TestingUtil.extractComponent(c, Transport.class) != null : "This should not be null, since a shared transport should be present"; // test the "transactional" cache c = cm.getCache("transactional"); assert c.getConfiguration().isTransactionalCache(); assert c.getConfiguration().getConcurrencyLevel() == 100; assert c.getConfiguration().getLockAcquisitionTimeout() == 1000; assert TestingUtil.extractComponent(c, TransactionManager.class) != null; assert TestingUtil.extractComponent(c, Transport.class) != null : "This should not be null, since a shared transport should be present"; // test the "replicated" cache c = cm.getCache("syncRepl"); assert c.getConfiguration().getConcurrencyLevel() == 100; assert c.getConfiguration().getLockAcquisitionTimeout() == 1000; assertEquals(c.getConfiguration().getTransactionMode(), TransactionMode.NON_TRANSACTIONAL); assert TestingUtil.extractComponent(c, Transport.class) != null : "This should not be null, since a shared transport should be present"; // test the "txSyncRepl" cache c = cm.getCache("txSyncRepl"); assert c.getConfiguration().getConcurrencyLevel() == 100; assert c.getConfiguration().getLockAcquisitionTimeout() == 1000; assert TestingUtil.extractComponent(c, TransactionManager.class) != null; assert TestingUtil.extractComponent(c, Transport.class) != null : "This should not be null, since a shared transport should be present"; } public void testNamedCacheXMLClashingNames() { String xml = INFINISPAN_START_TAG + "\n" + " <default>\n" + " <locking concurrencyLevel=\"100\" lockAcquisitionTimeout=\"1000\" />\n" + " </default>\n" + "\n" + " <namedCache name=\"c1\">\n" + " <transaction transactionManagerLookupClass=\"org.infinispan.transaction.GenericTransactionManagerLookup\"/>\n" + " </namedCache>\n" + "\n" + " <namedCache name=\"c1\">\n" + " <clustering>\n" + " <sync replTimeout=\"15000\"/>\n" + " </clustering>\n" + " </namedCache>\n" + INFINISPAN_END_TAG; ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes()); try { cm = TestCacheManagerFactory.fromStream(bais); assert false : "Should fail"; } catch (Throwable expected) { } } public void testNamedCacheXMLClashingNamesProgrammatic() throws IOException { String xml = INFINISPAN_START_TAG + "\n" + "<global/>\n" + " <default>\n" + " <locking concurrencyLevel=\"100\" lockAcquisitionTimeout=\"1000\" />\n" + " </default>\n" + "\n" + " <namedCache name=\"c1\">\n" + " <transaction transactionManagerLookupClass=\"org.infinispan.transaction.lookup.GenericTransactionManagerLookup\"/>\n" + " </namedCache>\n" + INFINISPAN_END_TAG; ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes()); cm = TestCacheManagerFactory.fromStream(bais); assert cm.getCache() != null; assert cm.getCache("c1") != null; Configuration c1Config = cm.getCache("c1").getConfiguration(); assert c1Config != null; Configuration redefinedConfig = cm.defineConfiguration("c1", new Configuration()); assert c1Config.equals(redefinedConfig); } public void testDeprecatedElements() throws Exception { EmbeddedCacheManager cm = TestCacheManagerFactory.fromXml("configs/deprecated-elements.xml"); try { Cache[] caches = new Cache[]{cm.getCache("storeAsBinary"), cm.getCache()}; for (Cache c : caches) { assert c.getCacheConfiguration().storeAsBinary().enabled(); assert c.getCacheConfiguration().expiration().wakeUpInterval() == 12000; } } finally { cm.stop(); } } public void testBatchingIsEnabled() throws Exception { EmbeddedCacheManager cm = TestCacheManagerFactory.fromXml("configs/batching.xml"); try { Cache c = cm.getCache("any"); assert c.getConfiguration().isInvocationBatchingEnabled(); assert c.getConfiguration().isTransactionalCache(); c = cm.getCache(); assert c.getConfiguration().isInvocationBatchingEnabled(); Cache c2 = cm.getCache("tml"); assert c2.getConfiguration().isTransactionalCache(); } finally { cm.stop(); } } }