[infinispan-commits] Infinispan SVN: r605 - in trunk/core/src: main/java/org/infinispan/commands/write and 2 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Wed Jul 22 07:20:45 EDT 2009


Author: manik.surtani at jboss.com
Date: 2009-07-22 07:20:44 -0400 (Wed, 22 Jul 2009)
New Revision: 605

Added:
   trunk/core/src/test/java/org/infinispan/commands/
   trunk/core/src/test/java/org/infinispan/commands/CommandIdUniquenessTest.java
Modified:
   trunk/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java
   trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java
   trunk/core/src/main/java/org/infinispan/commands/write/EvictCommand.java
Log:
Added command id uniqueness and sequence unit test

Modified: trunk/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java	2009-07-22 11:07:15 UTC (rev 604)
+++ trunk/core/src/main/java/org/infinispan/commands/read/EntrySetCommand.java	2009-07-22 11:20:44 UTC (rev 605)
@@ -21,27 +21,31 @@
  */
 package org.infinispan.commands.read;
 
-import java.util.Set;
-
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.util.Immutables;
 
+import java.util.Set;
+
 /**
  * EntrySetCommand.
- * 
+ *
  * @author Galder Zamarreño
  * @since 4.0
  */
 public class EntrySetCommand implements VisitableCommand {
    private final DataContainer container;
 
+   public EntrySetCommand() {
+      container = null;
+   }
+
    public EntrySetCommand(DataContainer container) {
       this.container = container;
    }
-   
+
    public Object acceptVisitor(InvocationContext ctx, Visitor visitor) throws Throwable {
       return visitor.visitEntrySetCommand(ctx, this);
    }
@@ -66,6 +70,6 @@
    public String toString() {
       return "EntrySetCommand{" +
             "set=" + container.entrySet() +
-            '}';   
+            '}';
    }
 }

Modified: trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2009-07-22 11:07:15 UTC (rev 604)
+++ trunk/core/src/main/java/org/infinispan/commands/read/KeySetCommand.java	2009-07-22 11:20:44 UTC (rev 605)
@@ -21,23 +21,27 @@
  */
 package org.infinispan.commands.read;
 
-import java.util.Set;
-
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.util.Immutables;
 
+import java.util.Set;
+
 /**
  * KeySetCommand.
- * 
+ *
  * @author Galder Zamarreño
  * @since 4.0
  */
 public class KeySetCommand implements VisitableCommand {
    private final DataContainer container;
-   
+
+   public KeySetCommand() {
+      container = null;
+   }
+
    public KeySetCommand(DataContainer container) {
       this.container = container;
    }
@@ -59,14 +63,14 @@
    }
 
    public void setParameters(int commandId, Object[] parameters) {
-       // no-op
+      // no-op
    }
 
    @Override
    public String toString() {
       return "KeySetCommand{" +
             "set=" + container.keySet() +
-            '}';   
+            '}';
    }
-   
+
 }

Modified: trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2009-07-22 11:07:15 UTC (rev 604)
+++ trunk/core/src/main/java/org/infinispan/commands/read/SizeCommand.java	2009-07-22 11:20:44 UTC (rev 605)
@@ -35,6 +35,9 @@
 public class SizeCommand implements VisitableCommand {
    private DataContainer container;
 
+   public SizeCommand() {
+   }
+
    public SizeCommand(DataContainer container) {
       this.container = container;
    }

Modified: trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java	2009-07-22 11:07:15 UTC (rev 604)
+++ trunk/core/src/main/java/org/infinispan/commands/read/ValuesCommand.java	2009-07-22 11:20:44 UTC (rev 605)
@@ -21,23 +21,27 @@
  */
 package org.infinispan.commands.read;
 
-import java.util.Collection;
-
 import org.infinispan.commands.VisitableCommand;
 import org.infinispan.commands.Visitor;
 import org.infinispan.container.DataContainer;
 import org.infinispan.context.InvocationContext;
 import org.infinispan.util.Immutables;
 
+import java.util.Collection;
+
 /**
  * ValuesCommand.
- * 
+ *
  * @author Galder Zamarreño
  * @since 4.0
  */
 public class ValuesCommand implements VisitableCommand {
    private final DataContainer container;
-   
+
+   public ValuesCommand() {
+      container = null;
+   }
+
    public ValuesCommand(DataContainer container) {
       this.container = container;
    }
@@ -61,12 +65,12 @@
    public void setParameters(int commandId, Object[] parameters) {
       // no-op
    }
-   
+
    @Override
    public String toString() {
       return "ValuesCommand{" +
             "values=" + container.values() +
-            '}';   
+            '}';
    }
 
 }

Modified: trunk/core/src/main/java/org/infinispan/commands/write/EvictCommand.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/commands/write/EvictCommand.java	2009-07-22 11:07:15 UTC (rev 604)
+++ trunk/core/src/main/java/org/infinispan/commands/write/EvictCommand.java	2009-07-22 11:20:44 UTC (rev 605)
@@ -35,6 +35,9 @@
 @Marshallable(externalizer = ReplicableCommandExternalizer.class, id = Ids.EVICT_COMMAND)
 public class EvictCommand extends RemoveCommand {
 
+   public EvictCommand() {
+   }
+
    public EvictCommand(Object key, CacheNotifier notifier) {
       this.key = key;
       this.notifier = notifier;

Added: trunk/core/src/test/java/org/infinispan/commands/CommandIdUniquenessTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/commands/CommandIdUniquenessTest.java	                        (rev 0)
+++ trunk/core/src/test/java/org/infinispan/commands/CommandIdUniquenessTest.java	2009-07-22 11:20:44 UTC (rev 605)
@@ -0,0 +1,44 @@
+package org.infinispan.commands;
+
+import org.infinispan.util.ClassFinder;
+import org.testng.annotations.Test;
+
+import java.lang.reflect.Modifier;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+ at Test
+public class CommandIdUniquenessTest {
+   public void testCommandIdUniqueness() throws Exception {
+      List<Class<?>> commands = ClassFinder.isAssignableFrom(ReplicableCommand.class);
+      SortedMap<Byte, String> cmdIds = new TreeMap<Byte, String>();
+      Set<String> nonReplicableCommands = new HashSet<String>();
+
+      for (Class<?> c : commands) {
+         if (!c.isInterface() && !Modifier.isAbstract(c.getModifiers())) {
+            System.out.println("Testing " + c.getSimpleName());
+            ReplicableCommand cmd = (ReplicableCommand) c.newInstance();
+            byte b = cmd.getCommandId();
+            assert !cmdIds.containsKey(b) : "Command ID [" + b + "] is duplicated in " + c.getSimpleName() + " and " + cmdIds.get(b);
+            if (b <= 0)
+               nonReplicableCommands.add(c.getSimpleName());
+            else
+               cmdIds.put(b, c.getSimpleName());
+         }
+      }
+
+      // check for gaps.  First ID should be 1.
+      int i = 0;
+      for (Map.Entry<Byte, String> e : cmdIds.entrySet()) {
+         i++;
+         assert e.getKey() == i : "Expected ID " + i + " for command " + e.getValue() + " but was " + e.getKey();
+      }
+
+      System.out.println("Non-replicable commands: " + nonReplicableCommands);
+      System.out.println("Next available ID is " + (i + 1));
+   }
+}


Property changes on: trunk/core/src/test/java/org/infinispan/commands/CommandIdUniquenessTest.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF



More information about the infinispan-commits mailing list