[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