Hi Angela, the "org.apache.sling.testing.osgi-mock" dependency has an empty scope in oak-run/pom.xml. Even if I change the scope to "test", I have a compilation error when building oak-run.
[ERROR] /Users/mari/src/svn/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java:[68,47] error: package org.apache.sling.testing.mock.osgi.junit does not exist [ERROR] /Users/mari/src/svn/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java:[183,24] error: cannot find symbol [ERROR] symbol: class OsgiContext /Users/mari/src/svn/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java:[183,50] error: cannot find symbol [INFO] 3 errors Can you review this? ---------- Forwarded message ---------- From: <[email protected]> Date: 2016-05-20 10:26 GMT+02:00 Subject: svn commit: r1744672 - in /jackrabbit/oak/trunk/oak-run: pom.xml src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java To: [email protected] Author: angela Date: Fri May 20 08:26:23 2016 New Revision: 1744672 URL: http://svn.apache.org/viewvc?rev=1744672&view=rev Log: OAK-4385 : Benchmarks: proper init of ExternalPrincipalConfiguration with dynamicMembership Modified: jackrabbit/oak/trunk/oak-run/pom.xml 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 Modified: jackrabbit/oak/trunk/oak-run/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/pom.xml?rev=1744672&r1=1744671&r2=1744672&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-run/pom.xml (original) +++ jackrabbit/oak/trunk/oak-run/pom.xml Fri May 20 08:26:23 2016 @@ -427,6 +427,12 @@ <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> </dependency> + + <dependency> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.testing.osgi-mock</artifactId> + <scope></scope> + </dependency> <!-- Test dependencies --> <dependency> 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=1744672&r1=1744671&r2=1744672&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:26:23 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<Boolean> dynamicMembership = parser.accepts("dynamicMembership", "Enable dynamic membership handling during synchronisation of external users.") + .withOptionalArg().ofType(Boolean.class).defaultsTo(Boolean.FALSE); 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(); @@ -391,9 +393,9 @@ public class BenchmarkRunner { new ReplicaCrashResilienceTest(), // benchmarks for oak-auth-external - 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)) + new ExternalLoginTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), dynamicMembership.value(options), autoMembership.values(options)), + new SyncAllExternalUsersTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), dynamicMembership.value(options), autoMembership.values(options)), + new SyncExternalUsersTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), dynamicMembership.value(options), 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=1744672&r1=1744671&r2=1744672&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:26:23 2016 @@ -54,6 +54,7 @@ import org.apache.jackrabbit.oak.spi.sec import org.apache.jackrabbit.oak.spi.security.authentication.external.SyncHandler; import org.apache.jackrabbit.oak.spi.security.authentication.external.SyncManager; import org.apache.jackrabbit.oak.spi.security.authentication.external.basic.DefaultSyncConfig; +import org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncConfigImpl; import org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler; import org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalIDPManagerImpl; import org.apache.jackrabbit.oak.spi.security.authentication.external.impl.SyncManagerImpl; @@ -63,6 +64,8 @@ import org.apache.jackrabbit.oak.spi.sec 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; +import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils; +import org.apache.sling.testing.mock.osgi.junit.OsgiContext; import static com.google.common.base.Preconditions.checkNotNull; @@ -84,6 +87,10 @@ import static com.google.common.base.Pre abstract class AbstractExternalTest extends AbstractTest { private static final String PATH_PREFIX = "pathPrefix"; + + private final Random random = new Random(); + private final ExternalPrincipalConfiguration externalPrincipalConfiguration = new ExternalPrincipalConfiguration(); + final DefaultSyncConfig syncConfig = new DefaultSyncConfig(); final SyncHandler syncHandler = new DefaultSyncHandler(syncConfig); @@ -92,8 +99,6 @@ abstract class AbstractExternalTest exte SyncManagerImpl syncManager; ExternalIdentityProviderManager idpManager; - private final Random random = new Random(); - protected AbstractExternalTest(int numberOfUsers, int numberOfGroups, long expTime, boolean dynamicMembership, @Nonnull List<String> autoMembership) { @@ -173,6 +178,20 @@ abstract class AbstractExternalTest exte whiteboard.register(ExternalIdentityProvider.class, idp, Collections.emptyMap()); whiteboard.register(SyncHandler.class, syncHandler, Collections.emptyMap()); + // assert proper init of the 'externalPrincipalConfiguration' if dynamic membership is enabled + if (syncConfig.user().getDynamicMembership()) { + OsgiContext context = new OsgiContext(); + + // register the ExternalPrincipal configuration in order to have it's + // activate method invoked. + context.registerInjectActivateService(externalPrincipalConfiguration); + + // now register the sync-handler with the dynamic membership config + // in order to enable dynamic membership with the external principal configuration + Map props = ImmutableMap.of(DefaultSyncConfigImpl.PARAM_USER_DYNAMIC_MEMBERSHIP, syncConfig.user().getDynamicMembership()); + context.registerService(SyncHandler.class, WhiteboardUtils.getService(whiteboard, SyncHandler.class), props); + } + SecurityProvider sp = new TestSecurityProvider(ConfigurationParameters.EMPTY); return new Jcr(oak).with(sp); } @@ -190,7 +209,7 @@ abstract class AbstractExternalTest exte throw new IllegalStateException(); } else { PrincipalConfiguration defConfig = checkNotNull(((CompositePrincipalConfiguration) principalConfiguration).getDefaultConfig()); - bindPrincipalConfiguration((new ExternalPrincipalConfiguration(this))); + bindPrincipalConfiguration(externalPrincipalConfiguration); bindPrincipalConfiguration(defConfig); } }
