Author: chetanm
Date: Thu Feb 23 16:09:23 2017
New Revision: 1784165

URL: http://svn.apache.org/viewvc?rev=1784165&view=rev
Log:
OAK-5788 - Perform update of single node in one remote call if possible

Refactor the testcase

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

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java?rev=1784165&r1=1784164&r2=1784165&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
 Thu Feb 23 16:09:23 2017
@@ -2890,47 +2890,54 @@ public class DocumentNodeStoreTest {
     @Ignore("OAK-5788")
     @Test
     public void commitRootSameAsModifiedPath() throws Exception{
-        final AtomicInteger count = new AtomicInteger();
-        DocumentStore ds = new MemoryDocumentStore(){
-            @Override
-            public <T extends Document> T createOrUpdate(Collection<T> 
collection, UpdateOp update) {
-                incrementCounter(collection);
-                return super.createOrUpdate(collection, update);
-            }
-
-            @Override
-            public <T extends Document> List<T> createOrUpdate(Collection<T> 
collection, List<UpdateOp> updateOps) {
-                if (updateOps.size() != 1) { //For size == 1 previous method 
gets called internally which inflates the count
-                    incrementCounter(collection);
-                }
-                return super.createOrUpdate(collection, updateOps);
-            }
-
-            @Override
-            public <T extends Document> T findAndUpdate(Collection<T> 
collection, UpdateOp update) {
-                incrementCounter(collection);
-                return super.findAndUpdate(collection, update);
-            }
-
-            private <T extends Document> void incrementCounter(Collection<T> 
collection) {
-                if (collection == Collection.NODES) {
-                    count.incrementAndGet();
-                }
-            }
-        };
+        WriteCountingStore ws = new WriteCountingStore();
 
-        DocumentNodeStore ns = 
builderProvider.newBuilder().setAsyncDelay(0).setDocumentStore(ds).getNodeStore();
+        DocumentNodeStore ns = 
builderProvider.newBuilder().setAsyncDelay(0).setDocumentStore(ws).getNodeStore();
         NodeBuilder builder = ns.getRoot().builder();
         builder.child("a").child("b");
         merge(ns, builder);
 
-        count.set(0);
+        ws.reset();
 
         builder = ns.getRoot().builder();
         builder.child("a").child("b").setProperty("foo", "bar");
         merge(ns, builder);
 
-        assertEquals(1, count.get());
+        assertEquals(1, ws.count);
+    }
+
+    private static class WriteCountingStore extends MemoryDocumentStore {
+        int count;
+
+        @Override
+        public <T extends Document> T createOrUpdate(Collection<T> collection, 
UpdateOp update) {
+            incrementCounter(collection);
+            return super.createOrUpdate(collection, update);
+        }
+
+        @Override
+        public <T extends Document> List<T> createOrUpdate(Collection<T> 
collection, List<UpdateOp> updateOps) {
+            if (updateOps.size() != 1) { //For size == 1 previous method gets 
called internally which inflates the count
+                incrementCounter(collection);
+            }
+            return super.createOrUpdate(collection, updateOps);
+        }
+
+        @Override
+        public <T extends Document> T findAndUpdate(Collection<T> collection, 
UpdateOp update) {
+            incrementCounter(collection);
+            return super.findAndUpdate(collection, update);
+        }
+
+        public void reset(){
+            count = 0;
+        }
+
+        private <T extends Document> void incrementCounter(Collection<T> 
collection) {
+            if (collection == Collection.NODES) {
+                count++;
+            }
+        }
     }
 
     private static class TestException extends RuntimeException {


Reply via email to