Author: angela
Date: Fri Mar 11 10:44:07 2016
New Revision: 1734527
URL: http://svn.apache.org/viewvc?rev=1734527&view=rev
Log:
OAK-4118 : Benchmarks for Membership Operations (wip)
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMemberTest.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMemberTest.java
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMemberTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMemberTest.java?rev=1734527&r1=1734526&r2=1734527&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMemberTest.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AddMemberTest.java
Fri Mar 11 10:44:07 2016
@@ -16,20 +16,15 @@
*/
package org.apache.jackrabbit.oak.benchmark;
-import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nonnull;
-import javax.jcr.RepositoryException;
import javax.jcr.Session;
-import javax.security.auth.Subject;
-import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.api.security.user.Authorizable;
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.oak.spi.security.authentication.SystemSubject;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
@@ -59,33 +54,6 @@ public class AddMemberTest extends AddMe
}
}
- @Override
- public void runTest() throws Exception {
- Session s = null;
- try {
- // use system session login to avoid measuring the
login-performance here
- s = Subject.doAsPrivileged(SystemSubject.INSTANCE, new
PrivilegedExceptionAction<Session>() {
- @Override
- public Session run() throws Exception {
- return getRepository().login(null, null);
- }
- }, null);
- UserManager userManager = ((JackrabbitSession) s).getUserManager();
- String groupId = GROUP + random.nextInt(GROUP_CNT);
- Group g = userManager.getAuthorizable(groupId, Group.class);
-
- } catch (RepositoryException e) {
- System.out.println(e.getMessage());
- if (s.hasPendingChanges()) {
- s.refresh(false);
- }
- } finally {
- if (s != null) {
- s.logout();
- }
- }
- }
-
@Override
protected void addMembers(@Nonnull UserManager userManager, @Nonnull Group
group, @Nonnull Session s) throws Exception {
for (int i = 0; i <= numberOfMembers; i++) {
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMemberTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMemberTest.java?rev=1734527&r1=1734526&r2=1734527&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMemberTest.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RemoveMemberTest.java
Fri Mar 11 10:44:07 2016
@@ -16,35 +16,16 @@
*/
package org.apache.jackrabbit.oak.benchmark;
-import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.List;
-import java.util.Random;
import javax.annotation.Nonnull;
-import javax.jcr.Node;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
import javax.jcr.Session;
-import javax.security.auth.Subject;
-import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.api.security.user.Authorizable;
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.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.SecurityProviderImpl;
-import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
-import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
-import org.apache.jackrabbit.oak.spi.security.authentication.SystemSubject;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
-import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
-import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
-import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
-import org.apache.jackrabbit.util.Text;
/**
* Test the performance of removing members from groups. The
@@ -56,115 +37,20 @@ import org.apache.jackrabbit.util.Text;
* Note the members to be removed are picked randomly and may or may not/no
longer
* be member of the target group.
*/
-public class RemoveMemberTest extends AbstractTest {
+public class RemoveMemberTest extends RemoveMembersTest {
- static final String REL_TEST_PATH = "testPath";
- static final String USER = "user";
- static final String GROUP = "group";
- static final int GROUP_CNT = 100;
-
- final Random random = new Random();
- final int numberOfMembers;
-
- private final List<String> groupPaths = new ArrayList(GROUP_CNT);
+ private final List<String> userPaths;
public RemoveMemberTest(int numberOfMembers) {
- this.numberOfMembers = numberOfMembers;
- }
-
- @Override
- public void beforeSuite() throws Exception {
- super.beforeSuite();
-
- Session s = loginAdministrative();
- try {
- UserManager userManager = ((JackrabbitSession) s).getUserManager();
- createUsers(userManager);
-
- for (int i = 0; i <= GROUP_CNT; i++) {
- Group g = userManager.createGroup(new PrincipalImpl(GROUP +
i), REL_TEST_PATH);
- groupPaths.add(g.getPath());
-
- List<String> ids = new ArrayList<String>();
- for (int j = 0; j <= numberOfMembers; j++) {
- ids.add(USER + j);
- }
- g.addMembers(ids.toArray(new String[ids.size()]));
- s.save();
- }
- } finally {
- s.logout();
- }
- System.out.println("setup done");
+ super(numberOfMembers, 1);
+ userPaths = new ArrayList<String>(numberOfMembers);
}
-
protected void createUsers(@Nonnull UserManager userManager) throws
Exception {
-
- }
-
- @Override
- public void afterSuite() throws Exception {
- Session s = loginAdministrative();
- try {
- Authorizable authorizable = ((JackrabbitSession)
s).getUserManager().getAuthorizable(GROUP + "0");
- if (authorizable != null) {
- Node n =
s.getNode(Text.getRelativeParent(authorizable.getPath(), 1));
- n.remove();
- }
-
- // remove test-users if they have been created
- authorizable = ((JackrabbitSession)
s).getUserManager().getAuthorizable(USER + "0");
- if (authorizable != null) {
- Node n =
s.getNode(Text.getRelativeParent(authorizable.getPath(), 1));
- n.remove();
- }
-
- s.save();
- } finally {
- s.logout();
- }
- }
-
- @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) {
- SecurityProvider sp = new
SecurityProviderImpl(ConfigurationParameters.of(UserConfiguration.NAME,
-
ConfigurationParameters.of(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR,
ImportBehavior.NAME_BESTEFFORT)));
- return new Jcr(oak).with(sp);
- }
- });
- } else {
- return super.createRepository(fixture);
- }
- }
-
- @Override
- public void runTest() throws Exception {
- Session s = null;
- try {
- // use system session login to avoid measuring the
login-performance here
- s = Subject.doAsPrivileged(SystemSubject.INSTANCE, new
PrivilegedExceptionAction<Session>() {
- @Override
- public Session run() throws Exception {
- return getRepository().login(null, null);
- }
- }, null);
- UserManager userManager = ((JackrabbitSession) s).getUserManager();
- String groupPath = groupPaths.get(random.nextInt(GROUP_CNT));
- Group g = (Group) userManager.getAuthorizableByPath(groupPath);
- removeMembers(userManager, g, s);
- } catch (RepositoryException e) {
- if (s.hasPendingChanges()) {
- s.refresh(false);
- }
- } finally {
- if (s != null) {
- s.logout();
- }
+ for (int i = 0; i <= numberOfMembers; i++) {
+ String id = USER + i;
+ User u = userManager.createUser(id, null, new PrincipalImpl(id),
REL_TEST_PATH);
+ userPaths.add(u.getPath());
}
}