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