Author: mreutegg
Date: Wed Jan 16 15:47:49 2013
New Revision: 1433995

URL: http://svn.apache.org/viewvc?rev=1433995&view=rev
Log:
OAK-535: MergeCommand reads complete tree into memory
- additional test

Modified:
    
jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKBranchMergeTest.java

Modified: 
jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKBranchMergeTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKBranchMergeTest.java?rev=1433995&r1=1433994&r2=1433995&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKBranchMergeTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKBranchMergeTest.java
 Wed Jan 16 15:47:49 2013
@@ -1,10 +1,15 @@
 package org.apache.jackrabbit.mongomk.impl;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import org.apache.jackrabbit.mk.api.MicroKernelException;
 import org.apache.jackrabbit.mongomk.BaseMongoMicroKernelTest;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -338,6 +343,42 @@ public class MongoMKBranchMergeTest exte
         assertPropExists(rev, "/a/b", "p");
     }
 
+    @Test
+    @Ignore("OAK-535")
+    public void concurrentNonConflictingMerges() throws Exception {
+        int numThreads = 5;
+        mk.commit("/", "+\"test\":{}", null, null);
+        List<Thread> workers = new ArrayList<Thread>();
+        final List<Exception> exceptions = Collections.synchronizedList(new 
ArrayList<Exception>());
+        for (int i = 0; i < numThreads; i++) {
+            final String path = "/test/t" + i;
+            mk.commit("", "+\"" + path + "\":{}", null, null);
+            workers.add(new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        for (int i = 0; i < 100; i++) {
+                            String branchRev = mk.branch(null);
+                            branchRev = mk.commit(path, "+\"node" + i + 
"\":{}", branchRev, null);
+                            mk.merge(branchRev, null);
+                        }
+                    } catch (MicroKernelException e) {
+                        exceptions.add(e);
+                    }
+                }
+            }));
+        }
+        for (Thread t : workers) {
+            t.start();
+        }
+        for (Thread t : workers) {
+            t.join();
+        }
+        if (!exceptions.isEmpty()) {
+            throw exceptions.get(0);
+        }
+    }
+
     private String addNodes(String rev, String...nodes) {
         for (String node : nodes) {
             rev = mk.commit("", "+\"" + node + "\":{}", rev, "");


Reply via email to