Author: angela
Date: Thu Feb  8 10:16:05 2018
New Revision: 1823546

URL: http://svn.apache.org/viewvc?rev=1823546&view=rev
Log:
OAK-7253 : Benchmarks: cleanup duplications in AC setup

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/ConcurrentHasPermissionTest2.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest2.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.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=1823546&r1=1823545&r2=1823546&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 Feb  8 10:16:05 2018
@@ -364,7 +364,8 @@ public class BenchmarkRunner {
             new ReadWithMembershipTest(
                     itemsToRead.value(options),
                     report.value(options),
-                    numberOfGroups.value(options)),
+                    numberOfGroups.value(options),
+                    numberOfInitialAce.value(options)),
             new ConcurrentTraversalTest(
                     runAsAdmin.value(options),
                     itemsToRead.value(options),

Modified: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest2.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest2.java?rev=1823546&r1=1823545&r2=1823546&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest2.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest2.java
 Thu Feb  8 10:16:05 2018
@@ -25,12 +25,8 @@ import javax.jcr.security.AccessControlM
 import javax.jcr.security.Privilege;
 
 import org.apache.jackrabbit.api.JackrabbitSession;
-import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.UserManager;
-import 
org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
-import 
org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
-import org.apache.jackrabbit.util.Text;
 
 /**
  * Concurrently calls Session#hasPermission on the deep tree where every 100th 
node
@@ -65,39 +61,17 @@ public class ConcurrentHasPermissionTest
     @Override
     protected void visitingNode(Node node, int i) throws RepositoryException {
         super.visitingNode(node, i);
+
+        AccessControlManager acMgr = 
node.getSession().getAccessControlManager();
+        Privilege[] privileges = new Privilege[] {
+                acMgr.privilegeFromName(Privilege.JCR_READ),
+                acMgr.privilegeFromName(Privilege.JCR_READ_ACCESS_CONTROL)
+        };
         if (!node.getPath().contains("rep:policy")) {
             if (++counter == 100) {
-                addPolicy(node);
+                addPolicy(acMgr, node, privileges, principals);
                 counter = 0;
             }
         }
     }
-
-    private void addPolicy(Node node) throws RepositoryException {
-        AccessControlManager acMgr = 
node.getSession().getAccessControlManager();
-        String path = node.getPath();
-        int level = 0;
-        if (node.isNodeType(AccessControlConstants.NT_REP_POLICY)) {
-            level = 1;
-        } else if (node.isNodeType(AccessControlConstants.NT_REP_ACE)) {
-            level = 2;
-        } else if 
(node.isNodeType(AccessControlConstants.NT_REP_RESTRICTIONS)) {
-            level = 3;
-        }
-        if (level > 0) {
-            path = Text.getRelativeParent(path, level);
-        }
-        JackrabbitAccessControlList acl = 
AccessControlUtils.getAccessControlList(node.getSession(), path);
-        if (acl != null) {
-            Privilege[] privileges = new Privilege[] {
-                    acMgr.privilegeFromName(Privilege.JCR_READ),
-                    acMgr.privilegeFromName(Privilege.JCR_READ_ACCESS_CONTROL)
-            };
-            for (Principal principal : principals) {
-                acl.addAccessControlEntry(principal, privileges);
-            }
-            acMgr.setPolicy(path, acl);
-            adminSession.save();
-        }
-    }
 }

Modified: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest.java?rev=1823546&r1=1823545&r2=1823546&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest.java
 Thu Feb  8 10:16:05 2018
@@ -21,11 +21,7 @@ import javax.jcr.RepositoryException;
 import javax.jcr.security.AccessControlManager;
 import javax.jcr.security.Privilege;
 
-import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
-import 
org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
-import 
org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
 import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
-import org.apache.jackrabbit.util.Text;
 
 /**
  * Concurrently reads random items from the deep tree where every 10th node is
@@ -45,37 +41,15 @@ public class ConcurrentReadAccessControl
         super.visitingNode(node, i);
         String path = node.getPath();
         if (!path.contains("rep:policy")) {
-            if (++counter == 10) {
-                addPolicy(path, node);
-                counter = 0;
-            }
-        }
-    }
-
-    private void addPolicy(String path, Node node) throws RepositoryException {
-        AccessControlManager acMgr = 
node.getSession().getAccessControlManager();
-        int level = 0;
-        if (node.isNodeType(AccessControlConstants.NT_REP_POLICY)) {
-            level = 1;
-        } else if (node.isNodeType(AccessControlConstants.NT_REP_ACE)) {
-            level = 2;
-        } else if 
(node.isNodeType(AccessControlConstants.NT_REP_RESTRICTIONS)) {
-            level = 3;
-        }
-        if (level > 0) {
-            path = Text.getRelativeParent(path, level);
-        }
-        JackrabbitAccessControlList acl = 
AccessControlUtils.getAccessControlList(node.getSession(), path);
-        if (acl != null) {
+            AccessControlManager acMgr = 
node.getSession().getAccessControlManager();
             Privilege[] privileges = new Privilege[] {
                     acMgr.privilegeFromName(Privilege.JCR_READ),
                     acMgr.privilegeFromName(Privilege.JCR_READ_ACCESS_CONTROL)
             };
-            if (acl.addAccessControlEntry(EveryonePrincipal.getInstance(), 
privileges)) {
-                acMgr.setPolicy(path, acl);
-                node.getSession().save();
+            if (++counter == 10) {
+                addPolicy(acMgr, node, privileges, 
EveryonePrincipal.getInstance());
+                counter = 0;
             }
         }
     }
-
 }

Modified: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest2.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest2.java?rev=1823546&r1=1823545&r2=1823546&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest2.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest2.java
 Thu Feb  8 10:16:05 2018
@@ -25,12 +25,8 @@ import javax.jcr.security.AccessControlM
 import javax.jcr.security.Privilege;
 
 import org.apache.jackrabbit.api.JackrabbitSession;
-import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.UserManager;
-import 
org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
-import 
org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
-import org.apache.jackrabbit.util.Text;
 
 /**
  * Concurrently reads random items from the deep tree where every 100th node
@@ -62,39 +58,15 @@ public class ConcurrentReadAccessControl
     @Override
     protected void visitingNode(Node node, int i) throws RepositoryException {
         super.visitingNode(node, i);
-        if (!node.getPath().contains("rep:policy")) {
+        AccessControlManager acMgr = 
node.getSession().getAccessControlManager();
+        Privilege[] privileges = new Privilege[] {
+                acMgr.privilegeFromName(Privilege.JCR_READ),
+                acMgr.privilegeFromName(Privilege.JCR_READ_ACCESS_CONTROL)
+        };        if (!node.getPath().contains("rep:policy")) {
             if (++counter == 100) {
-                addPolicy(node);
+                addPolicy(acMgr, node, privileges, principals);
                 counter = 0;
             }
         }
     }
-
-    private void addPolicy(Node node) throws RepositoryException {
-        AccessControlManager acMgr = 
node.getSession().getAccessControlManager();
-        String path = node.getPath();
-        int level = 0;
-        if (node.isNodeType(AccessControlConstants.NT_REP_POLICY)) {
-            level = 1;
-        } else if (node.isNodeType(AccessControlConstants.NT_REP_ACE)) {
-            level = 2;
-        } else if 
(node.isNodeType(AccessControlConstants.NT_REP_RESTRICTIONS)) {
-            level = 3;
-        }
-        if (level > 0) {
-            path = Text.getRelativeParent(path, level);
-        }
-        JackrabbitAccessControlList acl = 
AccessControlUtils.getAccessControlList(node.getSession(), path);
-        if (acl != null) {
-            Privilege[] privileges = new Privilege[] {
-                    acMgr.privilegeFromName(Privilege.JCR_READ),
-                    acMgr.privilegeFromName(Privilege.JCR_READ_ACCESS_CONTROL)
-            };
-            for (Principal principal : principals) {
-                acl.addAccessControlEntry(principal, privileges);
-            }
-            acMgr.setPolicy(path, acl);
-            adminSession.save();
-        }
-    }
 }

Modified: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java?rev=1823546&r1=1823545&r2=1823546&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java
 Thu Feb  8 10:16:05 2018
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.oak.benchmark;
 
 import java.io.InputStream;
+import java.security.Principal;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -27,8 +28,15 @@ import javax.jcr.Node;
 import javax.jcr.Property;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.security.AccessControlManager;
+import javax.jcr.security.Privilege;
 import javax.jcr.util.TraversingItemVisitor;
 
+import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
+import 
org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants;
+import org.apache.jackrabbit.util.Text;
+
 /**
  * Randomly read 1000 items from the deep tree.
  */
@@ -170,4 +178,36 @@ public class ReadDeepTreeTest extends Ab
         }
     }
 
