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 st...@apache.org on 2019/02/25 15:18:55 UTC

svn commit: r1854316 - in /jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark: BenchmarkRunner.java authentication/external/AbstractExternalTest.java authentication/external/ExternalLoginTest.java

Author: stillalex
Date: Mon Feb 25 15:18:55 2019
New Revision: 1854316

URL: http://svn.apache.org/viewvc?rev=1854316&view=rev
Log:
OAK-8053 Add intermediate report to ExternalLoginTest


Modified:
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.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=1854316&r1=1854315&r2=1854316&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 Mon Feb 25 15:18:55 2019
@@ -486,7 +486,9 @@ public class BenchmarkRunner {
             new ReplicaCrashResilienceTest(),
 
             // benchmarks for oak-auth-external
-            new ExternalLoginTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), dynamicMembership.value(options), autoMembership.values(options)),
+                new ExternalLoginTest(numberOfUsers.value(options), numberOfGroups.value(options),
+                        expiration.value(options), dynamicMembership.value(options), autoMembership.values(options),
+                        report.value(options)),
             new SyncAllExternalUsersTest(numberOfUsers.value(options), numberOfGroups.value(options), expiration.value(options), dynamicMembership.value(options), autoMembership.values(options)),
             new SyncAllUsersTest(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)),

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java?rev=1854316&r1=1854315&r2=1854316&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/AbstractExternalTest.java Mon Feb 25 15:18:55 2019
@@ -91,7 +91,8 @@ abstract class AbstractExternalTest exte
 
     private static final String PATH_PREFIX = "pathPrefix";
 
-    private final Random random = new Random();
+    protected final long seed = Long.getLong("seed", System.currentTimeMillis());
+    private final Random random = new Random(seed);
     private final ExternalPrincipalConfiguration externalPrincipalConfiguration = new ExternalPrincipalConfiguration();
 
     private ContentRepository contentRepository;

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.java?rev=1854316&r1=1854315&r2=1854316&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authentication/external/ExternalLoginTest.java Mon Feb 25 15:18:55 2019
@@ -16,7 +16,10 @@
  */
 package org.apache.jackrabbit.oak.benchmark.authentication.external;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
+
 import javax.jcr.SimpleCredentials;
 import javax.security.auth.login.AppConfigurationEntry;
 import javax.security.auth.login.Configuration;
@@ -30,7 +33,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.jetbrains.annotations.NotNull;
 
 import static javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag.SUFFICIENT;
-import static javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag.REQUIRED;
 import static javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL;
 
 /**
@@ -43,14 +45,53 @@ import static javax.security.auth.login.
  */
 public class ExternalLoginTest extends AbstractExternalTest {
 
+    private final int numberOfUsers;
+    private final int numberOfGroups;
+    private final Reporter reporter;
+
+    private String id;
+    private Set<String> uniques;
+
     public ExternalLoginTest(int numberOfUsers, int numberOfGroups, long expTime,
-                             boolean dynamicMembership, @NotNull List<String> autoMembership) {
+                             boolean dynamicMembership, @NotNull List<String> autoMembership, boolean report) {
         super(numberOfUsers, numberOfGroups, expTime, dynamicMembership, autoMembership);
+        this.numberOfUsers = numberOfUsers;
+        this.numberOfGroups = numberOfGroups;
+        this.reporter = new Reporter(report);
+    }
+
+    @Override
+    protected void beforeSuite() throws Exception {
+        super.beforeSuite();
+        reporter.beforeSuite();
+        uniques = new HashSet<>(numberOfUsers);
+    }
+
+    @Override
+    protected void afterSuite() throws Exception {
+        reporter.afterSuite();
+        System.out.println("Unique users " + uniques.size() + " out of total " + numberOfUsers + ". Groups "
+                + numberOfGroups + ". Seed " + seed);
+        super.afterSuite();
+    }
+
+    @Override
+    protected void beforeTest() throws Exception {
+        super.beforeTest();
+        id = getRandomUserId();
+        reporter.beforeTest();
+    }
+
+    @Override
+    protected void afterTest() throws Exception {
+        super.afterTest();
+        uniques.add(id);
+        reporter.afterTest();
     }
 
     @Override
     protected void runTest() throws Exception {
-        getRepository().login(new SimpleCredentials(getRandomUserId(), new char[0])).logout();
+        getRepository().login(new SimpleCredentials(id, new char[0])).logout();
     }
 
     protected Configuration createConfiguration() {
@@ -80,4 +121,56 @@ public class ExternalLoginTest extends A
             }
         };
     }
+
+    private static class Reporter {
+        private final long LIMIT = Long.getLong("flushAt", 1000);
+
+        private final boolean doReport;
+
+        private long count;
+        private long start;
+
+        public Reporter(boolean doReport) {
+            this.doReport = doReport;
+        }
+
+        public void afterTest() {
+            if (!doReport) {
+                return;
+            }
+            count++;
+            report(false);
+        }
+
+        private void report(boolean end) {
+            if (end || count % LIMIT == 0) {
+                long dur = System.currentTimeMillis() - start;
+                System.out.println(dur + " ms, " + count + " tests");
+                start = System.currentTimeMillis();
+                count = 0;
+            }
+        }
+
+        public void beforeTest() {
+            if (!doReport) {
+                return;
+            }
+        }
+
+        public void beforeSuite() {
+            if (!doReport) {
+                return;
+            }
+            System.out.println("Reporting enabled.");
+            start = System.currentTimeMillis();
+            count = 0;
+        }
+
+        public void afterSuite() {
+            if (!doReport) {
+                return;
+            }
+            report(true);
+        }
+    }
 }