You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2016/05/20 08:01:00 UTC
svn commit: r1744670 - in
/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark:
./ authentication/external/
Author: angela
Date: Fri May 20 08:01:00 2016
New Revision: 1744670
URL: http://svn.apache.org/viewvc?rev=1744670&view=rev
Log:
OAK-4384 : Benchmarks: add support 'automembership' config option
minor improvements
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncAllExternalUsersTest.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncExternalUsersTest.java
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java?rev=1744670&r1=1744669&r2=1744670&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java Fri May 20 08:01:00 2016
@@ -131,6 +131,8 @@ public class BenchmarkRunner {
.defaultsTo(Boolean.FALSE);
OptionSpec<String> supportedPaths = parser.accepts("supportedPaths", "Supported paths in composite setup.")
.withOptionalArg().ofType(String.class).withValuesSeparatedBy(',');
+ OptionSpec<String> autoMembership = parser.accepts("autoMembership", "Ids of those groups a given external identity automatically become member of.")
+ .withOptionalArg().ofType(String.class).withValuesSeparatedBy(',');
OptionSpec<String> nonOption = parser.nonOptions();
OptionSpec help = parser.acceptsAll(asList("h", "?", "help"), "show help").forHelp();
OptionSet options = parser.parse(args);
@@ -389,9 +391,9 @@ public class BenchmarkRunner {
new ReplicaCrashResilienceTest(),
// benchmarks for oak-auth-external
- new ExternalLoginTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), false),
- new SyncAllExternalUsersTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), false),
- new SyncExternalUsersTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), false, batchSize.value(options))
+ new ExternalLoginTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), false, autoMembership.values(options)),
+ new SyncAllExternalUsersTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), false, autoMembership.values(options)),
+ new SyncExternalUsersTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), false, autoMembership.values(options), batchSize.value(options))
};
Set<String> argset = Sets.newHashSet(nonOption.values(options));
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java?rev=1744670&r1=1744669&r2=1744670&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java Fri May 20 08:01:00 2016
@@ -33,6 +33,8 @@ import javax.security.auth.login.Configu
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.benchmark.AbstractTest;
import org.apache.jackrabbit.oak.fixture.JcrCreator;
@@ -58,6 +60,7 @@ import org.apache.jackrabbit.oak.spi.sec
import org.apache.jackrabbit.oak.spi.security.authentication.external.impl.principal.ExternalPrincipalConfiguration;
import org.apache.jackrabbit.oak.spi.security.principal.CompositePrincipalConfiguration;
import org.apache.jackrabbit.oak.spi.security.principal.PrincipalConfiguration;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
@@ -68,15 +71,15 @@ import static com.google.common.base.Pre
*
* The setup currently defines the following configuration options:
*
- * - {@code numberofUsers} : number of user accounts that are 'known' to the IDP
- * - {@code numberofGroups}: number of groups 'known' to the IDP and equally used to define the membershipSize of each user.
+ * - {@code numberOfUsers} : number of user accounts that are 'known' to the IDP
+ * - {@code numberOfGroups}: number of groups 'known' to the IDP and equally used to define the membershipSize of each user.
* - {@code expirationTime}: expiration time as set with
* {@link DefaultSyncConfig.Authorizable#setExpirationTime(long)}, used for both users and groups
* - {@code dynamicMembership}: boolean flag to enable dynamic membership (see OAK-4101)
*
* Note: by default the {@link DefaultSyncConfig.User#setMembershipNestingDepth(long)}
* is set to 1 and each user will become member of each of the groups as defined
- * by {@code numberofGroups}.
+ * by {@code numberOfGroups}.
*/
abstract class AbstractExternalTest extends AbstractTest {
@@ -91,11 +94,14 @@ abstract class AbstractExternalTest exte
private final Random random = new Random();
- protected AbstractExternalTest(int numberofUsers, int numberofGroups, long expTime, boolean dynamicMembership) {
- idp = new TestIdentityProvider(numberofUsers, numberofGroups);
+ protected AbstractExternalTest(int numberOfUsers, int numberOfGroups,
+ long expTime, boolean dynamicMembership,
+ @Nonnull List<String> autoMembership) {
+ idp = new TestIdentityProvider(numberOfUsers, numberOfGroups);
syncConfig.user()
.setMembershipNestingDepth(1)
.setDynamicMembership(dynamicMembership)
+ .setAutoMembership(autoMembership.toArray(new String[autoMembership.size()]))
.setExpirationTime(expTime).setPathPrefix(PATH_PREFIX);
syncConfig.group()
.setExpirationTime(expTime).setPathPrefix(PATH_PREFIX);
@@ -104,7 +110,7 @@ abstract class AbstractExternalTest exte
protected abstract Configuration createConfiguration();
protected String getRandomUserId() {
- int index = random.nextInt(((TestIdentityProvider) idp).numberofUsers);
+ int index = random.nextInt(((TestIdentityProvider) idp).numberOfUsers);
return "u" + index;
}
@@ -120,6 +126,19 @@ abstract class AbstractExternalTest exte
super.run(iterable, concurrencyLevels);
}
+ @Override
+ protected void beforeSuite() throws Exception {
+ Set<String> autoMembership = syncConfig.user().getAutoMembership();
+ if (!autoMembership.isEmpty()) {
+ Session s = loginAdministrative();
+ UserManager userManager = ((JackrabbitSession) s).getUserManager();
+ for (String groupId : autoMembership) {
+ userManager.createGroup(groupId, new PrincipalImpl(groupId), PATH_PREFIX);
+ }
+ s.save();
+ }
+ }
+
/**
* Remove any user/group accounts that have been synchronized into the repo.
*
@@ -179,11 +198,11 @@ abstract class AbstractExternalTest exte
private final class TestIdentityProvider implements ExternalIdentityProvider {
- private final int numberofUsers;
+ private final int numberOfUsers;
private final int membershipSize;
- private TestIdentityProvider(int numberofUsers, int membershipSize) {
- this.numberofUsers = numberofUsers;
+ private TestIdentityProvider(int numberOfUsers, int membershipSize) {
+ this.numberOfUsers = numberOfUsers;
this.membershipSize = membershipSize;
}
@@ -227,7 +246,7 @@ abstract class AbstractExternalTest exte
@Override
public Iterator<ExternalUser> listUsers() {
Set<ExternalUser> all = new HashSet<>();
- for (long i = 0; i < numberofUsers; i++) {
+ for (long i = 0; i < numberOfUsers; i++) {
all.add(new TestUser(i));
}
return all.iterator();
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.java?rev=1744670&r1=1744669&r2=1744670&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.java Fri May 20 08:01:00 2016
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.oak.benchmark.authentication.external;
+import java.util.List;
+import javax.annotation.Nonnull;
import javax.jcr.SimpleCredentials;
import javax.security.auth.login.AppConfigurationEntry;
import javax.security.auth.login.Configuration;
@@ -34,8 +36,9 @@ import org.apache.jackrabbit.oak.spi.sec
*/
public class ExternalLoginTest extends AbstractExternalTest {
- public ExternalLoginTest(int numberofUsers, int numberofGroups, long expTime, boolean dynamicMembership) {
- super(numberofUsers, numberofGroups, expTime, dynamicMembership);
+ public ExternalLoginTest(int numberOfUsers, int numberOfGroups, long expTime,
+ boolean dynamicMembership, @Nonnull List<String> autoMembership) {
+ super(numberOfUsers, numberOfGroups, expTime, dynamicMembership, autoMembership);
}
@Override
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncAllExternalUsersTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncAllExternalUsersTest.java?rev=1744670&r1=1744669&r2=1744670&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncAllExternalUsersTest.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncAllExternalUsersTest.java Fri May 20 08:01:00 2016
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.oak.benchmark.authentication.external;
+import java.util.List;
+import javax.annotation.Nonnull;
import javax.security.auth.login.Configuration;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
@@ -30,8 +32,9 @@ public class SyncAllExternalUsersTest ex
private SynchronizationMBean bean;
- public SyncAllExternalUsersTest(int numberofUsers, int membershipSize, long expTime, boolean dynamicMembership) {
- super(numberofUsers, membershipSize, expTime, dynamicMembership);
+ public SyncAllExternalUsersTest(int numberOfUsers, int membershipSize, long expTime,
+ boolean dynamicMembership, @Nonnull List<String> autoMembership) {
+ super(numberOfUsers, membershipSize, expTime, dynamicMembership, autoMembership);
}
@Override
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncExternalUsersTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncExternalUsersTest.java?rev=1744670&r1=1744669&r2=1744670&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncExternalUsersTest.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/SyncExternalUsersTest.java Fri May 20 08:01:00 2016
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.oak.benchmark.authentication.external;
+import java.util.List;
+import javax.annotation.Nonnull;
import javax.security.auth.login.Configuration;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
@@ -32,9 +34,10 @@ public class SyncExternalUsersTest exten
private final int batchSize;
private SynchronizationMBean bean;
- public SyncExternalUsersTest(int numberofUsers, int membershipSize, long expTime,
- boolean dynamicMembership, int batchSize) {
- super(numberofUsers, membershipSize, expTime, dynamicMembership);
+ public SyncExternalUsersTest(int numberOfUsers, int membershipSize, long expTime,
+ boolean dynamicMembership, @Nonnull List<String> autoMembership,
+ int batchSize) {
+ super(numberOfUsers, membershipSize, expTime, dynamicMembership, autoMembership);
this.batchSize = batchSize;
}