+    protected void addPolicy(AccessControlManager acMgr, Node node, 
Privilege[] privileges, List<Principal> principals) throws RepositoryException {
+        addPolicy(acMgr, node, privileges, principals.toArray(new 
Principal[principals.size()]));
+    }
+
+    protected void addPolicy(AccessControlManager acMgr, Node node, 
Privilege[] privileges, Principal... principals) throws RepositoryException {
+        String path = getAccessControllablePath(node);
+        JackrabbitAccessControlList acl = 
AccessControlUtils.getAccessControlList(node.getSession(), path);
+        if (acl != null) {
+            for (Principal principal : principals) {
+                acl.addAccessControlEntry(principal, privileges);
+            }
+            acMgr.setPolicy(path, acl);
+            node.getSession().save();
+        }
+    }
+
+    protected static String getAccessControllablePath(Node node) throws 
RepositoryException {
+        String path = node.getPath();
+        int level = 0;
+        if (node.isNodeType(AccessControlConstants.NT_REP_POLICY)) {
+            level = 1;
+        } else if (node.isNodeType(AccessControlConstants.NT_REP_ACE)) {
+            level = 2;
+        } else if 
(node.isNodeType(AccessControlConstants.NT_REP_RESTRICTIONS)) {
+            level = 3;
+        }
+        if (level > 0) {
+            path = Text.getRelativeParent(path, level);
+        }
+        return path;
+    }
+
 }

