[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