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 ch...@apache.org on 2017/01/13 09:50:03 UTC

svn commit: r1778520 - /jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java

Author: chetanm
Date: Fri Jan 13 09:50:03 2017
New Revision: 1778520

URL: http://svn.apache.org/viewvc?rev=1778520&view=rev
Log:
OAK-5448 - Aggregate logic should optimize for case where patterns do not include wildcard

Adding ignored testcase

Modified:
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java?rev=1778520&r1=1778519&r2=1778520&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/AggregateTest.java Fri Jan 13 09:50:03 2017
@@ -23,8 +23,13 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 
+import javax.annotation.Nullable;
+
+import com.google.common.base.Function;
 import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Iterables;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import org.apache.jackrabbit.JcrConstants;
@@ -33,8 +38,10 @@ import org.apache.jackrabbit.oak.commons
 import org.apache.jackrabbit.oak.plugins.index.lucene.Aggregate.NodeInclude;
 import org.apache.jackrabbit.oak.plugins.index.lucene.Aggregate.NodeIncludeResult;
 import org.apache.jackrabbit.oak.plugins.index.lucene.Aggregate.PropertyIncludeResult;
+import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -46,12 +53,17 @@ import static org.apache.jackrabbit.JcrC
 import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.INDEX_RULES;
 import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
 import static org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent.INITIAL_CONTENT;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.lessThanOrEqualTo;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.matchers.JUnitMatchers.hasItems;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
 
 public class AggregateTest {
 
@@ -86,6 +98,34 @@ public class AggregateTest {
         assertThat(col.getNodePaths(), hasItems("a"));
     }
 
+    @Ignore("OAK-5448")
+    @Test
+    public void noOfChildNodeRead() throws Exception{
+        Aggregate ag = new Aggregate("nt:base", of(ni("a")));
+        NodeBuilder nb = newNode("nt:base");
+        nb.child("a");
+        for (int i = 0; i < 10; i++) {
+            nb.child("a"+i);
+        }
+
+        NodeState state = nb.getNodeState();
+        final AtomicInteger counter = new AtomicInteger();
+        Iterable<? extends ChildNodeEntry> countingIterator = Iterables.transform(state.getChildNodeEntries(),
+                new Function<ChildNodeEntry, ChildNodeEntry>() {
+            @Override
+            public ChildNodeEntry apply(ChildNodeEntry input) {
+                counter.incrementAndGet();
+                return input;
+            }
+        });
+        NodeState mocked = spy(state);
+        doReturn(countingIterator).when(mocked).getChildNodeEntries();
+        ag.collectAggregates(mocked, col);
+
+        //Here at max a single call should happen for reading child nodes
+        assertThat(counter.get(), is(lessThanOrEqualTo(1)));
+    }
+
     @Test
     public void oneLevelTyped() throws Exception{
         Aggregate ag = new Aggregate("nt:base", of(ni("nt:resource","*", false)));