Return-Path: X-Original-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Delivered-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 374A510714 for ; Tue, 9 Jul 2013 11:31:57 +0000 (UTC) Received: (qmail 62717 invoked by uid 500); 9 Jul 2013 11:31:57 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 62654 invoked by uid 500); 9 Jul 2013 11:31:53 -0000 Mailing-List: contact oak-commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: oak-dev@jackrabbit.apache.org Delivered-To: mailing list oak-commits@jackrabbit.apache.org Received: (qmail 62618 invoked by uid 99); 9 Jul 2013 11:31:52 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Jul 2013 11:31:52 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Jul 2013 11:31:48 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 3FCD3238897A; Tue, 9 Jul 2013 11:31:27 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1501203 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/mongomk/ test/java/org/apache/jackrabbit/oak/plugins/mongomk/ Date: Tue, 09 Jul 2013 11:31:27 -0000 To: oak-commits@jackrabbit.apache.org From: mreutegg@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130709113127.3FCD3238897A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mreutegg Date: Tue Jul 9 11:31:26 2013 New Revision: 1501203 URL: http://svn.apache.org/r1501203 Log: OAK-619 Lock-free MongoMK implementation - Enable some rebase tests Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKRebaseTest.java jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKTestBase.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java?rev=1501203&r1=1501202&r2=1501203&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java Tue Jul 9 11:31:26 2013 @@ -1471,16 +1471,22 @@ public class MongoMK implements MicroKer @Override @Nonnull - public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) + public String rebase(@Nonnull String branchRevisionId, + @Nullable String newBaseRevisionId) throws MicroKernelException { + // TODO conflict handling Revision r = Revision.fromString(stripBranchRevMarker(branchRevisionId)); + Revision base = newBaseRevisionId != null ? + Revision.fromString(newBaseRevisionId) : + headRevision; Branch b = branches.getBranch(r); if (b == null) { - throw new MicroKernelException(branchRevisionId - + " is not a valid branch revision"); + // empty branch + return "b" + base.toString(); + } + if (b.getBase().equals(base)) { + return branchRevisionId; } - // TODO conflict handling - Revision base = Revision.fromString(newBaseRevisionId); b.setBase(base); // add a pseudo commit to make sure current head of branch // has a higher revision than base of branch Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKRebaseTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKRebaseTest.java?rev=1501203&r1=1501202&r2=1501203&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKRebaseTest.java (original) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKRebaseTest.java Tue Jul 9 11:31:26 2013 @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.plugins.mongomk; +import org.json.simple.JSONObject; import org.junit.Ignore; import org.junit.Test; @@ -28,7 +29,6 @@ import static org.junit.Assert.assertTru * Tests for {@code MicroKernel#rebase} * FIXME: this is copied from MicroKernelImplTest. Factor out. */ -@Ignore public class MongoMKRebaseTest extends BaseMongoMKTest { @Test @@ -47,20 +47,22 @@ public class MongoMKRebaseTest extends B } @Test - @Ignore public void rebaseEmptyBranch() { String branch = mk.branch(null); String trunk = mk.commit("", "+\"/a\":{}", null, null); String rebased = mk.rebase(branch, null); - assertEquals("{\":childNodeCount\":1,\"a\":{}}", mk.getNodes("/", rebased, 0, 0, -1, null)); - assertEquals("{\":childNodeCount\":1,\"a\":{}}", mk.getNodes("/", null, 0, 0, -1, null)); + JSONObject json = parseJSONObject(mk.getNodes("/", rebased, 0, 0, -1, null)); + assertPropertyValue(json, ":childNodeCount", 1L); + assertNotNull(json.get("a")); + json = parseJSONObject(mk.getNodes("/", null, 0, 0, -1, null)); + assertPropertyValue(json, ":childNodeCount", 1L); + assertNotNull(json.get("a")); assertEquals(trunk, mk.getHeadRevision()); assertFalse(trunk.equals(rebased)); } @Test - @Ignore public void rebaseAddNode() { mk.commit("", "+\"/x\":{}", null, null); String branch = mk.branch(null); @@ -68,19 +70,18 @@ public class MongoMKRebaseTest extends B mk.commit("", "+\"/x/a\":{}", null, null); String rebased = mk.rebase(branch, null); - assertEquals(1, mk.getChildNodeCount("/x", null)); + assertChildNodeCount("/x", null, 1); assertNotNull(mk.getNodes("/x/a", null, 0, 0, -1, null)); - assertEquals(1, mk.getChildNodeCount("/x", branch)); + assertChildNodeCount("/x", branch, 1); assertNotNull(mk.getNodes("/x/b", branch, 0, 0, -1, null)); - assertEquals(2, mk.getChildNodeCount("/x", rebased)); + assertChildNodeCount("/x", rebased, 2); assertNotNull(mk.getNodes("/x/a", rebased, 0, 0, -1, null)); assertNotNull(mk.getNodes("/x/b", rebased, 0, 0, -1, null)); } @Test - @Ignore public void rebaseRemoveNode() { mk.commit("", "+\"/x\":{\"y\":{}}", null, null); String branch = mk.branch(null); @@ -88,18 +89,18 @@ public class MongoMKRebaseTest extends B mk.commit("", "+\"/x/a\":{}", null, null); String rebased = mk.rebase(branch, null); - assertEquals(2, mk.getChildNodeCount("/x", null)); + assertChildNodeCount("/x", null, 2); assertNotNull(mk.getNodes("/x/a", null, 0, 0, -1, null)); assertNotNull(mk.getNodes("/x/y", null, 0, 0, -1, null)); - assertEquals(0, mk.getChildNodeCount("/x", branch)); + assertChildNodeCount("/x", branch, 0); - assertEquals(1, mk.getChildNodeCount("/x", rebased)); + assertChildNodeCount("/x", rebased, 1); assertNotNull(mk.getNodes("/x/a", rebased, 0, 0, -1, null)); } @Test - @Ignore + @Ignore public void rebaseAddProperty() { mk.commit("", "+\"/x\":{\"y\":{}}", null, null); String branch = mk.branch(null); @@ -121,7 +122,7 @@ public class MongoMKRebaseTest extends B } @Test - @Ignore + @Ignore public void rebaseRemoveProperty() { mk.commit("", "+\"/x\":{\"y\":{\"p\":42}}", null, null); String branch = mk.branch(null); @@ -143,7 +144,7 @@ public class MongoMKRebaseTest extends B } @Test - @Ignore + @Ignore public void rebaseChangeProperty() { mk.commit("", "+\"/x\":{\"y\":{\"p\":42}}", null, null); String branch = mk.branch(null); @@ -183,6 +184,7 @@ public class MongoMKRebaseTest extends B } @Test + @Ignore("Conflict handling") public void rebaseAddExistingNode() { mk.commit("", "+\"/x\":{}", null, null); String branch = mk.branch(null); @@ -199,6 +201,7 @@ public class MongoMKRebaseTest extends B } @Test + @Ignore("Conflict handling") public void rebaseAddExistingProperty() { mk.commit("", "+\"/x\":{\"y\":{}}", null, null); String branch = mk.branch(null); @@ -216,6 +219,7 @@ public class MongoMKRebaseTest extends B } @Test + @Ignore("Conflict handling") public void rebaseChangeRemovedProperty() { mk.commit("", "+\"/x\":{\"y\":{\"p\":42}}", null, null); String branch = mk.branch(null); @@ -233,6 +237,7 @@ public class MongoMKRebaseTest extends B } @Test + @Ignore("Conflict handling") public void rebaseRemoveChangedProperty() { mk.commit("", "+\"/x\":{\"y\":{\"p\":42}}", null, null); String branch = mk.branch(null); @@ -250,6 +255,7 @@ public class MongoMKRebaseTest extends B } @Test + @Ignore("Conflict handling") public void rebaseChangedChangedProperty() { mk.commit("", "+\"/x\":{\"y\":{\"p\":42}}", null, null); String branch = mk.branch(null); @@ -267,6 +273,7 @@ public class MongoMKRebaseTest extends B } @Test + @Ignore("Conflict handling") public void rebaseRemoveChangedNode() { mk.commit("", "+\"/x\":{\"y\":{}}", null, null); String branch = mk.branch(null); @@ -284,6 +291,7 @@ public class MongoMKRebaseTest extends B } @Test + @Ignore("Conflict handling") public void rebaseChangeRemovedNode() { mk.commit("", "+\"/x\":{\"y\":{}}", null, null); String branch = mk.branch(null); @@ -301,6 +309,7 @@ public class MongoMKRebaseTest extends B } @Test + @Ignore("Conflict handling") public void rebaseRemoveRemovedProperty() { mk.commit("", "+\"/x\":{\"y\":{\"p\":42}}", null, null); String branch = mk.branch(null); @@ -318,6 +327,7 @@ public class MongoMKRebaseTest extends B } @Test + @Ignore("Conflict handling") public void rebaseRemoveRemovedNode() { mk.commit("", "+\"/x\":{\"y\":{}}", null, null); String branch = mk.branch(null); @@ -334,7 +344,6 @@ public class MongoMKRebaseTest extends B } @Test - @Ignore public void mergeRebased() { mk.commit("", "+\"/x\":{\"y\":{}}", null, null); String branch = mk.branch(null); Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKTestBase.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKTestBase.java?rev=1501203&r1=1501202&r2=1501203&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKTestBase.java (original) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMKTestBase.java Tue Jul 9 11:31:26 2013 @@ -73,6 +73,14 @@ public abstract class MongoMKTestBase { doAssertNodes(false, revision, paths); } + protected void assertChildNodeCount(String path, + String revision, + long numChildNodes) { + JSONObject json = parseJSONObject(getMicroKernel().getNodes( + path, revision, 0, 0, -1, null)); + assertPropertyValue(json, ":childNodeCount", numChildNodes); + } + protected void assertPropExists(String rev, String path, String property) { String nodes = getMicroKernel().getNodes(path, rev, 0 /*depth*/, 0 /*offset*/, -1 /*maxChildNodes*/, null /*filter*/); JSONObject obj = parseJSONObject(nodes);