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 2013/03/20 13:59:17 UTC

svn commit: r1458815 - /jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java

Author: mreutegg
Date: Wed Mar 20 12:59:16 2013
New Revision: 1458815

URL: http://svn.apache.org/r1458815
Log:
OAK-619 Lock-free MongoMK implementation
- add test for commit root annotation

Modified:
    jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java

Modified: jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java?rev=1458815&r1=1458814&r2=1458815&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java Wed Mar 20 12:59:16 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.mongomk.prototype;
 
+import java.util.Map;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
@@ -303,6 +305,47 @@ public class SimpleTest {
         assertTrue(mk.nodeExists("/root/c/b", head));
     }
 
+    @Test
+    public void commitRoot() {
+        MongoMK mk = createMK();
+        try {
+            DocumentStore store = mk.getDocumentStore();
+            String head = mk.getHeadRevision();
+            head = mk.commit("", "+\"/test\":{\"foo\":{}}", head, null);
+
+            // root node must not have the revision
+            Map<String, Object> rootNode = store.find(Collection.NODES, "0:/");
+            assertFalse(((Map) rootNode.get(UpdateOp.REVISIONS)).containsKey(head));
+
+            // test node must have head in revisions
+            Map<String, Object> node = store.find(Collection.NODES, "1:/test");
+            assertTrue(((Map) node.get(UpdateOp.REVISIONS)).containsKey(head));
+
+            // foo must not have head in revisions and must refer to test
+            // as commit root (depth = 1)
+            Map<String, Object> foo = store.find(Collection.NODES, "2:/test/foo");
+            assertTrue(foo.get(UpdateOp.REVISIONS) == null);
+            assertEquals(1, ((Map) foo.get(UpdateOp.COMMIT_ROOT)).get(head));
+
+            head = mk.commit("", "+\"/bar\":{}+\"/test/foo/bar\":{}", head, null);
+
+            // root node is root of commit
+            rootNode = store.find(Collection.NODES, "0:/");
+            assertTrue(((Map) rootNode.get(UpdateOp.REVISIONS)).containsKey(head));
+
+            // /bar refers to root nodes a commit root
+            Map<String, Object> bar = store.find(Collection.NODES, "1:/bar");
+            assertEquals(0, ((Map) bar.get(UpdateOp.COMMIT_ROOT)).get(head));
+
+            // /test/foo/bar refers to root nodes a commit root
+            bar = store.find(Collection.NODES, "3:/test/foo/bar");
+            assertEquals(0, ((Map) bar.get(UpdateOp.COMMIT_ROOT)).get(head));
+
+        } finally {
+            mk.dispose();
+        }
+    }
+
     private static MongoMK createMK() {
         if (MONGO_DB) {
             DB db = MongoUtils.getConnection().getDB();