[jbosscache-commits] JBoss Cache SVN: r7490 - in core/branches/flat/src/test/java/org/horizon: atomic and 4 other directories.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Fri Jan 16 10:25:15 EST 2009
Author: manik.surtani at jboss.com
Date: 2009-01-16 10:25:15 -0500 (Fri, 16 Jan 2009)
New Revision: 7490
Added:
core/branches/flat/src/test/java/org/horizon/atomic/
core/branches/flat/src/test/java/org/horizon/atomic/APITest.java
core/branches/flat/src/test/java/org/horizon/atomic/AtomicHashMapTest.java
core/branches/flat/src/test/java/org/horizon/factories/scopes/
core/branches/flat/src/test/java/org/horizon/factories/scopes/ScopeDetectorTest.java
core/branches/flat/src/test/java/org/horizon/lock/
core/branches/flat/src/test/java/org/horizon/lock/LockContainerHashingTest.java
core/branches/flat/src/test/java/org/horizon/manager/
core/branches/flat/src/test/java/org/horizon/manager/CacheManagerComponentRegistryTest.java
core/branches/flat/src/test/java/org/horizon/manager/CacheManagerTest.java
core/branches/flat/src/test/java/org/horizon/manager/CacheManagerXmlConfigurationTest.java
Log:
Added more tests
Added: core/branches/flat/src/test/java/org/horizon/atomic/APITest.java
===================================================================
--- core/branches/flat/src/test/java/org/horizon/atomic/APITest.java (rev 0)
+++ core/branches/flat/src/test/java/org/horizon/atomic/APITest.java 2009-01-16 15:25:15 UTC (rev 7490)
@@ -0,0 +1,254 @@
+/*
+ * 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.horizon.atomic;
+
+import org.horizon.config.Configuration;
+import org.horizon.config.Configuration.CacheMode;
+import org.horizon.manager.CacheManager;
+import org.horizon.transaction.DummyTransactionManager;
+import org.horizon.transaction.DummyTransactionManagerLookup;
+import org.horizon.util.TestingUtil;
+import org.testng.annotations.Test;
+
+import javax.transaction.Transaction;
+import java.util.Map;
+
+ at Test(groups = "functional")
+public class APITest
+{
+
+ private void assertIsEmpty(Map map)
+ {
+ assert map.size() == 0;
+ assert map.get("blah") == null;
+ assert !map.containsKey("blah");
+ }
+
+ private void assertIsEmptyMap(AtomicMapCache cache, Object key)
+ {
+ assertIsEmpty(cache.getAtomicMap(key));
+ }
+
+ public void testAtomicMap()
+ {
+ Configuration c = new Configuration();
+ c.setInvocationBatchingEnabled(true);
+ AtomicMapCache cache = (AtomicMapCache) new CacheManager(c).getCache();
+ try
+ {
+ AtomicMap map = cache.getAtomicMap("map");
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache, "map");
+
+ map.put("blah", "blah");
+ assert map.size() == 1;
+ assert map.get("blah").equals("blah");
+ assert map.containsKey("blah");
+
+ map.clear();
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache, "map");
+ }
+ finally
+ {
+ cache.stop();
+ }
+ }
+
+
+ public void testReadSafetyEmptyCache() throws Exception
+ {
+ Configuration c = new Configuration();
+ c.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class.getName());
+ c.setInvocationBatchingEnabled(true);
+ AtomicMapCache cache = (AtomicMapCache) new CacheManager(c).getCache();
+ try
+ {
+ AtomicMap map = cache.getAtomicMap("map");
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache, "map");
+
+ DummyTransactionManager.getInstance().begin();
+ map.put("blah", "blah");
+ assert map.size() == 1;
+ assert map.get("blah").equals("blah");
+ assert map.containsKey("blah");
+ Transaction t = DummyTransactionManager.getInstance().suspend();
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache, "map");
+
+ DummyTransactionManager.getInstance().resume(t);
+ DummyTransactionManager.getInstance().commit();
+
+ assert map.size() == 1;
+ assert map.get("blah").equals("blah");
+ assert map.containsKey("blah");
+
+ map.clear();
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache, "map");
+ }
+ finally
+ {
+ cache.stop();
+ }
+ }
+
+ public void testReadSafetyNotEmptyCache() throws Exception
+ {
+ Configuration c = new Configuration();
+ c.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class.getName());
+ c.setInvocationBatchingEnabled(true);
+ AtomicMapCache cache = (AtomicMapCache) new CacheManager(c).getCache();
+ try
+ {
+ AtomicMap map = cache.getAtomicMap("map");
+
+ DummyTransactionManager.getInstance().begin();
+ map.put("blah", "blah");
+ assert map.size() == 1;
+ assert map.get("blah").equals("blah");
+ assert map.containsKey("blah");
+ Transaction t = DummyTransactionManager.getInstance().suspend();
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache, "map");
+
+ DummyTransactionManager.getInstance().resume(t);
+ DummyTransactionManager.getInstance().commit();
+
+ assert map.size() == 1;
+ assert map.get("blah").equals("blah");
+ assert map.containsKey("blah");
+
+ map.clear();
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache, "map");
+ }
+ finally
+ {
+ cache.stop();
+ }
+ }
+
+ public void testReadSafetyRollback() throws Exception
+ {
+ Configuration c = new Configuration();
+ c.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class.getName());
+ c.setInvocationBatchingEnabled(true);
+ AtomicMapCache cache = (AtomicMapCache) new CacheManager(c).getCache();
+ try
+ {
+ AtomicMap map = cache.getAtomicMap("map");
+
+ DummyTransactionManager.getInstance().begin();
+ map.put("blah", "blah");
+ assert map.size() == 1;
+ assert map.get("blah").equals("blah");
+ assert map.containsKey("blah");
+ Transaction t = DummyTransactionManager.getInstance().suspend();
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache, "map");
+
+ DummyTransactionManager.getInstance().resume(t);
+ DummyTransactionManager.getInstance().rollback();
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache, "map");
+ }
+ finally
+ {
+ cache.stop();
+ }
+ }
+
+ public void testReplicationCommit() throws Exception
+ {
+ Configuration c = new Configuration();
+ c.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class.getName());
+ c.setCacheMode(CacheMode.REPL_SYNC);
+ c.setInvocationBatchingEnabled(true);
+ AtomicMapCache cache1 = (AtomicMapCache) new CacheManager(c).getCache();
+ AtomicMapCache cache2 = (AtomicMapCache) new CacheManager(c).getCache();
+
+ try
+ {
+ TestingUtil.blockUntilViewsReceived(20000, cache1, cache2);
+ AtomicMap map = cache1.getAtomicMap("map");
+
+ DummyTransactionManager.getInstance().begin();
+ map.put("existing", "existing");
+ map.put("blah", "blah");
+ DummyTransactionManager.getInstance().commit();
+
+ assert map.size() == 2;
+ assert map.get("blah").equals("blah");
+ assert map.containsKey("blah");
+
+ System.out.println("Map on cache 2 is " + cache2.getAtomicMap("map"));
+
+ assert cache2.getAtomicMap("map").size() == 2;
+ assert cache2.getAtomicMap("map").get("blah").equals("blah");
+ assert cache2.getAtomicMap("map").containsKey("blah");
+ }
+ finally
+ {
+ TestingUtil.killCaches(cache1, cache2);
+ }
+ }
+
+ public void testReplicationRollback() throws Exception
+ {
+ Configuration c = new Configuration();
+ c.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class.getName());
+ c.setCacheMode(CacheMode.REPL_SYNC);
+ c.setInvocationBatchingEnabled(true);
+ AtomicMapCache cache1 = (AtomicMapCache) new CacheManager(c).getCache();
+ AtomicMapCache cache2 = (AtomicMapCache) new CacheManager(c).getCache();
+
+ try
+ {
+ TestingUtil.blockUntilViewsReceived(20000, cache1, cache2);
+ AtomicMap map = cache1.getAtomicMap("map");
+
+ DummyTransactionManager.getInstance().begin();
+ map.put("existing", "existing");
+ map.put("blah", "blah");
+ DummyTransactionManager.getInstance().rollback();
+
+ assertIsEmpty(map);
+ assertIsEmptyMap(cache1, "map");
+ assertIsEmptyMap(cache2, "map");
+ }
+ finally
+ {
+ TestingUtil.killCaches(cache1, cache2);
+ }
+ }
+}
Added: core/branches/flat/src/test/java/org/horizon/atomic/AtomicHashMapTest.java
===================================================================
--- core/branches/flat/src/test/java/org/horizon/atomic/AtomicHashMapTest.java (rev 0)
+++ core/branches/flat/src/test/java/org/horizon/atomic/AtomicHashMapTest.java 2009-01-16 15:25:15 UTC (rev 7490)
@@ -0,0 +1,105 @@
+/*
+ * 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.horizon.atomic;
+
+import org.easymock.EasyMock;
+import org.testng.annotations.Test;
+
+import java.io.IOException;
+import java.io.ObjectOutput;
+
+ at Test(groups = "unit")
+public class AtomicHashMapTest
+{
+ public void testDeltasWithEmptyMap() throws IOException
+ {
+ AtomicHashMap m = new AtomicHashMap();
+ Delta d = m.delta();
+ assert d instanceof NullDelta;
+ ObjectOutput out = EasyMock.createMock(ObjectOutput.class);
+ EasyMock.replay(out);
+ d.writeExternal(out);
+ EasyMock.verify(out);
+
+ AtomicHashMap newMap = new AtomicHashMap();
+ newMap.initForWriting();
+ newMap.put("k", "v");
+ newMap = (AtomicHashMap) d.merge(newMap);
+ assert newMap.containsKey("k");
+ assert newMap.size() == 1;
+
+ newMap = (AtomicHashMap) d.merge(null);
+ assert newMap.isEmpty();
+ }
+
+ public void testDeltasWithNoChanges() throws IOException
+ {
+ AtomicHashMap m = new AtomicHashMap();
+ m.initForWriting();
+ m.put("k1", "v1");
+ m.commit();
+ assert m.size() == 1;
+ Delta d = m.delta();
+ assert d instanceof NullDelta;
+ ObjectOutput out = EasyMock.createMock(ObjectOutput.class);
+ EasyMock.replay(out);
+ d.writeExternal(out);
+ EasyMock.verify(out);
+
+ AtomicHashMap newMap = new AtomicHashMap();
+ newMap.initForWriting();
+ newMap.put("k", "v");
+ newMap = (AtomicHashMap) d.merge(newMap);
+ assert newMap.containsKey("k");
+ assert newMap.size() == 1;
+
+ newMap = (AtomicHashMap) d.merge(null);
+ assert newMap.isEmpty();
+ }
+
+ public void testDeltasWithRepeatedChanges()
+ {
+ AtomicHashMap m = new AtomicHashMap();
+ m.initForWriting();
+ m.put("k1", "v1");
+ m.put("k1", "v2");
+ m.put("k1", "v3");
+ assert m.size() == 1;
+ AtomicHashMapDelta d = (AtomicHashMapDelta) m.delta();
+ assert d.getChangeLogSize() != 0;
+
+ AtomicHashMap newMap = new AtomicHashMap();
+ newMap.initForWriting();
+ newMap.put("k1", "v4");
+ newMap = (AtomicHashMap) d.merge(newMap);
+ assert newMap.containsKey("k1");
+ assert newMap.get("k1").equals("v3");
+ assert newMap.size() == 1;
+
+ newMap = (AtomicHashMap) d.merge(null);
+ assert newMap.containsKey("k1");
+ assert newMap.get("k1").equals("v3");
+ assert newMap.size() == 1;
+ }
+}
Added: core/branches/flat/src/test/java/org/horizon/factories/scopes/ScopeDetectorTest.java
===================================================================
--- core/branches/flat/src/test/java/org/horizon/factories/scopes/ScopeDetectorTest.java (rev 0)
+++ core/branches/flat/src/test/java/org/horizon/factories/scopes/ScopeDetectorTest.java 2009-01-16 15:25:15 UTC (rev 7490)
@@ -0,0 +1,91 @@
+package org.horizon.factories.scopes;
+
+import org.testng.annotations.Test;
+
+/**
+ * @author Manik Surtani
+ * @since 1.0
+ */
+ at Test(groups = "unit")
+public class ScopeDetectorTest
+{
+ public void testScopeOnClass()
+ {
+ testScopes(Test1.class, Scopes.GLOBAL);
+
+ }
+
+ public void testScopeOnInterface()
+ {
+ testScopes(Test2.class, Scopes.GLOBAL);
+ }
+
+ public void testScopeOnSuperClass()
+ {
+ testScopes(Test3.class, Scopes.GLOBAL);
+ }
+
+ public void testScopeOnSuperInterface()
+ {
+ testScopes(Test4.class, Scopes.GLOBAL);
+ }
+
+ public void testNoScopes()
+ {
+ testScopes(Test6.class, Scopes.NAMED_CACHE);
+ }
+
+ private void testScopes(Class clazz, Scopes expected)
+ {
+ Scopes detected = ScopeDetector.detectScope(clazz);
+ assert detected == expected : "Expected " + expected + " but was " + detected;
+ }
+
+ public static interface Unscoped
+ {
+
+ }
+
+ @Scope(Scopes.GLOBAL)
+ public static interface Scoped
+ {
+
+ }
+
+ @Scope(Scopes.GLOBAL)
+ public static class SuperScoped
+ {
+
+ }
+
+ public static class SuperUnScoped
+ {
+
+ }
+
+ @Scope(Scopes.GLOBAL)
+ public static class Test1
+ {
+
+ }
+
+ public static class Test2 implements Scoped
+ {
+
+ }
+
+ public static class Test3 extends SuperScoped
+ {
+
+ }
+
+ public static class Test4 extends Test2
+ {
+
+ }
+
+ public static class Test6 extends SuperUnScoped implements Unscoped
+ {
+
+ }
+}
Added: core/branches/flat/src/test/java/org/horizon/lock/LockContainerHashingTest.java
===================================================================
--- core/branches/flat/src/test/java/org/horizon/lock/LockContainerHashingTest.java (rev 0)
+++ core/branches/flat/src/test/java/org/horizon/lock/LockContainerHashingTest.java 2009-01-16 15:25:15 UTC (rev 7490)
@@ -0,0 +1,88 @@
+/*
+ * 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.horizon.lock;
+
+import org.horizon.util.concurrent.locks.LockContainer;
+import org.horizon.util.concurrent.locks.ReentrantLockContainer;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import java.util.*;
+import java.util.concurrent.locks.Lock;
+
+ at Test(groups = "unit")
+public class LockContainerHashingTest
+{
+ private LockContainer<String> stripedLock;
+
+ @BeforeMethod(alwaysRun = true)
+ public void setUp()
+ {
+ stripedLock = new ReentrantLockContainer<String>(500);
+ }
+
+ public void testHashingDistribution()
+ {
+ // ensure even bucket distribution of lock stripes
+ List<String> keys = createRandomKeys(1000);
+
+ Map<Lock, Integer> distribution = new HashMap<Lock, Integer>();
+
+ for (String s : keys)
+ {
+ Lock lock = stripedLock.getLock(s);
+ if (distribution.containsKey(lock))
+ {
+ int count = distribution.get(lock) + 1;
+ distribution.put(lock, count);
+ }
+ else
+ {
+ distribution.put(lock, 1);
+ }
+ }
+
+ System.out.println(distribution);
+
+ // cannot be larger than the number of locks
+ System.out.println("dist size: " + distribution.size());
+ System.out.println("num shared locks: " + stripedLock.size());
+ assert distribution.size() <= stripedLock.size();
+ // assume at least a 2/3rd spread
+ assert distribution.size() * 1.5 >= stripedLock.size();
+ }
+
+ private List<String> createRandomKeys(int number)
+ {
+
+ List<String> f = new ArrayList<String>(number);
+ Random r = new Random();
+ int i = number;
+ while (f.size() < number)
+ {
+ String s = i + "baseKey" + (10000 + i++);
+ f.add(s);
+ }
+
+ return f;
+ }
+}
Added: core/branches/flat/src/test/java/org/horizon/manager/CacheManagerComponentRegistryTest.java
===================================================================
--- core/branches/flat/src/test/java/org/horizon/manager/CacheManagerComponentRegistryTest.java (rev 0)
+++ core/branches/flat/src/test/java/org/horizon/manager/CacheManagerComponentRegistryTest.java 2009-01-16 15:25:15 UTC (rev 7490)
@@ -0,0 +1,103 @@
+package org.horizon.manager;
+
+import org.horizon.Cache;
+import org.horizon.config.CacheLoaderConfig;
+import org.horizon.config.Configuration;
+import org.horizon.interceptors.BatchingInterceptor;
+import org.horizon.interceptors.InterceptorChain;
+import org.horizon.loader.CacheLoaderManager;
+import org.horizon.loader.FileCacheLoaderConfig;
+import org.horizon.remoting.RPCManager;
+import org.horizon.transaction.DummyTransactionManager;
+import org.horizon.transaction.DummyTransactionManagerLookup;
+import org.horizon.util.TestingUtil;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.Test;
+
+import javax.transaction.TransactionManager;
+
+/**
+ * @author Manik Surtani
+ * @since 1.0
+ */
+ at Test(groups = "functional", sequential = true)
+public class CacheManagerComponentRegistryTest
+{
+ CacheManager cm;
+
+ @AfterMethod
+ public void tearDown()
+ {
+ if (cm != null) cm.stop();
+ }
+
+ public void testForceSharedComponents() throws CacheNameExistsException, NamedCacheNotFoundException
+ {
+ Configuration defaultCfg = new Configuration();
+ defaultCfg.setCacheMode(Configuration.CacheMode.REPL_SYNC);
+ // cache manager with default configuration
+ cm = new CacheManager(defaultCfg);
+
+ // default cache with no overrides
+ Cache c = cm.getCache();
+
+ Configuration overrides = new Configuration();
+ overrides.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class.getName());
+ cm.defineCache("transactional", overrides);
+ Cache transactional = cm.getCache("transactional");
+
+ // assert components.
+ assert TestingUtil.extractComponent(c, TransactionManager.class) == null;
+ assert TestingUtil.extractComponent(transactional, TransactionManager.class) instanceof DummyTransactionManager;
+
+ // assert force-shared components
+ assert TestingUtil.extractComponent(c, RPCManager.class) != null;
+ assert TestingUtil.extractComponent(transactional, RPCManager.class) != null;
+ assert TestingUtil.extractComponent(c, RPCManager.class) == TestingUtil.extractComponent(transactional, RPCManager.class);
+ }
+
+ public void testForceUnsharedComponents() throws CacheNameExistsException, NamedCacheNotFoundException
+ {
+ CacheLoaderConfig clc = new CacheLoaderConfig();
+ FileCacheLoaderConfig fc = new FileCacheLoaderConfig();
+ fc.setLocation("/tmp");
+ clc.addIndividualCacheLoaderConfig(fc);
+
+ Configuration defaultCfg = new Configuration();
+ defaultCfg.setCacheMode(Configuration.CacheMode.REPL_SYNC);
+ defaultCfg.setCacheLoaderConfig(clc);
+ // cache manager with default configuration
+ cm = new CacheManager(defaultCfg);
+
+ // default cache with no overrides
+ Cache c = cm.getCache();
+
+ Configuration overrides = new Configuration();
+ overrides.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class.getName());
+ cm.defineCache("transactional", overrides);
+ Cache transactional = cm.getCache("transactional");
+
+ // assert components.
+ assert TestingUtil.extractComponent(c, CacheLoaderManager.class) != null;
+ assert TestingUtil.extractComponent(transactional, CacheLoaderManager.class) != null;
+ assert TestingUtil.extractComponent(c, CacheLoaderManager.class) != TestingUtil.extractComponent(transactional, CacheLoaderManager.class);
+ }
+
+ public void testOverridingComponents() throws CacheNameExistsException, NamedCacheNotFoundException
+ {
+ Configuration defaultCfg = new Configuration();
+ cm = new CacheManager(defaultCfg);
+
+ // default cache with no overrides
+ Cache c = cm.getCache();
+
+ Configuration overrides = new Configuration();
+ overrides.setInvocationBatchingEnabled(true);
+ cm.defineCache("overridden", overrides);
+ Cache overridden = cm.getCache("overridden");
+
+ // assert components.
+ assert !TestingUtil.extractComponent(c, InterceptorChain.class).containsInterceptorType(BatchingInterceptor.class);
+ assert TestingUtil.extractComponent(overridden, InterceptorChain.class).containsInterceptorType(BatchingInterceptor.class);
+ }
+}
Added: core/branches/flat/src/test/java/org/horizon/manager/CacheManagerTest.java
===================================================================
--- core/branches/flat/src/test/java/org/horizon/manager/CacheManagerTest.java (rev 0)
+++ core/branches/flat/src/test/java/org/horizon/manager/CacheManagerTest.java 2009-01-16 15:25:15 UTC (rev 7490)
@@ -0,0 +1,69 @@
+package org.horizon.manager;
+
+import org.horizon.CacheStatus;
+import org.horizon.Cache;
+import org.horizon.config.Configuration;
+import org.testng.annotations.Test;
+
+/**
+ * @author Manik Surtani
+ * @since 1.0
+ */
+ at Test(groups = "functional")
+public class CacheManagerTest
+{
+ public void testDefaultCache() throws CacheNameExistsException
+ {
+ CacheManager cm = new CacheManager();
+
+ assert cm.getCache().getCacheStatus() == CacheStatus.STARTED;
+ assert cm.getCache().getName().equals(CacheManager.DEFAULT_CACHE_NAME);
+
+ try
+ {
+ cm.defineCache(CacheManager.DEFAULT_CACHE_NAME, new Configuration());
+ assert false : "Should fail";
+ }
+ catch (IllegalArgumentException e)
+ {
+ // ok
+ assert true : "Allowed";
+ }
+ }
+
+ public void testClashingNames() throws CacheNameExistsException
+ {
+ CacheManager cm = new CacheManager();
+ Configuration c = new Configuration();
+
+ cm.defineCache("aCache", c);
+ try
+ {
+ cm.defineCache("aCache", c);
+ assert false : "Should fail";
+ }
+ catch (CacheNameExistsException cnee)
+ {
+ // expected
+ assert true : "Expected";
+ }
+ }
+
+ public void testStartAndStop()
+ {
+ CacheManager cm = new CacheManager();
+ Cache c1 = cm.getCache("cache1");
+ Cache c2 = cm.getCache("cache2");
+ Cache c3 = cm.getCache("cache3");
+
+ assert c1.getCacheStatus() == CacheStatus.STARTED;
+ assert c2.getCacheStatus() == CacheStatus.STARTED;
+ assert c3.getCacheStatus() == CacheStatus.STARTED;
+
+ cm.stop();
+
+ assert c1.getCacheStatus() == CacheStatus.STOPPED;
+ assert c2.getCacheStatus() == CacheStatus.STOPPED;
+ assert c3.getCacheStatus() == CacheStatus.STOPPED;
+ }
+}
Added: core/branches/flat/src/test/java/org/horizon/manager/CacheManagerXmlConfigurationTest.java
===================================================================
--- core/branches/flat/src/test/java/org/horizon/manager/CacheManagerXmlConfigurationTest.java (rev 0)
+++ core/branches/flat/src/test/java/org/horizon/manager/CacheManagerXmlConfigurationTest.java 2009-01-16 15:25:15 UTC (rev 7490)
@@ -0,0 +1,158 @@
+package org.horizon.manager;
+
+import org.horizon.Cache;
+import org.horizon.config.Configuration;
+import org.horizon.config.ConfigurationException;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+/**
+ * @author Manik Surtani
+ * @since 1.0
+ */
+ at Test(groups = "functional", sequential = true)
+public class CacheManagerXmlConfigurationTest
+{
+ CacheManager cm;
+
+ @AfterMethod
+ public void tearDown()
+ {
+ if (cm != null) cm.stop();
+ }
+
+ public void testNamedCacheXML() throws IOException
+ {
+ String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<jbosscache xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:jboss:starobrno-core:config:1.0\">\n" +
+ "\n" +
+ " <default>\n" +
+ " <locking concurrencyLevel=\"100\" lockAcquisitionTimeout=\"1000\" />\n" +
+ " </default>\n" +
+ "\n" +
+ " <namedCache name=\"transactional\">\n" +
+ " <transaction transactionManagerLookupClass=\"org.jboss.starobrno.transaction.GenericTransactionManagerLookup\"/>\n" +
+ " </namedCache>\n" +
+ "\n" +
+ " <namedCache name=\"syncRepl\">\n" +
+ " <clustering>\n" +
+ " <stateRetrieval fetchInMemoryState=\"true\" timeout=\"15000\"/>\n" +
+ " <jgroupsConfig configFile=\"udp.xml\"/>\n" +
+ " <sync replTimeout=\"15000\"/>\n" +
+ " </clustering>\n" +
+ " </namedCache>\n" +
+ "\n" +
+ " <namedCache name=\"txSyncRepl\">\n" +
+ " <transaction transactionManagerLookupClass=\"org.jboss.starobrno.transaction.GenericTransactionManagerLookup\"/>\n" +
+ " <clustering>\n" +
+ " <stateRetrieval fetchInMemoryState=\"true\" timeout=\"15000\"/>\n" +
+ " <jgroupsConfig configFile=\"udp.xml\"/>\n" +
+ " <sync replTimeout=\"15000\"/>\n" +
+ " </clustering>\n" +
+ " </namedCache>\n" +
+ " \n" +
+ "</jbosscache>";
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes());
+ cm = new CacheManager(bais);
+
+ // test default cache
+ Cache c = cm.getCache();
+ assert c.getConfiguration().getConcurrencyLevel() == 100;
+ assert c.getConfiguration().getLockAcquisitionTimeout() == 1000;
+ assert c.getConfiguration().getRuntimeConfig().getTransactionManager() == null;
+ assert c.getConfiguration().getRuntimeConfig().getRPCManager() == null;
+
+ // test the "transactional" cache
+ c = cm.getCache("transactional");
+ assert c.getConfiguration().getConcurrencyLevel() == 100;
+ assert c.getConfiguration().getLockAcquisitionTimeout() == 1000;
+ assert c.getConfiguration().getRuntimeConfig().getTransactionManager() != null;
+ assert c.getConfiguration().getRuntimeConfig().getRPCManager() == null;
+
+ // test the "replicated" cache
+ c = cm.getCache("syncRepl");
+ assert c.getConfiguration().getConcurrencyLevel() == 100;
+ assert c.getConfiguration().getLockAcquisitionTimeout() == 1000;
+ assert c.getConfiguration().getRuntimeConfig().getTransactionManager() == null;
+ assert c.getConfiguration().getRuntimeConfig().getRPCManager() != null;
+
+ // test the "txSyncRepl" cache
+ c = cm.getCache("txSyncRepl");
+ assert c.getConfiguration().getConcurrencyLevel() == 100;
+ assert c.getConfiguration().getLockAcquisitionTimeout() == 1000;
+ assert c.getConfiguration().getRuntimeConfig().getTransactionManager() != null;
+ assert c.getConfiguration().getRuntimeConfig().getRPCManager() != null;
+ }
+
+ public void testNamedCacheXMLClashingNames() throws IOException
+ {
+ String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<jbosscache xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:jboss:starobrno-core:config:1.0\">\n" +
+ "\n" +
+ " <default>\n" +
+ " <locking concurrencyLevel=\"100\" lockAcquisitionTimeout=\"1000\" />\n" +
+ " </default>\n" +
+ "\n" +
+ " <namedCache name=\"c1\">\n" +
+ " <transaction transactionManagerLookupClass=\"org.jboss.starobrno.transaction.GenericTransactionManagerLookup\"/>\n" +
+ " </namedCache>\n" +
+ "\n" +
+ " <namedCache name=\"c1\">\n" +
+ " <clustering>\n" +
+ " <stateRetrieval fetchInMemoryState=\"true\" timeout=\"15000\"/>\n" +
+ " <jgroupsConfig configFile=\"udp.xml\"/>\n" +
+ " <sync replTimeout=\"15000\"/>\n" +
+ " </clustering>\n" +
+ " </namedCache>\n" +
+ " \n" +
+ "</jbosscache>";
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes());
+ try
+ {
+ cm = new CacheManager(bais);
+ assert false : "Should fail";
+ }
+ catch (ConfigurationException expected)
+ {
+
+ }
+ }
+
+ public void testNamedCacheXMLClashingNamesProgrammatic() throws IOException
+ {
+ String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<jbosscache xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:jboss:starobrno-core:config:1.0\">\n" +
+ "\n" +
+ " <default>\n" +
+ " <locking concurrencyLevel=\"100\" lockAcquisitionTimeout=\"1000\" />\n" +
+ " </default>\n" +
+ "\n" +
+ " <namedCache name=\"c1\">\n" +
+ " <transaction transactionManagerLookupClass=\"org.jboss.starobrno.transaction.GenericTransactionManagerLookup\"/>\n" +
+ " </namedCache>\n" +
+ "\n" +
+ "</jbosscache>";
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes());
+ cm = new CacheManager(bais);
+
+ assert cm.getCache() != null;
+ assert cm.getCache("c1") != null;
+ try
+ {
+ cm.defineCache("c1", new Configuration());
+ assert false : "Should fail";
+ }
+ catch (CacheNameExistsException expected)
+ {
+
+ }
+ }
+}
+
+
More information about the jbosscache-commits
mailing list