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;
     }