Author: angela
Date: Fri Feb 2 14:58:03 2018
New Revision: 1822969
URL: http://svn.apache.org/viewvc?rev=1822969&view=rev
Log:
OAK-7238 : Benchmark : random read for different sets of principals
Added:
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java
- copied, changed from r1822848,
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyUserReadTest.java
Modified:
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.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=1822969&r1=1822968&r2=1822969&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
Fri Feb 2 14:58:03 2018
@@ -361,6 +361,10 @@ public class BenchmarkRunner {
itemsToRead.value(options),
report.value(options),
randomUser.value(options)),
+ new ReadWithMembershipTest(
+ itemsToRead.value(options),
+ report.value(options),
+ numberOfGroups.value(options)),
new ConcurrentTraversalTest(
runAsAdmin.value(options),
itemsToRead.value(options),
Copied:
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java
(from r1822848,
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyUserReadTest.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyUserReadTest.java&r1=1822848&r2=1822969&rev=1822969&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyUserReadTest.java
(original)
+++
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java
Fri Feb 2 14:58:03 2018
@@ -16,30 +16,36 @@
*/
package org.apache.jackrabbit.oak.benchmark;
-import javax.jcr.Node;
+import java.util.UUID;
+import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
-import javax.jcr.security.Privilege;
import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.api.security.user.Group;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
import
org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
-import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
-
-/**
- * UserTest... TODO
- */
-public class ManyUserReadTest extends ReadDeepTreeTest {
-
- private final int numberOfUsers = 1000;
- private final int numberOfMembers = 10;
- private final boolean randomUser;
-
- protected ManyUserReadTest(boolean runAsAdmin, int itemsToRead, boolean
doReport, boolean randomUser) {
- super(runAsAdmin, itemsToRead, doReport, !randomUser);
- this.randomUser = randomUser;
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.fixture.JcrCreator;
+import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
+import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
+import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.security.internal.SecurityProviderBuilder;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import
org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
+
+public class ReadWithMembershipTest extends ReadDeepTreeTest {
+
+ private final String userId;
+ private final int membershipSize;
+
+ protected ReadWithMembershipTest(int itemsToRead, boolean doReport, int
membershipSize) {
+ super(false, itemsToRead, doReport, false);
+ userId = "user-" + UUID.randomUUID();
+ this.membershipSize = membershipSize;
}
@Override
@@ -47,45 +53,16 @@ public class ManyUserReadTest extends Re
super.createDeepTree();
UserManager userManager = ((JackrabbitSession)
adminSession).getUserManager();
- for (int i = 0; i < numberOfUsers; i++) {
- User user = userManager.createUser("user"+i, "user"+i);
- AccessControlUtils.addAccessControlEntry(adminSession,
user.getPath(), user.getPrincipal(), new String[] {Privilege.JCR_ALL}, true);
-
- Node userNode = adminSession.getNode(user.getPath());
- Node n = userNode.addNode("public");
- n.setProperty("prop", "value");
- String path = n.getPath();
- AccessControlUtils.addAccessControlEntry(adminSession, path,
EveryonePrincipal.getInstance(), new String[]{Privilege.JCR_READ}, true);
- allPaths.add(path);
- allPaths.add(path + "/prop");
+ User user = userManager.createUser(userId, userId);
+ for (int i = 0; i < membershipSize; i++) {
Group g = userManager.createGroup("group" + i);
- AccessControlUtils.addAccessControlEntry(adminSession,
g.getPath(), g.getPrincipal(), new String[] {Privilege.JCR_READ}, true);
+ g.addMember(user);
- n = userNode.addNode("semi");
- n.setProperty("prop", "value");
- path = n.getPath();
- AccessControlUtils.addAccessControlEntry(adminSession, path,
g.getPrincipal(), new String[]{Privilege.JCR_READ}, true);
- allPaths.add(path);
- allPaths.add(path + "/prop");
+ 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);
- userNode.addNode("private").setProperty("prop", "value");
- adminSession.save();
}
- System.out.println("Setup "+numberOfUsers+" users");
-
- for (int i = 0; i < numberOfUsers; i++) {
- Group g = (Group) userManager.getAuthorizable("group"+i);
- for (int j = 0; j < numberOfMembers; j++) {
- g.addMember(userManager.getAuthorizable("user" + getIndex()));
- }
- adminSession.save();
- }
-
- System.out.println("Setup group membership ("+numberOfMembers+"
members per group)");
- System.out.println("All Paths : " + allPaths.size());
-
- AccessControlUtils.denyAllToEveryone(adminSession,
"/rep:security/rep:authorizables");
adminSession.save();
}
@@ -96,16 +73,23 @@ public class ManyUserReadTest extends Re
}
protected Session getTestSession() {
- if (runAsAdmin) {
- return loginWriter();
- } else {
- String userId = (randomUser) ? "user"+getIndex() : "user1";
- SimpleCredentials sc = new SimpleCredentials(userId,
userId.toCharArray());
- return login(sc);
- }
+ SimpleCredentials sc = new SimpleCredentials(userId,
userId.toCharArray());
+ return login(sc);
}
- private int getIndex() {
- return (int) Math.floor(numberOfUsers * Math.random());
+ @Override
+ protected Repository[] createRepository(RepositoryFixture fixture) throws
Exception {
+ if (fixture instanceof OakRepositoryFixture) {
+ return ((OakRepositoryFixture) fixture).setUpCluster(1, new
JcrCreator() {
+ @Override
+ public Jcr customize(Oak oak) {
+ ConfigurationParameters params =
ConfigurationParameters.of("eagerCacheSize", 100);
+ SecurityProvider securityProvider = new
SecurityProviderBuilder().with(ConfigurationParameters.of(AuthorizationConfiguration.NAME,
params)).build();
+ return new Jcr(oak).with(securityProvider);
+ }
+ });
+ } else {
+ throw new IllegalArgumentException("Fixture " + fixture + " not
supported for this benchmark.");
+ }
}
}
\ No newline at end of file