package org.infinispan.manager; import static org.infinispan.test.TestingUtil.INFINISPAN_END_TAG; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.assertFalse; import java.io.ByteArrayInputStream; import java.io.IOException; import javax.transaction.TransactionManager; import org.infinispan.Cache; import org.infinispan.remoting.transport.Transport; import org.infinispan.test.AbstractInfinispanTest; import org.infinispan.test.TestingUtil; import org.infinispan.test.TestingUtil.InfinispanStartTag; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.infinispan.transaction.TransactionMode; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; /** * @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.getCacheManagerConfiguration().transport().siteId()); assertEquals("r1", cm.getCacheManagerConfiguration().transport().rackId()); assertEquals("m1", cm.getCacheManagerConfiguration().transport().machineId()); // test default cache Cache c = cm.getCache(); assertEquals(100, c.getCacheConfiguration().locking().concurrencyLevel()); assertEquals(1000, c.getCacheConfiguration().locking().lockAcquisitionTimeout()); assertFalse(c.getCacheConfiguration().transaction().transactionMode().isTransactional()); assertEquals(TransactionMode.NON_TRANSACTIONAL, c.getCacheConfiguration().transaction().transactionMode()); assertNotNull("This should not be null, since a shared transport should be present", TestingUtil.extractComponent(c, Transport.class)); // test the "transactional" cache c = cm.getCache("transactional"); assertTrue(c.getCacheConfiguration().transaction().transactionMode().isTransactional()); assertEquals(32, c.getCacheConfiguration().locking().concurrencyLevel()); assertEquals(10000, c.getCacheConfiguration().locking().lockAcquisitionTimeout()); assertNotNull(TestingUtil.extractComponent(c, TransactionManager.class)); assertNotNull("This should not be null, since a shared transport should be present", TestingUtil.extractComponent(c, Transport.class)); // test the "replicated" cache c = cm.getCache("syncRepl"); assertEquals(32, c.getCacheConfiguration().locking().concurrencyLevel()); assertEquals(10000, c.getCacheConfiguration().locking().lockAcquisitionTimeout()); assertEquals(TransactionMode.NON_TRANSACTIONAL, c.getCacheConfiguration().transaction().transactionMode()); assertNotNull("This should not be null, since a shared transport should be present", TestingUtil.extractComponent(c, Transport.class)); // test the "txSyncRepl" cache c = cm.getCache("txSyncRepl"); assertEquals(32, c.getCacheConfiguration().locking().concurrencyLevel()); assertEquals(10000, c.getCacheConfiguration().locking().lockAcquisitionTimeout()); assertNotNull(TestingUtil.extractComponent(c, TransactionManager.class)); assertNotNull("This should not be null, since a shared transport should be present", TestingUtil.extractComponent(c, Transport.class)); } public void testNamedCacheXMLClashingNames() { String xml = InfinispanStartTag.LATEST + "<cache-container default-cache=\"default\">" + "\n" + " <local-cache name=\"default\">\n" + " <locking concurrencyLevel=\"100\" lockAcquisitionTimeout=\"1000\" />\n" + " </local-cache>\n" + "\n" + " <local-cache name=\"c1\">\n" + " <transaction transaction-manager-lookup=\"org.infinispan.transaction.lookup.GenericTransactionManagerLookup\"/>\n" + " </local-cache>\n" + "\n" + " <replicated-cache name=\"c1\" mode=\"SYNC\" remote-timeout=\"15000\">\n" + " </replicated-cache>\n" + "</cache-container>" + INFINISPAN_END_TAG; ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes()); try { cm = TestCacheManagerFactory.fromStream(bais); assert false : "Should fail"; } catch (Throwable expected) { } } public void testBatchingIsEnabled() throws Exception { EmbeddedCacheManager cm = TestCacheManagerFactory.fromXml("configs/batching.xml"); try { Cache c = cm.getCache("default"); assertTrue(c.getCacheConfiguration().invocationBatching().enabled()); assertTrue(c.getCacheConfiguration().transaction().transactionMode().isTransactional()); c = cm.getCache(); assertTrue(c.getCacheConfiguration().invocationBatching().enabled()); Cache c2 = cm.getCache("tml"); assertTrue(c2.getCacheConfiguration().transaction().transactionMode().isTransactional()); } finally { cm.stop(); } } }