[infinispan-commits] Infinispan SVN: r165 - trunk/core/src/test/java/org/infinispan/test.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Fri Apr 24 09:02:44 EDT 2009


Author: manik.surtani at jboss.com
Date: 2009-04-24 09:02:44 -0400 (Fri, 24 Apr 2009)
New Revision: 165

Modified:
   trunk/core/src/test/java/org/infinispan/test/ReplListener.java
Log:
More enhancements to ReplListener

Modified: trunk/core/src/test/java/org/infinispan/test/ReplListener.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/test/ReplListener.java	2009-04-23 18:06:06 UTC (rev 164)
+++ trunk/core/src/test/java/org/infinispan/test/ReplListener.java	2009-04-24 13:02:44 UTC (rev 165)
@@ -9,8 +9,8 @@
 import org.infinispan.interceptors.base.CommandInterceptor;
 
 import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.LinkedList;
+import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
@@ -22,11 +22,11 @@
  */
 public class ReplListener {
    Cache<?, ?> c;
-   volatile Set<Class<? extends VisitableCommand>> expectedCommands;
-   Set<Class<? extends VisitableCommand>> eagerCommands = new HashSet<Class<? extends VisitableCommand>>();
+   volatile List<Class<? extends VisitableCommand>> expectedCommands;
+   List<Class<? extends VisitableCommand>> eagerCommands = new LinkedList<Class<? extends VisitableCommand>>();
    boolean recordCommandsEagerly;
    boolean watchLocal;
-   Lock eagerCommandsLock = new ReentrantLock();
+   final Lock expectationSetupLock = new ReentrantLock();
    CountDownLatch latch = new CountDownLatch(1);
    volatile boolean sawAtLeastOneInvocation = false;
    boolean expectAny = false;
@@ -111,20 +111,20 @@
     * @param expectedCommands commands to expect
     */
    public void expect(Class<? extends VisitableCommand>... expectedCommands) {
-      if (this.expectedCommands == null) {
-         this.expectedCommands = new HashSet<Class<? extends VisitableCommand>>();
-      }
-      this.expectedCommands.addAll(Arrays.asList(expectedCommands));
+      expectationSetupLock.lock();
+      try {
+         if (this.expectedCommands == null) {
+            this.expectedCommands = new LinkedList<Class<? extends VisitableCommand>>();
+         }
+         this.expectedCommands.addAll(Arrays.asList(expectedCommands));
 
-      if (recordCommandsEagerly) {
-         eagerCommandsLock.lock();
-         try {
+         if (recordCommandsEagerly) {
             this.expectedCommands.removeAll(eagerCommands);
             if (!eagerCommands.isEmpty()) sawAtLeastOneInvocation = true;
             eagerCommands.clear();
-         } finally {
-            eagerCommandsLock.unlock();
          }
+      } finally {
+         expectationSetupLock.unlock();
       }
    }
 
@@ -183,20 +183,18 @@
       }
 
       private void markAsVisited(VisitableCommand cmd) {
-         System.out.println("Cache [" + c + "] saw command " + cmd);
-         if (expectedCommands != null) {
-            expectedCommands.remove(cmd.getClass());
-            sawAtLeastOneInvocation = true;
-            if (expectedCommands.isEmpty()) latch.countDown();
-         } else {
-            if (recordCommandsEagerly) {
-               eagerCommandsLock.lock();
-               try {
-                  eagerCommands.add(cmd.getClass());
-               } finally {
-                  eagerCommandsLock.unlock();
-               }
+         expectationSetupLock.lock();
+         try {
+            log.fatal("Cache [" + c + "] saw command " + cmd);
+            if (expectedCommands != null) {
+               expectedCommands.remove(cmd.getClass());
+               sawAtLeastOneInvocation = true;
+               if (expectedCommands.isEmpty()) latch.countDown();
+            } else {
+               if (recordCommandsEagerly) eagerCommands.add(cmd.getClass());
             }
+         } finally {
+            expectationSetupLock.unlock();
          }
       }
    }




More information about the infinispan-commits mailing list