Author: chetanm
Date: Thu Feb 23 13:59:36 2017
New Revision: 1784132
URL: http://svn.apache.org/viewvc?rev=1784132&view=rev
Log:
OAK-5788 - Perform update of single node in one remote call if possible
Add ignored test
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=1784132&r1=1784131&r2=1784132&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 13:59:36 2017
@@ -2887,6 +2887,52 @@ public class DocumentNodeStoreTest {
assertTrue("Two added paths should have forced flush", numChangedPaths
== 0);
}
+ @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();
+ }
+ }
+ };
+
+ DocumentNodeStore ns =
builderProvider.newBuilder().setAsyncDelay(0).setDocumentStore(ds).getNodeStore();
+ NodeBuilder builder = ns.getRoot().builder();
+ builder.child("a").child("b");
+ merge(ns, builder);
+
+ count.set(0);
+
+ builder = ns.getRoot().builder();
+ builder.child("a").child("b").setProperty("foo", "bar");
+ merge(ns, builder);
+
+ assertEquals(1, count.get());
+ }
+
private static class TestException extends RuntimeException {
}