You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2016/01/19 16:00:11 UTC

svn commit: r1725541 - /jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKResetTest.java

Author: mreutegg
Date: Tue Jan 19 15:00:11 2016
New Revision: 1725541

URL: http://svn.apache.org/viewvc?rev=1725541&view=rev
Log:
OAK-3897: Branch reset does not revert all changes

Add ignored tests

Modified:
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKResetTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKResetTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKResetTest.java?rev=1725541&r1=1725540&r2=1725541&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKResetTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKResetTest.java Tue Jan 19 15:00:11 2016
@@ -16,8 +16,17 @@
  */
 package org.apache.jackrabbit.oak.plugins.document;
 
+import java.util.Map;
+
+import org.junit.Ignore;
 import org.junit.Test;
 
+import static org.apache.jackrabbit.oak.plugins.document.Collection.NODES;
+import static org.apache.jackrabbit.oak.plugins.document.NodeDocument.COLLISIONS;
+import static org.apache.jackrabbit.oak.plugins.document.util.Utils.getIdFromPath;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -121,4 +130,83 @@ public class DocumentMKResetTest extends
         assertPropExists(rev, "/foo", "p1");
         assertPropExists(rev, "/foo", "p2");
     }
+
+    @Ignore
+    @Test
+    public void resetToBaseOfBranch() {
+        addNodes(null, "/foo");
+        String b0 = mk.branch(null);
+        String b1 = addNodes(b0, "/foo/bar");
+        String b2 = mk.reset(b1, b0);
+        mk.merge(b2, null);
+        assertNodesNotExist(null, "/foo/bar");
+    }
+
+    @Ignore
+    @Test
+    public void resetRemovesCommitRootOnParent() {
+        DocumentStore store = mk.getDocumentStore();
+
+        addNodes(null, "/foo");
+        String b0 = mk.branch(null);
+        String b1 = addNodes(b0, "/foo/bar");
+
+        NodeDocument foo = store.find(NODES, getIdFromPath("/foo"));
+        assertNotNull(foo);
+        assertTrue(foo.getLocalCommitRoot().containsKey(
+                Revision.fromString(b1).asTrunkRevision()));
+
+        addNodes(null, "/foo/bar");
+
+        mk.reset(b1, b0);
+
+        // reset must also remove _commitRoot entry on parent document
+        foo = store.find(NODES, getIdFromPath("/foo"));
+        assertNotNull(foo);
+        assertFalse(foo.getLocalCommitRoot().containsKey(
+                Revision.fromString(b1).asTrunkRevision()));
+    }
+
+    @Ignore
+    @Test
+    public void resetMultipleCommits() {
+        DocumentStore store = mk.getDocumentStore();
+
+        addNodes(null, "/foo");
+        String b0 = mk.branch(null);
+        String b1 = mk.commit("", "^\"/foo/p1\":1", b0, null);
+        String b2 = mk.commit("", "^\"/foo/p2\":1", b1, null);
+        String b3 = mk.commit("", "^\"/foo/p3\":1", b2, null);
+        // will mark conflict on b2 and b3
+        mk.commit("", "^\"/foo/p2\":1^\"/foo/p3\":1", null, null);
+
+        // check collision markers
+        NodeDocument rootDoc = store.find(NODES, getIdFromPath("/"));
+        assertNotNull(rootDoc);
+        Map<Revision, String> collisions = rootDoc.getValueMap(COLLISIONS);
+        assertEquals(2, collisions.size());
+        assertTrue(collisions.containsKey(Revision.fromString(b2).asTrunkRevision()));
+        assertTrue(collisions.containsKey(Revision.fromString(b3).asTrunkRevision()));
+
+        try {
+            mk.merge(b3, null);
+            fail("merge with conflict must fail");
+        } catch (DocumentStoreException e) {
+            // expected
+        }
+        String b4 = mk.reset(b3, b1);
+        String b5 = mk.commit("", "^\"/foo/p4\":1", b4, null);
+
+        rootDoc = store.find(NODES, getIdFromPath("/"));
+        assertNotNull(rootDoc);
+        collisions = rootDoc.getValueMap(COLLISIONS);
+        assertEquals(0, collisions.size());
+
+        String rev = mk.merge(b5, null);
+
+        assertPropExists(rev, "/foo", "p1");
+        assertPropExists(rev, "/foo", "p2");
+        assertPropExists(rev, "/foo", "p3");
+        assertPropExists(rev, "/foo", "p4");
+    }
 }