Author: miroslav
Date: Thu Jan  7 14:31:37 2021
New Revision: 1885241

URL: http://svn.apache.org/viewvc?rev=1885241&view=rev
Log:
OAK-9309 Added cases when parent node is not visible.

Modified:
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java

Modified: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java?rev=1885241&r1=1885240&r2=1885241&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
 Thu Jan  7 14:31:37 2021
@@ -180,8 +180,10 @@ public class BenchmarkRunner {
                         new ReadPropertyTest(),
             GetNodeTest.withAdmin(),
             GetNodeTest.withAnonymous(),
-            GetParentNodeTest.withNodeAPI(),
-            GetParentNodeTest.withSessionAPI(),
+            
GetParentNodeTest.withNodeAPIAndParentVisible(benchmarkOptions.getRunAsAdmin().value(options)),
+            
GetParentNodeTest.withSessionAPIAndParentVisible(benchmarkOptions.getRunAsAdmin().value(options)),
+            
GetParentNodeTest.withNodeAPIAndParentNotVisible(benchmarkOptions.getRunAsAdmin().value(options)),
+            
GetParentNodeTest.withSessionAPIAndParentNotVisible(benchmarkOptions.getRunAsAdmin().value(options)),
             new GetMixinNodeTypesTest(),
             new GetDeepNodeTest(),
             new SetPropertyTest(),

Modified: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java?rev=1885241&r1=1885240&r2=1885241&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java
 Thu Jan  7 14:31:37 2021
@@ -40,30 +40,81 @@ public abstract class GetParentNodeTest
     protected String parentNodePath;
     private String childNodePath;
 
-    public static Benchmark withNodeAPI() {
-        return new GetParentNodeTest("GetParentNodeWithNodeAPI") {
+    private boolean runAsAdmin;
+
+    public static Benchmark withNodeAPIAndParentVisible(boolean runAsAdmin) {
+        return new GetParentNodeTest("GetParentVisibleNodeAPI", runAsAdmin) {
             @Override
             protected Node getParentNode(Node childNode) throws 
RepositoryException {
                 return childNode.getParent();
             }
+
+            @Override
+            protected boolean isParentNodeVisible() {
+                return true;
+            }
         };
     }
 
-    public static Benchmark withSessionAPI() {
-        return new GetParentNodeTest("GetParentNodeWithSessionAPI") {
+    public static Benchmark withSessionAPIAndParentVisible(boolean runAsAdmin) 
{
+        return new GetParentNodeTest("GetParentVisibleSessionAPI", runAsAdmin) 
{
             @Override
             protected Node getParentNode(Node childNode) throws 
RepositoryException {
                 return childNode.getSession().getNode(parentNodePath);
             }
+
+            @Override
+            protected boolean isParentNodeVisible() {
+                return true;
+            }
+        };
+    }
+
+    public static Benchmark withNodeAPIAndParentNotVisible(boolean runAsAdmin) 
{
+        return new GetParentNodeTest("GetParentNotVisibleNodeAPI", runAsAdmin) 
{
+            @Override
+            protected Node getParentNode(Node childNode) throws 
RepositoryException {
+                return childNode.getParent();
+            }
+
+            @Override
+            protected boolean isParentNodeVisible() {
+                return false;
+            }
         };
     }
 
-    protected GetParentNodeTest(String name) {
+    public static Benchmark withSessionAPIAndParentNotVisible(boolean 
runAsAdmin) {
+        return new GetParentNodeTest("GetParentNotVisibleSessionAPI", 
runAsAdmin) {
+            @Override
+            protected Node getParentNode(Node childNode) throws 
RepositoryException {
+                return childNode.getSession().getNode(parentNodePath);
+            }
+
+            @Override
+            protected boolean isParentNodeVisible() {
+                return false;
+            }
+        };
+    }
+
+    protected GetParentNodeTest(String name, boolean runAsAdmin) {
         this.name = name;
+        this.runAsAdmin = runAsAdmin;
     }
 
     protected abstract Node getParentNode(Node childNode) throws 
RepositoryException;
 
+    protected Session login() {
+        if (runAsAdmin) {
+            return loginAdministrative();
+        } else {
+            return loginAnonymous();
+        }
+    }
+
+    protected abstract boolean isParentNodeVisible();
+
     @Override
     public String toString() {
         return name;
@@ -82,6 +133,13 @@ public abstract class GetParentNodeTest
 
         addAccessControlEntry(session, testRoot.getPath(), 
EveryonePrincipal.getInstance(),
                 new String[] {JCR_READ}, true);
+
+        if (!isParentNodeVisible()) {
+            addAccessControlEntry(session, parentNodePath, 
EveryonePrincipal.getInstance(),
+                    new String[]{JCR_READ}, false);
+            addAccessControlEntry(session, childNodePath, 
EveryonePrincipal.getInstance(),
+                    new String[]{JCR_READ}, true);
+        }
         session.save();
 
         session.logout();
@@ -89,10 +147,15 @@ public abstract class GetParentNodeTest
 
     @Override
     protected void runTest() throws Exception {
-        Session session = loginAnonymous();
+        Session session = login();
         Node child = session.getNode(childNodePath);
         for (int i = 0; i < 10000; i++) {
-            getParentNode(child);
+            try {
+                getParentNode(child);
+            } catch (RepositoryException e){
+                //If parent node is not visible
+            }
+
         }
         session.logout();
     }


Reply via email to