[infinispan-commits] Infinispan SVN: r2473 - in trunk: client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry and 15 other directories.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Sat Oct 2 14:58:42 EDT 2010
Author: manik.surtani at jboss.com
Date: 2010-10-02 14:58:41 -0400 (Sat, 02 Oct 2010)
New Revision: 2473
Added:
trunk/core/src/test/java/org/infinispan/lock/APITest.java
trunk/core/src/test/java/org/infinispan/test/fwk/CleanupAfterMethod.java
trunk/core/src/test/java/org/infinispan/test/fwk/CleanupAfterTest.java
Modified:
trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HitsAwareCacheManagersTest.java
trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/AbstractRetryTest.java
trunk/core/src/main/java/org/infinispan/AbstractDelegatingAdvancedCache.java
trunk/core/src/main/java/org/infinispan/AdvancedCache.java
trunk/core/src/main/java/org/infinispan/CacheDelegate.java
trunk/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java
trunk/core/src/main/java/org/infinispan/config/Configuration.java
trunk/core/src/main/java/org/infinispan/interceptors/InvocationContextInterceptor.java
trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java
trunk/core/src/test/java/org/infinispan/atomic/AtomicMapFunctionalTest.java
trunk/core/src/test/java/org/infinispan/jmx/ComponentsJmxRegistrationTest.java
trunk/core/src/test/java/org/infinispan/notifications/AsyncNotificationTest.java
trunk/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java
trunk/core/src/test/java/org/infinispan/remoting/jgroups/ChannelLookupTest.java
trunk/core/src/test/java/org/infinispan/stress/PutIfAbsentStressTest.java
trunk/core/src/test/java/org/infinispan/test/AbstractCacheTest.java
trunk/core/src/test/java/org/infinispan/test/MultipleCacheManagersTest.java
trunk/core/src/test/java/org/infinispan/test/SingleCacheManagerTest.java
trunk/core/src/test/java/org/infinispan/test/TestingUtil.java
trunk/core/src/test/java/org/infinispan/tx/OnePhaseXATest.java
trunk/query/src/test/java/org/infinispan/query/backend/QueryHelperTest.java
Log:
Merged 2469 - 2472 from branch 4.2
Modified: trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HitsAwareCacheManagersTest.java
===================================================================
--- trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HitsAwareCacheManagersTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/HitsAwareCacheManagersTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -26,7 +26,7 @@
@BeforeMethod
public void createBeforeMethod() throws Throwable {
- if (cleanup == CleanupPhase.AFTER_METHOD) {
+ if (cleanupAfterMethod()) {
hrServ2CacheManager.clear();
addr2hrServer.clear();
}
Modified: trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/AbstractRetryTest.java
===================================================================
--- trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/AbstractRetryTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/client/hotrod-client/src/test/java/org/infinispan/client/hotrod/retry/AbstractRetryTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -42,7 +42,7 @@
@Override
protected void createCacheManagers() throws Throwable {
- assert cleanup == CleanupPhase.AFTER_METHOD;
+ assert cleanupAfterMethod();
config = getCacheConfig();
Modified: trunk/core/src/main/java/org/infinispan/AbstractDelegatingAdvancedCache.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/AbstractDelegatingAdvancedCache.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/main/java/org/infinispan/AbstractDelegatingAdvancedCache.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -90,11 +90,11 @@
return this;
}
- public void lock(K key) {
- cache.lock(key);
+ public boolean lock(K key) {
+ return cache.lock(key);
}
- public void lock(Collection<? extends K> keys) {
- cache.lock(keys);
+ public boolean lock(Collection<? extends K> keys) {
+ return cache.lock(keys);
}
}
Modified: trunk/core/src/main/java/org/infinispan/AdvancedCache.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/AdvancedCache.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/main/java/org/infinispan/AdvancedCache.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -108,8 +108,9 @@
* A key can be locked eagerly in the context of a transaction only
*
* @param key the key to lock
+ * @return true if the lock acquisition attempt was successful; false otherwise.
*/
- void lock(K key);
+ boolean lock(K key);
/**
* Locks collections of keys eagerly across cache nodes in a cluster.
@@ -118,8 +119,9 @@
*
*
* @param keys collection of keys to lock
+ * @return true if the lock acquisition attempt was successful for <i>all</i> keys; false otherwise.
*/
- void lock(Collection<? extends K> keys);
+ boolean lock(Collection<? extends K> keys);
RpcManager getRpcManager();
Modified: trunk/core/src/main/java/org/infinispan/CacheDelegate.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/CacheDelegate.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/main/java/org/infinispan/CacheDelegate.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -285,16 +285,16 @@
return ctx;
}
- public void lock(K key) {
+ public boolean lock(K key) {
assertKeyNotNull(key);
- lock(Collections.singletonList(key));
+ return lock(Collections.singletonList(key));
}
- public void lock(Collection<? extends K> keys) {
+ public boolean lock(Collection<? extends K> keys) {
if (keys == null || keys.isEmpty())
throw new IllegalArgumentException("Cannot lock empty list of keys");
LockControlCommand command = commandsFactory.buildLockControlCommand(keys, false);
- invoker.invoke(getInvocationContext(false), command);
+ return (Boolean) invoker.invoke(getInvocationContext(false), command);
}
@ManagedOperation(description = "Starts the cache.")
Modified: trunk/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/main/java/org/infinispan/commands/control/LockControlCommand.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -153,7 +153,7 @@
if (transaction == null) {
if (unlock) {
if (log.isTraceEnabled()) {
- log.trace("Unlock for in-existing transaction: " + globalTx + ". Not doing anything.");
+ log.trace("Unlock for non-existant transaction " + globalTx + ". Not doing anything.");
}
return null;
}
@@ -209,6 +209,7 @@
this.unlock = unlock;
}
+ @Override
public boolean equals(Object o) {
if (this == o)
return true;
@@ -221,6 +222,7 @@
return keys.equals(that.keys) && Util.safeEquals(singleKey, that.singleKey) && (unlock == that.unlock);
}
+ @Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (keys != null ? keys.hashCode() : 0);
Modified: trunk/core/src/main/java/org/infinispan/config/Configuration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/Configuration.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/main/java/org/infinispan/config/Configuration.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -926,7 +926,7 @@
@XmlAttribute
public void setEagerLockSingleNode(Boolean eagerLockSingleNode) {
- testImmutability("useEagerLocking");
+ testImmutability("eagerLockSingleNode");
this.eagerLockSingleNode = eagerLockSingleNode;
}
Modified: trunk/core/src/main/java/org/infinispan/interceptors/InvocationContextInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/InvocationContextInterceptor.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/main/java/org/infinispan/interceptors/InvocationContextInterceptor.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -24,8 +24,10 @@
import org.infinispan.CacheException;
import org.infinispan.commands.VisitableCommand;
+import org.infinispan.commands.control.LockControlCommand;
import org.infinispan.context.Flag;
import org.infinispan.context.InvocationContext;
+import org.infinispan.context.impl.TxInvocationContext;
import org.infinispan.factories.ComponentRegistry;
import org.infinispan.factories.annotations.Inject;
import org.infinispan.interceptors.base.CommandInterceptor;
@@ -56,6 +58,12 @@
return handleAll(ctx, command);
}
+ @Override
+ public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand lcc) throws Throwable {
+ Object retval = handleAll(ctx, lcc);
+ return retval == null ? false : retval;
+ }
+
private Object handleAll(InvocationContext ctx, VisitableCommand command) throws Throwable {
boolean suppressExceptions = false;
Modified: trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/main/java/org/infinispan/interceptors/LockingInterceptor.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -143,7 +143,7 @@
if (c.isUnlock()) {
lockManager.releaseLocks(ctx);
if (log.isTraceEnabled()) log.trace("Lock released for: " + ctx.getLockOwner());
- return null;
+ return false;
}
for (Object key : c.getKeys()) {
@@ -158,7 +158,9 @@
Object result = invokeNextInterceptor(ctx, c);
try {
lockKeysForRemoteTx(ctx, c);
+ result = true;
} catch (Throwable e) {
+ result = false;
//if anything happen during locking then unlock remote
c.setUnlock(true);
invokeNextInterceptor(ctx, c);
@@ -167,13 +169,16 @@
return result;
} else {
lockKeysForRemoteTx(ctx, c);
- if (shouldInvokeOnCluster || c.isExplicit())
- return invokeNextInterceptor(ctx, c);
- else
- return null;
+ if (shouldInvokeOnCluster || c.isExplicit()) {
+ invokeNextInterceptor(ctx, c);
+ return true;
+ } else {
+ return true;
+ }
}
} catch (Throwable te) {
- return cleanLocksAndRethrow(ctx, te);
+ cleanLocksAndRethrow(ctx, te);
+ return false;
} finally {
if (ctx.isInTxScope()) {
doAfterCall(ctx);
Modified: trunk/core/src/test/java/org/infinispan/atomic/AtomicMapFunctionalTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/atomic/AtomicMapFunctionalTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/atomic/AtomicMapFunctionalTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -6,6 +6,7 @@
import org.infinispan.context.InvocationContext;
import org.infinispan.context.InvocationContextContainer;
import org.infinispan.manager.CacheContainer;
+import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.AbstractInfinispanTest;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
@@ -23,7 +24,7 @@
private static final Log log = LogFactory.getLog(AtomicMapFunctionalTest.class);
Cache<String, Object> cache;
TransactionManager tm;
- private CacheContainer cm;
+ private EmbeddedCacheManager cm;
@BeforeMethod
@SuppressWarnings("unchecked")
Modified: trunk/core/src/test/java/org/infinispan/jmx/ComponentsJmxRegistrationTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/ComponentsJmxRegistrationTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/jmx/ComponentsJmxRegistrationTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -32,7 +32,7 @@
public class ComponentsJmxRegistrationTest extends AbstractInfinispanTest {
private MBeanServer mBeanServer;
- private List<CacheContainer> cacheContainers = new ArrayList<CacheContainer>();
+ private List<EmbeddedCacheManager> cacheContainers = new ArrayList<EmbeddedCacheManager>();
@BeforeMethod
public void setUp() {
@@ -43,9 +43,7 @@
@AfterMethod
public void tearDown() {
MBeanServerFactory.releaseMBeanServer(mBeanServer);
- for (CacheContainer cacheContainer : cacheContainers) {
- TestingUtil.killCacheManagers(cacheContainer);
- }
+ TestingUtil.killCacheManagers(cacheContainers);
cacheContainers.clear();
}
Copied: trunk/core/src/test/java/org/infinispan/lock/APITest.java (from rev 2472, branches/4.2.x/core/src/test/java/org/infinispan/lock/APITest.java)
===================================================================
--- trunk/core/src/test/java/org/infinispan/lock/APITest.java (rev 0)
+++ trunk/core/src/test/java/org/infinispan/lock/APITest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -0,0 +1,120 @@
+package org.infinispan.lock;
+
+import org.infinispan.Cache;
+import org.infinispan.config.Configuration;
+import org.infinispan.context.Flag;
+import org.infinispan.manager.CacheManager;
+import org.infinispan.manager.EmbeddedCacheManager;
+import org.infinispan.test.MultipleCacheManagersTest;
+import org.infinispan.test.fwk.CleanupAfterMethod;
+import org.infinispan.test.fwk.TestCacheManagerFactory;
+import org.infinispan.util.concurrent.TimeoutException;
+import org.testng.annotations.Test;
+
+import javax.transaction.NotSupportedException;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.infinispan.context.Flag.FAIL_SILENTLY;
+
+
+ at Test(testName = "lock.APITest", groups = "functional")
+ at CleanupAfterMethod
+public class APITest extends MultipleCacheManagersTest {
+ EmbeddedCacheManager cm1, cm2;
+
+ @Override
+ protected void createCacheManagers() throws Throwable {
+ Configuration cfg = getDefaultClusteredConfig(Configuration.CacheMode.REPL_SYNC, true);
+ cfg.setLockAcquisitionTimeout(100);
+ cm1 = TestCacheManagerFactory.createClusteredCacheManager(cfg);
+ cm2 = TestCacheManagerFactory.createClusteredCacheManager(cfg);
+ registerCacheManager(cm1, cm2);
+ cm1.getCache();
+ cm2.getCache();
+ }
+
+ public void testLockSuccess() throws SystemException, NotSupportedException {
+ Cache<String, String> cache1 = cache(0);
+
+ cache1.put("k", "v");
+ tm(0).begin();
+ assert cache1.getAdvancedCache().lock("k");
+ tm(0).rollback();
+ }
+
+ @Test (expectedExceptions = TimeoutException.class)
+ public void testLockFailure() throws SystemException, NotSupportedException {
+ Cache<String, String> cache1 = cache(0), cache2 = cache(1);
+
+ cache1.put("k", "v");
+ tm(1).begin();
+ cache2.put("k", "v2");
+ Transaction t = tm(1).suspend();
+
+ tm(0).begin();
+ cache1.getAdvancedCache().lock("k");
+ tm(0).rollback();
+ }
+
+ public void testSilentLockFailure() throws SystemException, NotSupportedException {
+ Cache<String, String> cache1 = cache(0), cache2 = cache(1);
+
+ cache1.put("k", "v");
+ tm(1).begin();
+ cache2.put("k", "v2");
+ Transaction t = tm(1).suspend();
+
+ tm(0).begin();
+ assert !cache1.getAdvancedCache().withFlags(FAIL_SILENTLY).lock("k");
+ tm(0).rollback();
+ }
+
+ public void testMultiLockSuccess() throws SystemException, NotSupportedException {
+ Cache<String, String> cache1 = cache(0);
+
+ cache1.put("k1", "v");
+ cache1.put("k2", "v");
+ cache1.put("k3", "v");
+
+ tm(0).begin();
+ assert cache1.getAdvancedCache().lock(Arrays.asList("k1", "k2", "k3"));
+ tm(0).rollback();
+ }
+
+ @Test (expectedExceptions = TimeoutException.class)
+ public void testMultiLockFailure() throws SystemException, NotSupportedException {
+ Cache<String, String> cache1 = cache(0), cache2 = cache(1);
+
+ cache1.put("k1", "v");
+ cache1.put("k2", "v");
+ cache1.put("k3", "v");
+
+ tm(1).begin();
+ cache2.put("k3", "v2");
+ Transaction t = tm(1).suspend();
+
+ tm(0).begin();
+ cache1.getAdvancedCache().lock(Arrays.asList("k1", "k2", "k3"));
+ tm(0).rollback();
+ }
+
+ public void testSilentMultiLockFailure() throws SystemException, NotSupportedException {
+ Cache<String, String> cache1 = cache(0), cache2 = cache(1);
+
+ cache1.put("k1", "v");
+ cache1.put("k2", "v");
+ cache1.put("k3", "v");
+
+ tm(1).begin();
+ cache2.put("k3", "v2");
+ Transaction t = tm(1).suspend();
+
+ tm(0).begin();
+ assert !cache1.getAdvancedCache().withFlags(FAIL_SILENTLY).lock(Arrays.asList("k1", "k2", "k3"));
+ tm(0).rollback();
+ }
+}
Modified: trunk/core/src/test/java/org/infinispan/notifications/AsyncNotificationTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/notifications/AsyncNotificationTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/notifications/AsyncNotificationTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -2,6 +2,7 @@
import org.infinispan.Cache;
import org.infinispan.manager.CacheContainer;
+import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.infinispan.notifications.cachelistener.annotation.CacheEntryCreated;
import org.infinispan.notifications.cachelistener.event.CacheEntryCreatedEvent;
@@ -16,7 +17,7 @@
@Test(groups = "functional", testName = "notifications.AsyncNotificationTest")
public class AsyncNotificationTest extends AbstractInfinispanTest {
Cache<String, String> c;
- CacheContainer cm;
+ EmbeddedCacheManager cm;
@BeforeMethod
public void setUp() {
Modified: trunk/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/profiling/DeadlockDetectionPerformanceTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -125,7 +125,7 @@
private void runDistributedTest() throws Exception {
EmbeddedCacheManager cm = null;
- List<CacheContainer> containers = new ArrayList<CacheContainer>();
+ List<EmbeddedCacheManager> containers = new ArrayList<EmbeddedCacheManager>();
try {
CountDownLatch startLatch = new CountDownLatch(1);
List<ExecutorThread> executorThreads = new ArrayList<ExecutorThread>();
Modified: trunk/core/src/test/java/org/infinispan/remoting/jgroups/ChannelLookupTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/remoting/jgroups/ChannelLookupTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/remoting/jgroups/ChannelLookupTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -4,6 +4,7 @@
import org.infinispan.config.GlobalConfiguration;
import org.infinispan.factories.GlobalComponentRegistry;
import org.infinispan.manager.CacheContainer;
+import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.remoting.transport.Transport;
import org.infinispan.remoting.transport.jgroups.JGroupsChannelLookup;
import org.infinispan.remoting.transport.jgroups.JGroupsTransport;
@@ -22,7 +23,7 @@
@Test(testName = "remoting.jgroups.ChannelLookupTest", groups = "functional")
public class ChannelLookupTest extends AbstractInfinispanTest {
public void channelLookupTest() {
- CacheContainer cm = null;
+ EmbeddedCacheManager cm = null;
try {
GlobalConfiguration gc = GlobalConfiguration.getClusteredDefault();
Properties p = new Properties();
Modified: trunk/core/src/test/java/org/infinispan/stress/PutIfAbsentStressTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/stress/PutIfAbsentStressTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/stress/PutIfAbsentStressTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -102,12 +102,12 @@
* Adapter to run the test on any configuration
*/
private void testConcurrentLockingOnMultipleManagers(Configuration cfg) throws IOException, InterruptedException {
- List<CacheContainer> cacheContainers = new ArrayList<CacheContainer>(NODES_NUM);
+ List<EmbeddedCacheManager> cacheContainers = new ArrayList<EmbeddedCacheManager>(NODES_NUM);
List<Cache<String, String>> caches = new ArrayList<Cache<String, String>>();
List<ConcurrentMap<String, String>> maps = new ArrayList<ConcurrentMap<String, String>>(NODES_NUM
* THREAD_PER_NODE);
for (int nodeNum = 0; nodeNum < NODES_NUM; nodeNum++) {
- CacheContainer cm = TestCacheManagerFactory.createClusteredCacheManager(cfg);
+ EmbeddedCacheManager cm = TestCacheManagerFactory.createClusteredCacheManager(cfg);
cacheContainers.add(cm);
Cache<String, String> cache = cm.getCache();
caches.add(cache);
@@ -119,13 +119,7 @@
try {
testConcurrentLocking(maps);
} finally {
- for (CacheContainer cm : cacheContainers) {
- try {
- TestingUtil.killCacheManagers(cm);
- } catch (Exception e) {
- // try cleaning up the other cacheManagers too
- }
- }
+ TestingUtil.killCacheManagers(cacheContainers);
}
}
Modified: trunk/core/src/test/java/org/infinispan/test/AbstractCacheTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/test/AbstractCacheTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/test/AbstractCacheTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -4,6 +4,8 @@
import org.infinispan.config.Configuration;
import org.infinispan.manager.CacheContainer;
import org.infinispan.manager.EmbeddedCacheManager;
+import org.infinispan.test.fwk.CleanupAfterMethod;
+import org.infinispan.test.fwk.CleanupAfterTest;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
@@ -26,6 +28,21 @@
protected CleanupPhase cleanup = CleanupPhase.AFTER_TEST;
+ protected boolean cleanupAfterTest() {
+ return getClass().getAnnotation(CleanupAfterTest.class) != null || (
+ getClass().getAnnotation(CleanupAfterMethod.class) == null &&
+ cleanup == CleanupPhase.AFTER_TEST
+ );
+ }
+
+ protected boolean cleanupAfterMethod() {
+ return getClass().getAnnotation(CleanupAfterMethod.class) != null || (
+ getClass().getAnnotation(CleanupAfterTest.class) == null &&
+ cleanup == CleanupPhase.AFTER_METHOD
+ );
+ }
+
+
/**
* use TestingUtil.clearContent(cacheManager);
*/
Modified: trunk/core/src/test/java/org/infinispan/test/MultipleCacheManagersTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/test/MultipleCacheManagersTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/test/MultipleCacheManagersTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -54,7 +54,7 @@
@BeforeClass (alwaysRun = true)
public void createBeforeClass() throws Throwable {
- if (cleanup == CleanupPhase.AFTER_TEST) callCreateCacheManagers();
+ if (cleanupAfterTest()) callCreateCacheManagers();
}
private void callCreateCacheManagers() throws Throwable {
@@ -69,19 +69,19 @@
@BeforeMethod
public void createBeforeMethod() throws Throwable {
- if (cleanup == CleanupPhase.AFTER_METHOD) callCreateCacheManagers();
+ if (cleanupAfterMethod()) callCreateCacheManagers();
}
@AfterClass(alwaysRun = true)
protected void destroy() {
- if (cleanup == CleanupPhase.AFTER_TEST) TestingUtil.killCacheManagers(cacheManagers);
+ if (cleanupAfterTest()) TestingUtil.killCacheManagers(cacheManagers);
cacheManagers.clear();
listeners.clear();
}
@AfterMethod(alwaysRun=true)
protected void clearContent() throws Throwable {
- if (cleanup == CleanupPhase.AFTER_TEST) {
+ if (cleanupAfterTest()) {
// assertSupportedConfig();
log.debug("*** Test method complete; clearing contents on all caches.");
if (cacheManagers.isEmpty())
@@ -260,7 +260,7 @@
/**
* Returns the default cache from that manager.
*/
- protected Cache cache(int index) {
+ protected <A, B> Cache<A, B> cache(int index) {
return manager(index).getCache();
}
Modified: trunk/core/src/test/java/org/infinispan/test/SingleCacheManagerTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/test/SingleCacheManagerTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/test/SingleCacheManagerTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -41,7 +41,7 @@
@BeforeClass()
protected void createBeforeClass() throws Exception {
try {
- if (cleanup == CleanupPhase.AFTER_TEST) setup();
+ if (cleanupAfterTest()) setup();
} catch (Exception e) {
log.error("Unexpected!", e);
throw e;
@@ -51,7 +51,7 @@
@BeforeMethod
protected void createBeforeMethod() throws Exception {
try {
- if (cleanup == CleanupPhase.AFTER_METHOD) setup();
+ if (cleanupAfterMethod()) setup();
} catch (Exception e) {
log.error("Unexpected!", e);
throw e;
@@ -61,7 +61,7 @@
@AfterClass(alwaysRun=true)
protected void destroyAfterClass() {
try {
- if (cleanup == CleanupPhase.AFTER_TEST) teardown();
+ if (cleanupAfterTest()) teardown();
} catch (Exception e) {
log.error("Unexpected!", e);
}
@@ -69,12 +69,12 @@
@AfterMethod(alwaysRun=true)
protected void destroyAfterMethod() {
- if (cleanup == CleanupPhase.AFTER_METHOD) teardown();
+ if (cleanupAfterMethod()) teardown();
}
@AfterMethod(alwaysRun=true)
protected void clearContent() {
- if (cleanup == CleanupPhase.AFTER_TEST) TestingUtil.clearContent(cacheManager);
+ if (cleanupAfterTest()) TestingUtil.clearContent(cacheManager);
}
protected Configuration getDefaultStandaloneConfig(boolean transactional) {
Modified: trunk/core/src/test/java/org/infinispan/test/TestingUtil.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/test/TestingUtil.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/test/TestingUtil.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -415,16 +415,24 @@
}
public static void killCacheManagers(CacheContainer... cacheContainers) {
+ EmbeddedCacheManager[] ecms = new EmbeddedCacheManager[cacheContainers.length];
+ int i=0;
+ for (CacheContainer cc: cacheContainers) ecms[i++] = (EmbeddedCacheManager) cc;
+ killCacheManagers(ecms);
+ }
+
+ public static void killCacheManagers(EmbeddedCacheManager... cacheContainers) {
if (cacheContainers != null) {
- for (CacheContainer cm : cacheContainers) {
+ for (EmbeddedCacheManager cm : cacheContainers) {
+ clearContent(cm);
if (cm != null)
cm.stop();
}
}
}
- public static void killCacheManagers(Collection<? extends CacheContainer> cacheManagers) {
- killCacheManagers(cacheManagers.toArray(new CacheContainer[cacheManagers.size()]));
+ public static void killCacheManagers(Collection<? extends EmbeddedCacheManager> cacheManagers) {
+ killCacheManagers(cacheManagers.toArray(new EmbeddedCacheManager[cacheManagers.size()]));
}
public static void clearContent(EmbeddedCacheManager cacheContainer) {
Copied: trunk/core/src/test/java/org/infinispan/test/fwk/CleanupAfterMethod.java (from rev 2472, branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/CleanupAfterMethod.java)
===================================================================
--- trunk/core/src/test/java/org/infinispan/test/fwk/CleanupAfterMethod.java (rev 0)
+++ trunk/core/src/test/java/org/infinispan/test/fwk/CleanupAfterMethod.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -0,0 +1,14 @@
+package org.infinispan.test.fwk;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Indicates that test cleanup happens after every test method.
+ *
+ * @author Manik Surtani
+ * @version 4.2
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface CleanupAfterMethod {
+}
Copied: trunk/core/src/test/java/org/infinispan/test/fwk/CleanupAfterTest.java (from rev 2472, branches/4.2.x/core/src/test/java/org/infinispan/test/fwk/CleanupAfterTest.java)
===================================================================
--- trunk/core/src/test/java/org/infinispan/test/fwk/CleanupAfterTest.java (rev 0)
+++ trunk/core/src/test/java/org/infinispan/test/fwk/CleanupAfterTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -0,0 +1,14 @@
+package org.infinispan.test.fwk;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Indicates that test cleanup happens after all test methods.
+ *
+ * @author Manik Surtani
+ * @version 4.2
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface CleanupAfterTest {
+}
Modified: trunk/core/src/test/java/org/infinispan/tx/OnePhaseXATest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/tx/OnePhaseXATest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/core/src/test/java/org/infinispan/tx/OnePhaseXATest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -4,6 +4,7 @@
import org.infinispan.config.Configuration;
import org.infinispan.config.GlobalConfiguration;
import org.infinispan.manager.CacheContainer;
+import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.AbstractInfinispanTest;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
@@ -18,7 +19,7 @@
@Test(groups = "functional", testName = "tx.OnePhaseXATest", description = "See ISPN-156 for details.", enabled = false)
public class OnePhaseXATest extends AbstractInfinispanTest {
private List<Cache> caches;
- private List<CacheContainer> cacheContainers;
+ private List<EmbeddedCacheManager> cacheContainers;
public static final int CACHES_NUM = 2;
public void testMultipleCaches() throws Exception {
@@ -45,7 +46,7 @@
@BeforeTest
public void setUp() throws Exception {
caches = new ArrayList<Cache>();
- cacheContainers = new ArrayList<CacheContainer>();
+ cacheContainers = new ArrayList<EmbeddedCacheManager>();
for (int i = 0; i < CACHES_NUM; i++) caches.add(getCache());
}
@@ -64,7 +65,7 @@
c.setLockAcquisitionTimeout(60000);
c.setUseLockStriping(false);
c.setSyncCommitPhase(true);
- CacheContainer container = TestCacheManagerFactory.createCacheManager(gc, c, true);
+ EmbeddedCacheManager container = TestCacheManagerFactory.createCacheManager(gc, c, true);
cacheContainers.add(container);
return container.getCache("TestCache");
}
Modified: trunk/query/src/test/java/org/infinispan/query/backend/QueryHelperTest.java
===================================================================
--- trunk/query/src/test/java/org/infinispan/query/backend/QueryHelperTest.java 2010-10-02 18:50:56 UTC (rev 2472)
+++ trunk/query/src/test/java/org/infinispan/query/backend/QueryHelperTest.java 2010-10-02 18:58:41 UTC (rev 2473)
@@ -25,6 +25,7 @@
import org.infinispan.CacheException;
import org.infinispan.config.Configuration;
import org.infinispan.manager.CacheContainer;
+import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.query.test.Person;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
@@ -45,7 +46,7 @@
@Test(groups = "unit")
public class QueryHelperTest {
Configuration cfg;
- List<CacheContainer> cacheContainers;
+ List<EmbeddedCacheManager> cacheContainers;
@BeforeMethod
public void setUp() {
@@ -53,7 +54,7 @@
cfg.setIndexingEnabled(true);
cfg.setIndexLocalOnly(true);
- cacheContainers = new LinkedList<CacheContainer>();
+ cacheContainers = new LinkedList<EmbeddedCacheManager>();
}
@AfterMethod
@@ -62,7 +63,7 @@
}
private Cache<?, ?> createCache(Configuration c) {
- CacheContainer cm = TestCacheManagerFactory.createCacheManager(c);
+ EmbeddedCacheManager cm = TestCacheManagerFactory.createCacheManager(c);
cacheContainers.add(cm);
return cm.getCache();
}
More information about the infinispan-commits
mailing list