[jboss-cvs] JBossCache/tests/functional/org/jboss/cache/optimistic ...
Manik Surtani
manik at jboss.org
Wed Mar 7 17:46:29 EST 2007
User: msurtani
Date: 07/03/07 17:46:29
Modified: tests/functional/org/jboss/cache/optimistic Tag:
Branch_JBossCache_1_4_0
NodeInterceptorRemoveNodeTest.java
Added: tests/functional/org/jboss/cache/optimistic Tag:
Branch_JBossCache_1_4_0 ParentVersionTest.java
LockParentVersionTest.java
Log:
JBCACHE-961 - more sophisticated merging of child maps in workspace nodes backported to 1.4.x
Revision Changes Path
No revision
No revision
1.8.4.1 +9 -4 JBossCache/tests/functional/org/jboss/cache/optimistic/NodeInterceptorRemoveNodeTest.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: NodeInterceptorRemoveNodeTest.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/tests/functional/org/jboss/cache/optimistic/NodeInterceptorRemoveNodeTest.java,v
retrieving revision 1.8
retrieving revision 1.8.4.1
diff -u -b -r1.8 -r1.8.4.1
--- NodeInterceptorRemoveNodeTest.java 21 Feb 2006 22:52:40 -0000 1.8
+++ NodeInterceptorRemoveNodeTest.java 7 Mar 2007 22:46:29 -0000 1.8.4.1
@@ -16,6 +16,7 @@
import javax.transaction.Transaction;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
/**
* @author xenephon
@@ -135,7 +136,8 @@
assertEquals(true, workspace.getNode(Fqn.fromString("/one/two")).isDeleted());
assertNotNull(workspace.getNode(Fqn.fromString("/one")));
assertEquals(false, workspace.getNode(Fqn.fromString("/one")).isDeleted());
- assertEquals(0, workspace.getNode(Fqn.fromString("/one")).getMergedChildren().size());
+ assertEquals(0, ((Set) workspace.getNode(Fqn.fromString("/one")).getMergedChildren().get(0)).size());
+ assertEquals(1, ((Set) workspace.getNode(Fqn.fromString("/one")).getMergedChildren().get(1)).size());
assertEquals(null, workspace.getNode(Fqn.fromString("/one")).getChild(Fqn.fromString("/one/two")));
assertTrue(entry.getLocks().isEmpty());
assertEquals(2, entry.getModifications().size());
@@ -196,7 +198,8 @@
assertEquals(true, workspace.getNode(Fqn.fromString("/one/two")).isDeleted());
assertNotNull(workspace.getNode(Fqn.fromString("/one")));
assertEquals(true, workspace.getNode(Fqn.fromString("/one")).isDeleted());
- assertEquals(1, workspace.getNode(Fqn.fromString("/one")).getMergedChildren().size());
+ assertEquals(1, ((Set) workspace.getNode(Fqn.fromString("/one")).getMergedChildren().get(0)).size());
+ assertEquals(0, ((Set) workspace.getNode(Fqn.fromString("/one")).getMergedChildren().get(1)).size());
assertNotNull(workspace.getNode(Fqn.fromString("/one")).getChild("two"));
assertEquals(null, workspace.getNode(Fqn.fromString("/")).getChild(Fqn.fromString("/one")));
assertTrue(entry.getLocks().isEmpty());
@@ -505,7 +508,8 @@
WorkspaceNode one = workspace.getNode(Fqn.fromString("/one"));
- assertEquals(1, one.getMergedChildren().size());
+ assertEquals(1, ((Set) one.getMergedChildren().get(0)).size());
+ assertEquals(0, ((Set) one.getMergedChildren().get(1)).size());
cache.remove("/one/two");
@@ -523,7 +527,8 @@
mgr.commit();
- assertEquals(0, workspace.getNode(Fqn.fromString("/one")).getMergedChildren().size());
+ assertEquals(0, ((Set) workspace.getNode(Fqn.fromString("/one")).getMergedChildren().get(0)).size());
+ assertEquals(1, ((Set) workspace.getNode(Fqn.fromString("/one")).getMergedChildren().get(1)).size());
//assert what should be the results of our call
assertEquals(3, workspace.getNodes().size());
No revision
No revision
1.1.2.2 +209 -0 JBossCache/tests/functional/org/jboss/cache/optimistic/ParentVersionTest.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ParentVersionTest.java
===================================================================
RCS file: ParentVersionTest.java
diff -N ParentVersionTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ParentVersionTest.java 7 Mar 2007 22:46:29 -0000 1.1.2.2
@@ -0,0 +1,209 @@
+package org.jboss.cache.optimistic;
+
+import org.jboss.cache.Fqn;
+import org.jboss.cache.Node;
+import org.jboss.cache.TreeCache;
+import org.jboss.cache.OptimisticTreeNode;
+
+import javax.transaction.TransactionManager;
+
+/**
+ * @author <a href="mailto:manik at jboss.org">Manik Surtani</a>
+ */
+public class ParentVersionTest extends AbstractOptimisticTestCase
+{
+ private TreeCache cache;
+ private TransactionManager tm;
+
+ protected boolean lockParentForChildInsertRemove = false; // the default
+ private Fqn parent = Fqn.fromString("/parent");
+ private Fqn child1 = Fqn.fromString("/parent/child1");
+ private Fqn child2 = Fqn.fromString("/parent/child2");
+ private Fqn deepchild = Fqn.fromString("/parent/deep/child");
+
+ public ParentVersionTest(String name)
+ {
+ super(name);
+ }
+
+ protected void setUp() throws Exception
+ {
+ if (lockParentForChildInsertRemove)
+ {
+ cache = createCacheUnstarted();
+ cache.setLockParentForChildInsertRemove(true);
+ cache.start();
+ }
+ else
+ cache = createCache();
+
+ tm = cache.getTransactionManager();
+ }
+
+ protected void tearDown()
+ {
+ destroyCache(cache);
+ }
+
+ private long getVersion(Node n)
+ {
+ return ((DefaultDataVersion) ((OptimisticTreeNode) n).getVersion()).getRawVersion();
+ }
+
+ public void testSimpleAdd() throws Exception
+ {
+ cache.put(parent, "k", "v");
+ long parentVersion = getVersion(cache.get(parent));
+ cache.put(child1, "k", "v");
+
+ if (lockParentForChildInsertRemove)
+ assertEquals(parentVersion + 1, getVersion(cache.get(parent)));
+ else
+ assertEquals(parentVersion, getVersion(cache.get(parent)));
+
+ assertTrue(cache.exists(parent));
+ assertTrue(cache.exists(child1));
+ }
+
+ public void testSimpleRemove() throws Exception
+ {
+ cache.put(parent, "k", "v");
+ cache.put(child1, "k", "v");
+ assertTrue(cache.exists(parent));
+ assertTrue(cache.exists(child1));
+
+ long parentVersion = getVersion(cache.get(parent));
+
+ cache.remove(child1);
+
+ if (lockParentForChildInsertRemove)
+ assertEquals(parentVersion + 1, getVersion(cache.get(parent)));
+ else
+ assertEquals(parentVersion, getVersion(cache.get(parent)));
+
+ assertTrue(cache.exists(parent));
+ assertFalse("Should have removed child1", cache.exists(child1));
+ }
+
+ public void testAddAndRemove() throws Exception
+ {
+ cache.put(parent, "k", "v");
+ cache.put(child1, "k", "v");
+
+ assertTrue(cache.exists(parent));
+ assertTrue(cache.exists(child1));
+ assertFalse(cache.exists(child2));
+
+ long parentVersion = getVersion(cache.get(parent));
+
+ tm.begin();
+ cache.put(child2, "k", "v");
+ cache.remove(child1);
+ tm.commit();
+
+ if (lockParentForChildInsertRemove)
+ assertEquals(parentVersion + 1, getVersion(cache.get(parent)));
+ else
+ assertEquals(parentVersion, getVersion(cache.get(parent)));
+
+ assertTrue(cache.exists(parent));
+ assertFalse("Should have removed child1", cache.exists(child1));
+ assertTrue(cache.exists(child2));
+ }
+
+ public void testAddAndRemoveOverlap() throws Exception
+ {
+ cache.put(parent, "k", "v");
+ cache.put(child1, "k", "v");
+
+ assertTrue(cache.exists(parent));
+ assertTrue(cache.exists(child1));
+ assertFalse(cache.exists(child2));
+
+ long parentVersion = getVersion(cache.get(parent));
+
+ tm.begin();
+ cache.put(child2, "k", "v");
+ cache.remove(child1);
+ cache.remove(child2);
+ cache.remove(child1);
+ cache.put(child1, "k", "v");
+ cache.remove(child1);
+ cache.remove(child2);
+ cache.put(child2, "k", "v");
+ tm.commit();
+
+ if (lockParentForChildInsertRemove)
+ assertEquals(parentVersion + 1, getVersion(cache.get(parent)));
+ else
+ assertEquals(parentVersion, getVersion(cache.get(parent)));
+
+ assertTrue(cache.exists(parent));
+ assertFalse("Should have removed child1", cache.exists(child1));
+ assertTrue(cache.exists(child2));
+ }
+
+ public void testRemoveAndAdd() throws Exception
+ {
+ cache.put(parent, "k", "v");
+ cache.put(child1, "k", "v");
+
+ assertTrue(cache.exists(parent));
+ assertTrue(cache.exists(child1));
+ assertFalse(cache.exists(child2));
+
+ long parentVersion = getVersion(cache.get(parent));
+
+ tm.begin();
+ cache.remove(child1);
+ cache.put(child2, "k", "v");
+ tm.commit();
+
+ if (lockParentForChildInsertRemove)
+ assertEquals(parentVersion + 1, getVersion(cache.get(parent)));
+ else
+ assertEquals(parentVersion, getVersion(cache.get(parent)));
+
+ assertTrue(cache.exists(parent));
+ assertFalse("Should have removed child1", cache.exists(child1));
+ assertTrue(cache.exists(child2));
+ }
+
+ public void testDeepRemove() throws Exception
+ {
+ cache.put(parent, "k", "v");
+ cache.put(deepchild, "k", "v");
+
+ assertTrue(cache.exists(parent));
+ assertTrue(cache.exists(deepchild));
+
+ long parentVersion = getVersion(cache.get(parent));
+
+ cache.remove(deepchild);
+
+ assertEquals(parentVersion, getVersion(cache.get(parent)));
+
+ assertTrue(cache.exists(parent));
+ assertFalse("Should have removed deepchild", cache.exists(deepchild));
+ }
+
+ public void testDeepAdd() throws Exception
+ {
+ cache.put(parent, "k", "v");
+
+ assertTrue(cache.exists(parent));
+ assertFalse(cache.exists(deepchild));
+
+ long parentVersion = getVersion(cache.get(parent));
+
+ cache.put(deepchild, "k", "v");
+
+ if (lockParentForChildInsertRemove)
+ assertEquals(parentVersion + 1, getVersion(cache.get(parent)));
+ else
+ assertEquals(parentVersion, getVersion(cache.get(parent)));
+
+ assertTrue(cache.exists(parent));
+ assertTrue(cache.exists(deepchild));
+ }
+}
1.1.2.2 +13 -0 JBossCache/tests/functional/org/jboss/cache/optimistic/LockParentVersionTest.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: LockParentVersionTest.java
===================================================================
RCS file: LockParentVersionTest.java
diff -N LockParentVersionTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ LockParentVersionTest.java 7 Mar 2007 22:46:29 -0000 1.1.2.2
@@ -0,0 +1,13 @@
+package org.jboss.cache.optimistic;
+
+/**
+ * @author <a href="mailto:manik at jboss.org">Manik Surtani</a>
+ */
+public class LockParentVersionTest extends ParentVersionTest
+{
+ public LockParentVersionTest(String name)
+ {
+ super(name);
+ lockParentForChildInsertRemove = true;
+ }
+}
More information about the jboss-cvs-commits
mailing list