Author: stefanegli
Date: Thu Nov 24 08:42:18 2016
New Revision: 1771083
URL: http://svn.apache.org/viewvc?rev=1771083&view=rev
Log:
OAK-5151 : tests added for ChangeSet overflowing and its handling in
ChangeSetFilterImpl
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImplTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImplTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImplTest.java?rev=1771083&r1=1771082&r2=1771083&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImplTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/filter/ChangeSetFilterImplTest.java
Thu Nov 24 08:42:18 2016
@@ -56,6 +56,56 @@ public class ChangeSetFilterImplTest {
changeSetBuilder.getAllNodeTypes().addAll(allNodeTypes);
return changeSetBuilder.build();
}
+
+ private ChangeSetBuilder newBuilder(int maxItems, int maxPathDepth) {
+ ChangeSetBuilder changeSetBuilder = new ChangeSetBuilder(maxItems,
maxPathDepth);
+ return changeSetBuilder;
+ }
+
+ private ChangeSetBuilder overflowAllNodeTypes(ChangeSetBuilder builder) {
+ int i = 0;
+ while (!builder.getAllNodeTypeOverflown()) {
+ builder.getAllNodeTypes().add("foo" + i++);
+ builder.getAllNodeTypes();
+ }
+ return builder;
+ }
+
+ private ChangeSetBuilder overflowParentNodeTypes(ChangeSetBuilder builder)
{
+ int i = 0;
+ while (!builder.getParentNodeTypeOverflown()) {
+ builder.getParentNodeTypes().add("foo" + i++);
+ builder.getParentNodeTypes();
+ }
+ return builder;
+ }
+
+ private ChangeSetBuilder overflowParentNodeNames(ChangeSetBuilder builder)
{
+ int i = 0;
+ while (!builder.getParentNodeNameOverflown()) {
+ builder.getParentNodeNames().add("foo" + i++);
+ builder.getParentNodeNames();
+ }
+ return builder;
+ }
+
+ private ChangeSetBuilder overflowParentPaths(ChangeSetBuilder builder) {
+ int i = 0;
+ while (!builder.getParentPathOverflown()) {
+ builder.getParentPaths().add("foo" + i++);
+ builder.getParentPaths();
+ }
+ return builder;
+ }
+
+ private ChangeSetBuilder overflowPropertyNames(ChangeSetBuilder builder) {
+ int i = 0;
+ while (!builder.getPropertyNameOverflown()) {
+ builder.getPropertyNames().add("foo" + i++);
+ builder.getPropertyNames();
+ }
+ return builder;
+ }
@Test
public void testIsDeepFalse() throws Exception {
@@ -124,4 +174,69 @@ public class ChangeSetFilterImplTest {
assertFalse(prefilter.excludes(newChangeSet(5, s("/a"), s("a"), s(),
s("jcr:data"))));
}
+ @Test
+ public void testOverflowing() throws Exception {
+ ChangeSetBuilder builder = newBuilder(5, 5);
+ assertTrue(overflowAllNodeTypes(builder).getAllNodeTypeOverflown());
+
assertTrue(overflowParentNodeTypes(builder).getParentNodeTypeOverflown());
+
assertTrue(overflowParentNodeNames(builder).getParentNodeNameOverflown());
+ assertTrue(overflowParentPaths(builder).getParentPathOverflown());
+ assertTrue(overflowPropertyNames(builder).getPropertyNameOverflown());
+ }
+
+ private ChangeSetBuilder sampleBuilder() {
+ ChangeSetBuilder builder = newBuilder(5, 5);
+ builder.getAllNodeTypes().add("nt:file");
+ builder.getParentNodeTypes().add("nt:file");
+ builder.getParentPaths().add("/bar");
+ builder.getParentNodeNames().add("bar");
+ builder.getPropertyNames().add("a");
+ builder.getPropertyNames().add("b");
+ return builder;
+ }
+
+ @Test
+ public void testIncludeOnAllNodeTypeOverflow() throws Exception {
+ ChangeSetBuilder builder = sampleBuilder();
+ ChangeSetFilterImpl prefilter = new ChangeSetFilterImpl(s("/"), true,
s("/excluded"), s("foo", "bars"), s("nt:file"), s());
+ assertTrue(prefilter.excludes(builder.build()));
+ overflowAllNodeTypes(builder);
+ assertFalse(prefilter.excludes(builder.build()));
+ }
+
+ @Test
+ public void testIncludeOnParentNodeNameOverflow() throws Exception {
+ ChangeSetBuilder builder = sampleBuilder();
+ ChangeSetFilterImpl prefilter = new ChangeSetFilterImpl(s("/"), true,
s("/excluded"), s("foo", "bars"), s("nt:file"), s());
+ assertTrue(prefilter.excludes(builder.build()));
+ overflowParentNodeNames(builder);
+ assertFalse(prefilter.excludes(builder.build()));
+ }
+
+ @Test
+ public void testIncludeOnPropertyNamesOverflow() throws Exception {
+ ChangeSetBuilder builder = sampleBuilder();
+ ChangeSetFilterImpl prefilter = new ChangeSetFilterImpl(s("/"), true,
s("/excluded"), s("foo", "bars"), s("nt:file"), s());
+ assertTrue(prefilter.excludes(builder.build()));
+ overflowPropertyNames(builder);
+ assertFalse(prefilter.excludes(builder.build()));
+ }
+
+ @Test
+ public void testIncludeOnParentNodeTypeOverflow() throws Exception {
+ ChangeSetBuilder builder = sampleBuilder();
+ ChangeSetFilterImpl prefilter = new ChangeSetFilterImpl(s("/"), true,
s("/excluded"), s("foo", "bars"), s("nt:file"), s());
+ assertTrue(prefilter.excludes(builder.build()));
+ overflowParentNodeTypes(builder);
+ assertFalse(prefilter.excludes(builder.build()));
+ }
+
+ @Test
+ public void testIncludeOnParentPathsOverflow() throws Exception {
+ ChangeSetBuilder builder = sampleBuilder();
+ ChangeSetFilterImpl prefilter = new ChangeSetFilterImpl(s("/"), true,
s("/excluded"), s("foo", "bars"), s("nt:file"), s());
+ assertTrue(prefilter.excludes(builder.build()));
+ overflowParentPaths(builder);
+ assertFalse(prefilter.excludes(builder.build()));
+ }
}