Modified: 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java?rev=1823546&r1=1823545&r2=1823546&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java
 Thu Feb  8 10:16:05 2018
@@ -16,8 +16,12 @@
  */
 package org.apache.jackrabbit.oak.benchmark;
 
+import java.security.Principal;
 import java.util.UUID;
+import javax.jcr.Item;
+import javax.jcr.Node;
 import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.SimpleCredentials;
 
@@ -41,11 +45,13 @@ public class ReadWithMembershipTest exte
 
     private final String userId;
     private final int membershipSize;
+    private final int numberOfAces;
 
-    protected ReadWithMembershipTest(int itemsToRead, boolean doReport, int 
membershipSize) {
+    protected ReadWithMembershipTest(int itemsToRead, boolean doReport, int 
membershipSize, int numberOfAces) {
         super(false, itemsToRead, doReport, false);
         userId = "user-" + UUID.randomUUID();
         this.membershipSize = membershipSize;
+        this.numberOfAces = numberOfAces;
     }
 
     @Override
@@ -59,12 +65,20 @@ public class ReadWithMembershipTest exte
             Group g = userManager.createGroup("group" + i);
             g.addMember(user);
 
-            AccessControlUtils.addAccessControlEntry(adminSession, 
g.getPath(), g.getPrincipal(), new String[] {PrivilegeConstants.JCR_READ}, 
true);
-            AccessControlUtils.addAccessControlEntry(adminSession, 
testRoot.getPath(), g.getPrincipal(), new String[] 
{PrivilegeConstants.JCR_READ}, true);
-
+            setupACEs(g.getPrincipal());
         }
         adminSession.save();
+    }
 
+    private void setupACEs(Principal principal) throws RepositoryException {
+        int size = allPaths.size();
+        for (int i = 0; i < numberOfAces; i++) {
+            int index = (int) Math.floor(size * Math.random());
+            Item item = adminSession.getItem(allPaths.get(index));
+            Node n = (item.isNode()) ? (Node) item : item.getParent();
+            String path = getAccessControllablePath(n);
+            AccessControlUtils.addAccessControlEntry(adminSession, path, 
principal, new String[] {PrivilegeConstants.JCR_READ}, true);
+        }
     }
 
     @Override


Reply via email to