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 2019/10/31 14:52:08 UTC

svn commit: r1869220 - in /jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark: BenchmarkRunner.java ReadDeepTreeTest.java authorization/permission/EagerCacheSizeTest.java

Author: angela
Date: Thu Oct 31 14:52:08 2019
New Revision: 1869220

URL: http://svn.apache.org/viewvc?rev=1869220&view=rev
Log:
OAK-8730 : Add option for repeated read to ReadDeepTreeTest

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/ReadDeepTreeTest.java
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/permission/EagerCacheSizeTest.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=1869220&r1=1869219&r2=1869220&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 Thu Oct 31 14:52:08 2019
@@ -17,6 +17,8 @@
 package org.apache.jackrabbit.oak.benchmark;
 
 import static java.util.Arrays.asList;
+import static org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.DEFAULT_ITEMS_TD_READ;
+import static org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.DEFAULT_REPEATED_READ;
 
 import java.io.File;
 import java.io.PrintStream;
@@ -155,7 +157,9 @@ public class BenchmarkRunner {
         OptionSpec<String> importBehavior = parser.accepts("importBehavior", "Protected Item Import Behavior")
                 .withOptionalArg().ofType(String.class).defaultsTo(ImportBehavior.NAME_BESTEFFORT);
         OptionSpec<Integer> itemsToRead = parser.accepts("itemsToRead", "Number of items to read")
-                .withRequiredArg().ofType(Integer.class).defaultsTo(1000);
+                .withRequiredArg().ofType(Integer.class).defaultsTo(DEFAULT_ITEMS_TD_READ);
+        OptionSpec<Integer> repeatedRead = parser.accepts("repeatedRead", "Number of repetitions")
+                .withRequiredArg().ofType(Integer.class).defaultsTo(DEFAULT_REPEATED_READ);
         OptionSpec<Integer> concurrency = parser.accepts("concurrency", "Number of test threads.")
                 .withRequiredArg().ofType(Integer.class).withValuesSeparatedBy(',');
         OptionSpec<Boolean> report = parser.accepts("report", "Whether to output intermediate results")
@@ -382,6 +386,7 @@ public class BenchmarkRunner {
                     useAggregationFilter.value(options),
                     report.value(options)),
             new EagerCacheSizeTest(itemsToRead.value(options),
+                    repeatedRead.value(options),
                     numberOfInitialAce.value(options),
                     numberOfUsers.value(options),
                     cacheSize,

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java?rev=1869220&r1=1869219&r2=1869220&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java Thu Oct 31 14:52:08 2019
@@ -43,8 +43,12 @@ import org.jetbrains.annotations.NotNull
  */
 public class ReadDeepTreeTest extends AbstractTest {
 
+    public static final int DEFAULT_ITEMS_TD_READ = 1000;
+    public static final int DEFAULT_REPEATED_READ = 1;
+
     protected final boolean runAsAdmin;
     protected final int itemsToRead;
+    protected final int repeatedRead;
     protected final boolean doReport;
 
     protected final boolean singleSession;
@@ -61,10 +65,15 @@ public class ReadDeepTreeTest extends Ab
     }
 
     public ReadDeepTreeTest(boolean runAsAdmin, int itemsToRead, boolean doReport, boolean singleSession) {
+        this(runAsAdmin, itemsToRead, doReport, singleSession, DEFAULT_REPEATED_READ);
+    }
+
+    public ReadDeepTreeTest(boolean runAsAdmin, int itemsToRead, boolean doReport, boolean singleSession, int repeatedRead) {
         this.runAsAdmin = runAsAdmin;
         this.itemsToRead = itemsToRead;
         this.doReport = doReport;
         this.singleSession = singleSession;
+        this.repeatedRead = repeatedRead;
     }
 
     @Override
@@ -140,26 +149,14 @@ public class ReadDeepTreeTest extends Ab
             logout = true;
         }
         try {
-            int nodeCnt = 0;
-            int propertyCnt = 0;
-            int noAccess = 0;
+            Cnt accessCnt = new Cnt();
             long start = System.currentTimeMillis();
             for (int i = 0; i < cnt; i++) {
-                String path = getRandom(allPaths);
-                if (testSession.itemExists(path)) {
-                    Item item = testSession.getItem(path);
-                    if (item.isNode()) {
-                        nodeCnt++;
-                    } else {
-                        propertyCnt++;
-                    }
-                } else {
-                    noAccess++;
-                }
+                readItem(testSession, getRandom(allPaths), accessCnt);
             }
             long end = System.currentTimeMillis();
             if (doReport) {
-                System.out.println("Session " + testSession.getUserID() + " reading " + (cnt-noAccess) + " (Nodes: "+ nodeCnt +"; Properties: "+propertyCnt+") completed in " + (end - start));
+                System.out.println("Session " + testSession.getUserID() + " reading " + (cnt-accessCnt.noAccess) + " (Nodes: "+ accessCnt.nodeCnt +"; Properties: "+accessCnt.propertyCnt+") completed in " + (end - start));
             }
         } finally {
             if (logout) {
@@ -168,6 +165,21 @@ public class ReadDeepTreeTest extends Ab
         }
     }
 
+    private void readItem(Session testSession, String path, Cnt cnt) throws RepositoryException {
+        for (int i = 0; i < repeatedRead; i++) {
+            if (testSession.itemExists(path)) {
+                Item item = testSession.getItem(path);
+                if (item.isNode()) {
+                    cnt.nodeCnt++;
+                } else {
+                    cnt.propertyCnt++;
+                }
+            } else {
+                cnt.noAccess++;
+            }
+        }
+    }
+
     protected Session getTestSession() {
         if (runAsAdmin) {
             return loginWriter();
@@ -213,4 +225,10 @@ public class ReadDeepTreeTest extends Ab
         int index = (int) Math.floor(strings.size() * Math.random());
         return strings.get(index);
     }
+
+    private static final class Cnt {
+        private int nodeCnt = 0;
+        private int propertyCnt = 0;
+        private int noAccess = 0;
+    }
 }

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/permission/EagerCacheSizeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/permission/EagerCacheSizeTest.java?rev=1869220&r1=1869219&r2=1869220&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/permission/EagerCacheSizeTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/permission/EagerCacheSizeTest.java Thu Oct 31 14:52:08 2019
@@ -66,8 +66,8 @@ public class EagerCacheSizeTest extends
     private final List<String> nodePaths = new ArrayList<>();
     private Subject subject;
 
-    public EagerCacheSizeTest(int itemsToRead, int numberOfACEs, int subjectSize, long eagerCacheSize, boolean doReport) {
-        super(false, itemsToRead, doReport, false);
+    public EagerCacheSizeTest(int itemsToRead, int repeatedRead,  int numberOfACEs, int subjectSize, long eagerCacheSize, boolean doReport) {
+        super(false, itemsToRead, doReport, false, repeatedRead);
         this.numberOfACEs = numberOfACEs;
         this.subjectSize = subjectSize;
         this.eagerCacheSize = eagerCacheSize;