[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