diff --git a/oak-benchmarks/README.md b/oak-benchmarks/README.md index 1a48caee84..2018b668cf 100644 --- a/oak-benchmarks/README.md +++ b/oak-benchmarks/README.md @@ -33,6 +33,7 @@ The following benchmark options (with default values) are currently supported: --itemsToRead 1000 - Number of items to read --report false - Whether to output intermediate results --csvFile - Optional csv file to report the benchmark results + --consoleFormat - Console output format. Possible values: 'machine-readable', 'prettyprint'. Defaults to 'prettyprint' --concurrency - Comma separated list of concurrency levels --metrics false - Enable metrics based stats collection --rdbjdbcuri - JDBC URL for RDB persistence (defaults to local file-based H2) diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractOutputStrategy.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractOutputStrategy.java new file mode 100644 index 0000000000..707ac18fe1 --- /dev/null +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractOutputStrategy.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.oak.benchmark; + +import org.apache.commons.lang.ArrayUtils; + +public abstract class AbstractOutputStrategy implements BenchmarkOutputStrategy { + protected Object[] getAllStatsJoined(AbstractTest test) { + Object[] allStats = ArrayUtils.addAll(test.defaultStatsValues(), test.statsValues()); + allStats = ArrayUtils.add(allStats, test.comment()); + return allStats; + } +} diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java index 5497128871..ad4236f711 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java @@ -36,7 +36,6 @@ import javax.jcr.Session; import javax.jcr.SimpleCredentials; import javax.security.auth.Subject; -import com.google.common.base.Joiner; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.math.stat.descriptive.DescriptiveStatistics; import org.apache.commons.math.stat.descriptive.SynchronizedDescriptiveStatistics; @@ -62,6 +61,8 @@ public abstract class AbstractTest extends Benchmark implements CSVResultGene static AtomicInteger nodeNameCounter = new AtomicInteger(); + private Object[] defaultStats; + /** * A node name that is guarantee to be unique within the current JVM. */ @@ -91,10 +92,11 @@ public abstract class AbstractTest extends Benchmark implements CSVResultGene private Profiler profiler; - private PrintStream out; - private RepositoryFixture currentFixture; + private BenchmarkOutputStrategy outputStrategy; + private BenchmarkOutputStrategy csvStrategy = null; + /** *

* used to signal the {@link #runTest(int)} if stop running future test planned or not. If set @@ -146,7 +148,9 @@ public abstract class AbstractTest extends Benchmark implements CSVResultGene @Override public void setPrintStream(PrintStream out) { - this.out = out; + if (out != null) { + this.csvStrategy = new CsvOutputStrategy(out); + } } protected static int getScale(int def) { @@ -188,14 +192,7 @@ public abstract class AbstractTest extends Benchmark implements CSVResultGene @Override public void run(Iterable fixtures, List concurrencyLevels) { - System.out.format( - "# %-26.26s C min 10%% 50%% 90%% max N%s%n", - toString(), statsNamesJoined(false)); - if (out != null) { - out.format( - "# %-26.26s, C, min, 10%%, 50%%, 90%%, max, N%s%n", - toString(), statsNamesJoined(true)); - } + outputStrategy.printHeader(this); for (RepositoryFixture fixture : fixtures) { currentFixture = fixture; try { @@ -235,7 +232,7 @@ public abstract class AbstractTest extends Benchmark implements CSVResultGene for (Integer concurrency: concurrencyLevels) { // Run the test DescriptiveStatistics statistics = runTest(concurrency); - Object[] defaultStats = new Object[] { + this.defaultStats = new Object[] { fixture.toString(), concurrency, statistics.getMin(), @@ -246,48 +243,13 @@ public abstract class AbstractTest extends Benchmark implements CSVResultGene statistics.getN() }; - Object[] statsArg = ArrayUtils.addAll(defaultStats, statsValues()); - String comment = comment(); - if (comment != null) { - statsArg = ArrayUtils.add(statsArg, comment); - } - if (statistics.getN() > 0) { - System.out.format( - "%-28.28s %6d %6.0f %6.0f %6.0f %6.0f %6.0f %6d"+statsFormatsJoined(false)+"%n", - statsArg); - if (out != null) { - out.format( - "%-28.28s, %6d, %6.0f, %6.0f, %6.0f, %6.0f, %6.0f, %6d"+statsFormatsJoined(false)+"%n", - statsArg); - } - } - + outputStrategy.printStats(this); } } finally { tearDown(); } } - private String statsFormatsJoined(boolean commaSeparated) { - String comment = comment(); - String[] formatPattern = statsFormats(); - if (comment != null){ - String commentPattern = commaSeparated ? "#%s" : " #%s"; - formatPattern = (String[])ArrayUtils.add(formatPattern, commentPattern); - } - Joiner joiner = commaSeparated ? Joiner.on(',') : Joiner.on(" "); - return joiner.join(formatPattern); - } - - private String statsNamesJoined(boolean commaSeparated) { - Joiner joiner = commaSeparated ? Joiner.on(',') : Joiner.on(" "); - String names = joiner.join(statsNames()); - if (!commaSeparated) { - names = " " + names; - } - return names; - } - private class Executor extends Thread { private final SynchronizedDescriptiveStatistics statistics; @@ -430,6 +392,10 @@ public abstract class AbstractTest extends Benchmark implements CSVResultGene this.repository = null; } + public void setOutputStrategy(BenchmarkOutputStrategy outputStrategy) { + this.outputStrategy = outputStrategy; + } + /** * Names of additional stats which benchmark wants to be reported as part of * default report. Add required padding to the names to account for stats value @@ -454,6 +420,17 @@ public abstract class AbstractTest extends Benchmark implements CSVResultGene return new Object[0]; } + /** + * Returns stats used in most of tests. BenchmarkOutputStrategy implementations + * may rely on this array of objects being always available to properly format test output. + * Therefore it's not recommended to override it. Any extra stats and their formats should be provided through + * {@link #statsValues()}, {@link #statsFormats()} and {@link #statsNames()} + * @return + */ + protected final Object[] defaultStatsValues() { + return this.defaultStats; + } + @CheckForNull protected String comment(){ return null; diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkOutputStrategy.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkOutputStrategy.java new file mode 100644 index 0000000000..5e56ae6140 --- /dev/null +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkOutputStrategy.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.oak.benchmark; + +/** + * Defines interface for benchmark stats output strategy. + */ +public interface BenchmarkOutputStrategy { + + /** + * Method prints header of stats. For example column names. + */ + void printHeader(AbstractTest test); + + /** + * Method to print benchmark stats. + * @param test + */ + void printStats(AbstractTest test); +} diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java index a8f232f2cb..46f04e8245 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java @@ -41,6 +41,7 @@ import joptsimple.OptionParser; import joptsimple.OptionSet; import joptsimple.OptionSpec; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.output.NullOutputStream; import org.apache.jackrabbit.oak.benchmark.authentication.external.ExternalLoginTest; import org.apache.jackrabbit.oak.benchmark.authentication.external.ListIdentitiesTest; import org.apache.jackrabbit.oak.benchmark.authentication.external.PrincipalNameResolutionTest; @@ -48,6 +49,7 @@ import org.apache.jackrabbit.oak.benchmark.authentication.external.SyncAllExtern import org.apache.jackrabbit.oak.benchmark.authentication.external.SyncExternalUsersTest; import org.apache.jackrabbit.oak.benchmark.authorization.AceCreationTest; import org.apache.jackrabbit.oak.benchmark.wikipedia.WikipediaImport; +import org.apache.jackrabbit.oak.benchmark.CompositeBenchmarkOutputStrategy; import org.apache.jackrabbit.oak.fixture.JackrabbitRepositoryFixture; import org.apache.jackrabbit.oak.fixture.OakFixture; import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture; @@ -60,6 +62,8 @@ public class BenchmarkRunner { private static final int MB = 1024 * 1024; + private static PrintStream stdOut = System.out; + public static void main(String[] args) throws Exception { OptionParser parser = new OptionParser(); OptionSpec base = parser.accepts("base", "Base directory") @@ -145,6 +149,9 @@ public class BenchmarkRunner { OptionSpec randomUser = parser.accepts("randomUser", "Whether to use a random user to read.") .withOptionalArg().ofType(Boolean.class) .defaultsTo(Boolean.FALSE); + OptionSpec consoleFormat = parser.accepts("consoleFormat", "Format of console output. Possible values are 'prettyprint' and 'machine-readable'") + .withOptionalArg().ofType(String.class) + .defaultsTo("prettyprint"); OptionSpec csvFile = parser.accepts("csvFile", "File to write a CSV version of the benchmark data.") .withOptionalArg().ofType(File.class); OptionSpec flatStructure = parser.accepts("flatStructure", "Whether the test should use a flat structure or not.") @@ -197,7 +204,6 @@ public class BenchmarkRunner { .withOptionalArg().ofType(Boolean.class) .defaultsTo(Boolean.FALSE); - OptionSpec verbose = parser.accepts("verbose", "Enable verbose output"); OptionSpec nonOption = parser.nonOptions(); OptionSpec help = parser.acceptsAll(asList("h", "?", "help"), "show help").forHelp(); OptionSet options = parser.parse(args); @@ -207,6 +213,10 @@ public class BenchmarkRunner { System.exit(0); } + if (!report.value(options)) { + System.setOut(new PrintStream(NullOutputStream.NULL_OUTPUT_STREAM)); + } + String uri = mongouri.value(options); if (uri == null) { String db = dbName.value(options); @@ -315,10 +325,10 @@ public class BenchmarkRunner { new TransientManyChildNodesTest(), new WikipediaImport( wikipedia.value(options), - flatStructure.value(options), - report.value(options)), + flatStructure.value(options) + ), new CreateNodesBenchmark(), - new ManyNodes(options.has(verbose)), + new ManyNodes(), new ObservationTest(), new RevisionGCTest(), new ContinuousRevisionGCTest(), @@ -326,8 +336,8 @@ public class BenchmarkRunner { new FlatTreeWithAceForSamePrincipalTest(), new ReadDeepTreeTest( runAsAdmin.value(options), - itemsToRead.value(options), - report.value(options)), + itemsToRead.value(options) + ), new CompositeAuthorizationTest( runAsAdmin.value(options), itemsToRead.value(options)), // NOTE: this is currently the no of configurations @@ -343,46 +353,43 @@ public class BenchmarkRunner { reverseOrder.value(options)), new ConcurrentReadDeepTreeTest( runAsAdmin.value(options), - itemsToRead.value(options), - report.value(options)), + itemsToRead.value(options) + ), new ConcurrentReadSinglePolicyTreeTest( runAsAdmin.value(options), - itemsToRead.value(options), - report.value(options)), + itemsToRead.value(options) + ), new ConcurrentReadAccessControlledTreeTest( runAsAdmin.value(options), - itemsToRead.value(options), - report.value(options)), + itemsToRead.value(options) + ), new ConcurrentReadAccessControlledTreeTest2( runAsAdmin.value(options), - itemsToRead.value(options), - report.value(options)), + itemsToRead.value(options) + ), new ConcurrentReadRandomNodeAndItsPropertiesTest( runAsAdmin.value(options), - itemsToRead.value(options), - report.value(options)), + itemsToRead.value(options) + ), new ConcurrentHasPermissionTest( runAsAdmin.value(options), - itemsToRead.value(options), - report.value(options)), + itemsToRead.value(options) + ), new ConcurrentHasPermissionTest2( runAsAdmin.value(options), - itemsToRead.value(options), - report.value(options)), + itemsToRead.value(options) + ), new ManyUserReadTest( runAsAdmin.value(options), itemsToRead.value(options), - report.value(options), randomUser.value(options)), new ReadWithMembershipTest( itemsToRead.value(options), - report.value(options), numberOfGroups.value(options), numberOfInitialAce.value(options)), new ConcurrentTraversalTest( runAsAdmin.value(options), itemsToRead.value(options), - report.value(options), randomUser.value(options)), new ConcurrentWriteACLTest(itemsToRead.value(options)), new ConcurrentEveryoneACLTest(runAsAdmin.value(options), itemsToRead.value(options)), @@ -461,20 +468,21 @@ public class BenchmarkRunner { new FullTextSearchTest( wikipedia.value(options), flatStructure.value(options), - report.value(options), withStorage.value(options)), + withStorage.value(options)), new FullTextSolrSearchTest( wikipedia.value(options), flatStructure.value(options), - report.value(options), withStorage.value(options), withServer.value(options)), + withStorage.value(options), withServer.value(options)), new FindAuthorizableWithScopeTest(numberOfUsers.value(options), setScope.value(options)), + //TODO: test LucenePropertyFullTextTest output since it still may put extra output into console through logger new LucenePropertyFullTextTest( wikipedia.value(options), flatStructure.value(options), - report.value(options), withStorage.value(options)), + withStorage.value(options)), new LucenePropertyFTSeparated( wikipedia.value(options), flatStructure.value(options), - report.value(options), withStorage.value(options)), + withStorage.value(options)), new ReplicaCrashResilienceTest(), // benchmarks for oak-auth-external @@ -517,14 +525,21 @@ public class BenchmarkRunner { + asSortedString(Arrays.asList(allBenchmarks))); } + CompositeBenchmarkOutputStrategy outputStrategy = new CompositeBenchmarkOutputStrategy(); if (argset.isEmpty()) { PrintStream out = null; if (options.has(csvFile)) { out = new PrintStream(FileUtils.openOutputStream(csvFile.value(options), true)); + outputStrategy.addStrategy(new CsvOutputStrategy(out)); + } + if (consoleFormat.value(options).equalsIgnoreCase("prettyprint")) { + outputStrategy.addStrategy(new PrettyPrintConsoleStrategy(stdOut)); + } else if (consoleFormat.value(options).equalsIgnoreCase("machine-readable")){ + outputStrategy.addStrategy(new MachineReadableConsoleStrategy(stdOut)); } for (Benchmark benchmark : benchmarks) { - if (benchmark instanceof CSVResultGenerator) { - ((CSVResultGenerator) benchmark).setPrintStream(out); + if (benchmark instanceof AbstractTest) { + ((AbstractTest) benchmark).setOutputStrategy(outputStrategy); } benchmark.run(fixtures, options.valuesOf(concurrency)); } diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BundlingNodeTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BundlingNodeTest.java index 422f1ef12b..f74336d15f 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BundlingNodeTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BundlingNodeTest.java @@ -216,8 +216,7 @@ public class BundlingNodeTest extends AbstractTest @Override protected void afterSuite() throws Exception { - System.out.printf("bundlingEnabled: %s, oakResourceEnabled: %s, readerEnabled: %s, bundlingMode: %s%n", - bundlingEnabled, oakResourceEnabled, readerEnabled, bundlingMode); + System.out.printf("bundlingEnabled: %s, oakResourceEnabled: %s, readerEnabled: %s, bundlingMode: %s%n", bundlingEnabled, oakResourceEnabled, readerEnabled, bundlingMode); } @Override diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java index b32e1e14fa..9666527f17 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java @@ -70,7 +70,7 @@ public class CompositeAuthorizationTest extends ReadDeepTreeTest { private int cnt; protected CompositeAuthorizationTest(boolean runAsAdmin, int cntConfigurations) { - super(runAsAdmin, 1000, false); + super(runAsAdmin, 1000); cnt = cntConfigurations; } diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeBenchmarkOutputStrategy.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeBenchmarkOutputStrategy.java new file mode 100644 index 0000000000..8875114088 --- /dev/null +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeBenchmarkOutputStrategy.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.oak.benchmark; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +public class CompositeBenchmarkOutputStrategy implements BenchmarkOutputStrategy { + private List strategies = new LinkedList<>(); + + public CompositeBenchmarkOutputStrategy addStrategy(BenchmarkOutputStrategy strategy) { + this.strategies.add(strategy); + return this; + } + + @Override + public void printHeader(AbstractTest test) { + for (BenchmarkOutputStrategy strategy : strategies) { + strategy.printHeader(test); + } + } + + @Override + public void printStats(AbstractTest test) { + for (BenchmarkOutputStrategy strategy : strategies) { + strategy.printStats(test); + } + + } +} diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentCreateNodesTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentCreateNodesTest.java index efa9919c22..e5ffbeee9d 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentCreateNodesTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentCreateNodesTest.java @@ -56,7 +56,6 @@ public class ConcurrentCreateNodesTest extends AbstractTest { private static final int NODE_COUNT_LEVEL2 = 50; private static final String NODE_TYPE = System.getProperty("nodeType", "nt:unstructured"); private static final boolean DISABLE_INDEX = Boolean.getBoolean("disableIndex"); - private static final boolean VERBOSE = Boolean.getBoolean("verbose"); private Writer writer; private final AtomicInteger NODE_COUNT = new AtomicInteger(); @@ -146,7 +145,7 @@ public class ConcurrentCreateNodesTest extends AbstractTest { } numNodes = NODE_COUNT.get() - numNodes; time = System.currentTimeMillis() - time; - if (this == writer && VERBOSE) { + if (this == writer) { long perSecond = numNodes * 1000 / time; System.out.println("Created " + numNodes + " in " + time + " ms. (" + perSecond + " nodes/sec)"); } diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest.java index bdfd389350..cc02125a59 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest.java @@ -42,8 +42,8 @@ public class ConcurrentHasPermissionTest extends ConcurrentReadDeepTreeTest { Session.ACTION_READ + "," + Session.ACTION_SET_PROPERTY ); - protected ConcurrentHasPermissionTest(boolean runAsAdmin, int itemsToRead, boolean doReport) { - super(runAsAdmin, itemsToRead, doReport); + protected ConcurrentHasPermissionTest(boolean runAsAdmin, int itemsToRead) { + super(runAsAdmin, itemsToRead); } protected void randomRead(Session testSession, List allPaths, int cnt) throws RepositoryException { @@ -70,9 +70,7 @@ public class ConcurrentHasPermissionTest extends ConcurrentReadDeepTreeTest { } } long end = System.currentTimeMillis(); - if (doReport) { System.out.println("Session " + testSession.getUserID() + " calling #hasPermission (Allows: "+ allows +"; Denies: "+ denies +") completed in " + (end - start)); - } } finally { if (logout) { logout(testSession); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest2.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest2.java index 9a5309fec3..2e907b2aaa 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest2.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentHasPermissionTest2.java @@ -41,8 +41,8 @@ public class ConcurrentHasPermissionTest2 extends ConcurrentHasPermissionTest { int counter = 0; final List principals = new ArrayList(); - public ConcurrentHasPermissionTest2(boolean runAsAdmin, int itemsToRead, boolean doReport) { - super(runAsAdmin, itemsToRead, doReport); + public ConcurrentHasPermissionTest2(boolean runAsAdmin, int itemsToRead) { + super(runAsAdmin, itemsToRead); } @Override diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest.java index 7e67ac1e2e..c67ab431ba 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest.java @@ -32,8 +32,8 @@ public class ConcurrentReadAccessControlledTreeTest extends ConcurrentReadDeepTr int counter = 0; public ConcurrentReadAccessControlledTreeTest( - boolean runAsAdmin, int itemsToRead, boolean doReport) { - super(runAsAdmin, itemsToRead, doReport); + boolean runAsAdmin, int itemsToRead) { + super(runAsAdmin, itemsToRead); } @Override diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest2.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest2.java index 7abc7ebd6a..82ac40ac82 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest2.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadAccessControlledTreeTest2.java @@ -38,8 +38,8 @@ public class ConcurrentReadAccessControlledTreeTest2 extends ConcurrentReadDeepT int counter = 0; final List principals = new ArrayList(); - public ConcurrentReadAccessControlledTreeTest2(boolean runAsAdmin, int itemsToRead, boolean doReport) { - super(runAsAdmin, itemsToRead, doReport); + public ConcurrentReadAccessControlledTreeTest2(boolean runAsAdmin, int itemsToRead) { + super(runAsAdmin, itemsToRead); } @Override diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadDeepTreeTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadDeepTreeTest.java index 5ef8296a52..3e859924da 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadDeepTreeTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadDeepTreeTest.java @@ -21,8 +21,8 @@ package org.apache.jackrabbit.oak.benchmark; */ public class ConcurrentReadDeepTreeTest extends ReadDeepTreeTest { - public ConcurrentReadDeepTreeTest(boolean runAsAdmin, int itemsToRead, boolean doReport) { - super(runAsAdmin, itemsToRead, doReport); + public ConcurrentReadDeepTreeTest(boolean runAsAdmin, int itemsToRead) { + super(runAsAdmin, itemsToRead); } } diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadRandomNodeAndItsPropertiesTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadRandomNodeAndItsPropertiesTest.java index 22692ecade..e6da84ff26 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadRandomNodeAndItsPropertiesTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadRandomNodeAndItsPropertiesTest.java @@ -29,8 +29,8 @@ import javax.jcr.Session; */ public class ConcurrentReadRandomNodeAndItsPropertiesTest extends ReadDeepTreeTest { - public ConcurrentReadRandomNodeAndItsPropertiesTest(boolean runAsAdmin, int itemsToRead, boolean doReport) { - super(runAsAdmin, itemsToRead, doReport); + public ConcurrentReadRandomNodeAndItsPropertiesTest(boolean runAsAdmin, int itemsToRead) { + super(runAsAdmin, itemsToRead); } protected void visitingProperty(Property property, int i) throws RepositoryException { @@ -69,9 +69,7 @@ public class ConcurrentReadRandomNodeAndItsPropertiesTest extends ReadDeepTreeTe } } long end = System.currentTimeMillis(); - if (doReport) { System.out.println("Session " + testSession.getUserID() + " reading " + (cnt-noAccess) + " (Nodes: "+ nodeCnt +"; Properties: "+propertyCnt+") completed in " + (end - start)); - } } finally { if (logout) { logout(testSession); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadSinglePolicyTreeTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadSinglePolicyTreeTest.java index 99dce4ea8d..1ff041d37f 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadSinglePolicyTreeTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentReadSinglePolicyTreeTest.java @@ -33,8 +33,8 @@ import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal; public class ConcurrentReadSinglePolicyTreeTest extends ConcurrentReadDeepTreeTest { public ConcurrentReadSinglePolicyTreeTest( - boolean runAsAdmin, int itemsToRead, boolean doReport) { - super(runAsAdmin, itemsToRead, doReport); + boolean runAsAdmin, int itemsToRead) { + super(runAsAdmin, itemsToRead); } @Override diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentTraversalTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentTraversalTest.java index 51eae8ebfc..c938f38130 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentTraversalTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ConcurrentTraversalTest.java @@ -32,8 +32,8 @@ public class ConcurrentTraversalTest extends ManyUserReadTest { /* number of levels to traverse */ private static final int MAX_LEVEL = 10; - protected ConcurrentTraversalTest(boolean runAsAdmin, int itemsToRead, boolean doReport, boolean randomUser) { - super(runAsAdmin, itemsToRead, doReport, randomUser); + protected ConcurrentTraversalTest(boolean runAsAdmin, int itemsToRead, boolean randomUser) { + super(runAsAdmin, itemsToRead, randomUser); } @Override @@ -68,9 +68,7 @@ public class ConcurrentTraversalTest extends ManyUserReadTest { } } long end = System.currentTimeMillis(); - if (doReport) { System.out.println("Session " + testSession.getUserID() + " reading " + (cnt-noAccess) + " (Nodes: "+ nodeCnt +"; Properties: "+propertyCnt+") completed in " + (end - start)); - } } finally { if (logout) { logout(testSession); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CreateNodesBenchmark.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CreateNodesBenchmark.java index 56812a6f5f..be8ddacda9 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CreateNodesBenchmark.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CreateNodesBenchmark.java @@ -60,9 +60,7 @@ public class CreateNodesBenchmark extends Benchmark { Node testRoot = session.getRootNode().addNode("r" + AbstractTest.TEST_ID); createNodes(testRoot, 20, 6, count, startTime); long duration = System.currentTimeMillis() - startTime; - System.out.format( - "Created %d nodes in %d seconds (%.2fms/node)%n", - count.get(), duration / 1000, (double) duration / count.get()); + System.out.format("Created %d nodes in %d seconds (%.2fms/node)%n", count.get(), duration / 1000, (double) duration / count.get()); } private void createNodes(Node n, int nodesPerLevel, @@ -74,10 +72,7 @@ public class CreateNodesBenchmark extends Benchmark { nodes.add(n.addNode("folder-" + i, "nt:folder")); if (count.incrementAndGet() % 1000 == 0) { long duration = System.currentTimeMillis() - startTime; - System.out.format( - "Created %d nodes in %d seconds (%.2fms/node)...%n", - count.get(), duration / 1000, - (double) duration / count.get()); + System.out.format("Created %d nodes in %d seconds (%.2fms/node)...%n", count.get(), duration / 1000, (double) duration / count.get()); } } n.getSession().save(); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CsvOutputStrategy.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CsvOutputStrategy.java new file mode 100644 index 0000000000..f91e1755f0 --- /dev/null +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CsvOutputStrategy.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.oak.benchmark; + +import com.google.common.base.Joiner; +import org.apache.commons.lang.ArrayUtils; + +import java.io.PrintStream; + +public class CsvOutputStrategy extends AbstractOutputStrategy implements BenchmarkOutputStrategy { + private PrintStream out; + + public CsvOutputStrategy(PrintStream out) { + this.out = out; + } + + private String getStatsNamesJoined(AbstractTest test) { + return Joiner.on(',').join(test.statsNames()); + } + + private String getStatsFormatsJoined(AbstractTest test) { + String comment = test.comment(); + String[] formatPattern = test.statsFormats(); + if (comment != null){ + String commentPattern = "#%s"; + formatPattern = (String[]) ArrayUtils.add(formatPattern, commentPattern); + } + return formatPattern.length > 0 ? Joiner.on(',').join(formatPattern) : null; + } + + @Override + public void printHeader(AbstractTest test) { + out.format( + "# %-26.26s, C, min, 10%%, 50%%, 90%%, max, N%s%n", + test.toString(), getStatsNamesJoined(test)); + } + + @Override + public void printStats(AbstractTest test) { + String concatenatedFormat = Joiner.on(',').skipNulls().join("%-28.28s, %6d, %6.0f, %6.0f, %6.0f, %6.0f, %6.0f, %6d", getStatsFormatsJoined(test), "%n"); + out.format(concatenatedFormat, getAllStatsJoined(test)); + } +} diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java index 76872c5ab4..ffedc562f9 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java @@ -125,9 +125,7 @@ public class CugOakTest extends CugTest { } } long end = System.currentTimeMillis(); - if (doReport) { System.out.println("ContentSession " + cs.getAuthInfo().getUserID() + " reading " + (itemsToRead - noAccess) + " (Tree: " + nodeCnt + "; PropertyState: " + propertyCnt + ") completed in " + (end - start)); - } } finally { if (logout) { readSession.close(); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java index a0f9837d71..7db7cbe571 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java @@ -46,7 +46,7 @@ public class CugTest extends ReadDeepTreeTest { private final boolean reverseOrder; protected CugTest(boolean runAsAdmin, int itemsToRead, boolean singleSession, @Nonnull List supportedPaths, boolean reverseOrder) { - super(runAsAdmin, itemsToRead, false, singleSession); + super(runAsAdmin, itemsToRead, singleSession); this.params = ConfigurationParameters.of(AuthorizationConfiguration.NAME, ConfigurationParameters.of( "cugSupportedPaths", supportedPaths.toArray(new String[supportedPaths.size()]), "cugEnabled", true)); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java index 5be07db90a..35bdfceba0 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java @@ -88,8 +88,8 @@ public class FullTextSearchTest extends AbstractTest { } System.out.printf("numOfIndexes: %d, refreshDeltaMillis: %d, asyncInterval: %d, queueSize: %d , " + "hybridIndexEnabled: %s, indexingMode: %s, useOakCodec: %s, cleanerIntervalInSecs: %d, " + - "syncIndexing: %s %n", - numOfIndexes, refreshDeltaMillis, asyncInterval, queueSize, hybridIndexEnabled, - indexingMode, useOakCodec, cleanerIntervalInSecs, syncIndexing); + "syncIndexing: %s %n", numOfIndexes, refreshDeltaMillis, asyncInterval, queueSize, hybridIndexEnabled, indexingMode, useOakCodec, cleanerIntervalInSecs, syncIndexing); if (dumpStats) { dumpStats(); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTSeparated.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTSeparated.java index 630d4feaae..b3f6d8519f 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTSeparated.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTSeparated.java @@ -41,9 +41,8 @@ public class LucenePropertyFTSeparated extends LucenePropertyFullTextTest { public LucenePropertyFTSeparated(final File dump, final boolean flat, - final boolean doReport, final Boolean storageEnabled) { - super(dump, flat, doReport, storageEnabled); + super(dump, flat, storageEnabled); currentTest = this.getClass().getSimpleName(); } diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFullTextTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFullTextTest.java index 36df33d830..8a493dd95d 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFullTextTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFullTextTest.java @@ -166,9 +166,8 @@ public class LucenePropertyFullTextTest extends AbstractTest 0 ? joiner.join(formatPattern) : null; + } + + @Override + public void printStats(AbstractTest test) { + String concatenatedFormat = Joiner.on(",").skipNulls().join("%s,%s,%d,%.0f,%.0f,%.0f,%.0f,%.0f,%d", getStatsFormatsJoined(test)); + StringBuilder sb = new StringBuilder(); + Formatter formatter = new Formatter(sb); + Object[] nameAndStats = ArrayUtils.addAll(new Object[]{test.toString()}, getAllStatsJoined(test)); + formatter.format(concatenatedFormat, nameAndStats); + out.println(sb.toString().replaceAll(", *", ",")); + } +} diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyNodes.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyNodes.java index 38fbf6f2de..8ca4ed2b2e 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyNodes.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyNodes.java @@ -26,12 +26,6 @@ import org.apache.jackrabbit.oak.fixture.RepositoryFixture; public class ManyNodes extends Benchmark { - private final boolean verbose; - - ManyNodes(boolean verbose) { - this.verbose = verbose; - } - @Override public void run(Iterable fixtures) { for (RepositoryFixture fixture : fixtures) { @@ -76,9 +70,7 @@ public class ManyNodes extends Benchmark { session.save(); if (total % 10000 == 0) { long now = System.currentTimeMillis(); - if (verbose) { System.out.println(total + " nodes in " + (now - time) + " ms"); - } time = now; } } diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyUserReadTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyUserReadTest.java index 5b7e8afca6..9ad3f80d7d 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyUserReadTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyUserReadTest.java @@ -37,8 +37,8 @@ public class ManyUserReadTest extends ReadDeepTreeTest { private final int numberOfMembers = 10; private final boolean randomUser; - protected ManyUserReadTest(boolean runAsAdmin, int itemsToRead, boolean doReport, boolean randomUser) { - super(runAsAdmin, itemsToRead, doReport, !randomUser); + protected ManyUserReadTest(boolean runAsAdmin, int itemsToRead, boolean randomUser) { + super(runAsAdmin, itemsToRead, !randomUser); this.randomUser = randomUser; } diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ObservationTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ObservationTest.java index c1502f51c3..834f24c200 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ObservationTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ObservationTest.java @@ -198,7 +198,6 @@ public class ObservationTest extends Benchmark { double nps = (double) nc / t * 1000; double eps = (double) ec / t * 1000; double epn = (double) ec / nc / EVENTS_PER_NODE; - System.out.format( "%7d %7d %7.1f %7d %7.1f %7.2f %7d %7d%n", t, nc, nps, ec, eps, epn, ql[0], ql[1]); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/PrettyPrintConsoleStrategy.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/PrettyPrintConsoleStrategy.java new file mode 100644 index 0000000000..d46f2f7d79 --- /dev/null +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/PrettyPrintConsoleStrategy.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.oak.benchmark; + +import com.google.common.base.Joiner; +import org.apache.commons.lang.ArrayUtils; + +import java.io.PrintStream; + +public class PrettyPrintConsoleStrategy extends AbstractOutputStrategy implements BenchmarkOutputStrategy { + + private final PrintStream out; + + public PrettyPrintConsoleStrategy(PrintStream out) { + this.out = out; + } + + @Override + public void printHeader(AbstractTest test) { + out.format( + "# %-26.26s C min 10%% 50%% 90%% max N%s%n", + test.toString(), getStatsNamesJoined(test)); + } + + private String getStatsNamesJoined(AbstractTest test) { + return Joiner.on(" ").join(test.statsNames()); + } + + private String getStatsFormatsJoined(AbstractTest test) { + String comment = test.comment(); + String[] formatPattern = test.statsFormats(); + if (comment != null){ + String commentPattern = " #%s"; + formatPattern = (String[]) ArrayUtils.add(formatPattern, commentPattern); + } + return Joiner.on(" ").join(formatPattern); + } + + @Override + public void printStats(AbstractTest test) { + out.format( + "%-28.28s %6d %6.0f %6.0f %6.0f %6.0f %6.0f %6d"+getStatsFormatsJoined(test)+"%n", + getAllStatsJoined(test)); + } +} diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java index 87284a6e37..3f19cfa80f 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadDeepTreeTest.java @@ -44,7 +44,6 @@ public class ReadDeepTreeTest extends AbstractTest { protected final boolean runAsAdmin; protected final int itemsToRead; - protected final boolean doReport; protected final boolean singleSession; @@ -55,14 +54,13 @@ public class ReadDeepTreeTest extends AbstractTest { protected List allPaths = new ArrayList(); - protected ReadDeepTreeTest(boolean runAsAdmin, int itemsToRead, boolean doReport) { - this(runAsAdmin, itemsToRead, doReport, true); + protected ReadDeepTreeTest(boolean runAsAdmin, int itemsToRead) { + this(runAsAdmin, itemsToRead, true); } - public ReadDeepTreeTest(boolean runAsAdmin, int itemsToRead, boolean doReport, boolean singleSession) { + public ReadDeepTreeTest(boolean runAsAdmin, int itemsToRead, boolean singleSession) { this.runAsAdmin = runAsAdmin; this.itemsToRead = itemsToRead; - this.doReport = doReport; this.singleSession = singleSession; } @@ -160,9 +158,7 @@ public class ReadDeepTreeTest extends AbstractTest { } } long end = System.currentTimeMillis(); - if (doReport) { System.out.println("Session " + testSession.getUserID() + " reading " + (cnt-noAccess) + " (Nodes: "+ nodeCnt +"; Properties: "+propertyCnt+") completed in " + (end - start)); - } } finally { if (logout) { logout(testSession); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java index f192b8fbfc..0f226edc92 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadWithMembershipTest.java @@ -47,8 +47,8 @@ public class ReadWithMembershipTest extends ReadDeepTreeTest { private final int membershipSize; private final int numberOfAces; - protected ReadWithMembershipTest(int itemsToRead, boolean doReport, int membershipSize, int numberOfAces) { - super(false, itemsToRead, doReport, false); + protected ReadWithMembershipTest(int itemsToRead, int membershipSize, int numberOfAces) { + super(false, itemsToRead, false); userId = "user-" + UUID.randomUUID(); this.membershipSize = membershipSize; this.numberOfAces = numberOfAces; diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReplicaCrashResilienceTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReplicaCrashResilienceTest.java index 3327715d59..6f3c1a704c 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReplicaCrashResilienceTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ReplicaCrashResilienceTest.java @@ -16,7 +16,6 @@ */ package org.apache.jackrabbit.oak.benchmark; -import javax.jcr.LoginException; import javax.jcr.Node; import javax.jcr.Repository; import javax.jcr.RepositoryException; diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/wikipedia/WikipediaImport.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/wikipedia/WikipediaImport.java index 9faf349511..260867bc37 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/wikipedia/WikipediaImport.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/wikipedia/WikipediaImport.java @@ -45,8 +45,6 @@ public class WikipediaImport extends Benchmark { private final File dump; - private final boolean doReport; - private final boolean flat; /** @@ -55,16 +53,15 @@ public class WikipediaImport extends Benchmark { */ private boolean haltImport; - public WikipediaImport(File dump, boolean flat, boolean doReport) { + public WikipediaImport(File dump, boolean flat) { this.dump = dump; this.flat = flat; - this.doReport = doReport; } @Override public void run(Iterable fixtures) { if (dump == null) { - System.out.format("Missing Wikipedia dump, skipping import benchmark.%n"); + System.out.println("Missing Wikipedia dump, skipping import benchmark.%n"); return; } if (!dump.isFile()) { @@ -73,8 +70,7 @@ public class WikipediaImport extends Benchmark { } for (RepositoryFixture fixture : fixtures) { if (fixture.isAvailable(1)) { - System.out.format( - "%s: Wikipedia import benchmark%n", fixture); + System.out.format("%s: Wikipedia import benchmark%n", fixture); try { Repository[] cluster = setupCluster(fixture); try { @@ -124,9 +120,7 @@ public class WikipediaImport extends Benchmark { int count = 0; int code = 0; - if(doReport) { System.out.format("Importing %s...%n", dump); - } String type = "nt:unstructured"; if (session.getWorkspace().getNodeTypeManager().hasNodeType("oak:Unstructured")) { @@ -195,12 +189,8 @@ public class WikipediaImport extends Benchmark { session.save(); - if (doReport) { long millis = System.currentTimeMillis() - start; - System.out.format( - "Imported %d pages in %d seconds (%.2fms/page)%n", - count, millis / 1000, (double) millis / count); - } + System.out.format("Imported %d pages in %d seconds (%.2fms/page)%n", count, millis / 1000, (double) millis / count); return code; } @@ -209,12 +199,8 @@ public class WikipediaImport extends Benchmark { if (!flat) { session.save(); } - if (doReport) { long millis = System.currentTimeMillis() - start; - System.out.format( - "Added %d pages in %d seconds (%.2fms/page)%n", - count, millis / 1000, (double) millis / count); - } + System.out.format("Added %d pages in %d seconds (%.2fms/page)%n", count, millis / 1000, (double) millis / count); } protected void pageAdded(String title, String text) { @@ -232,12 +218,8 @@ public class WikipediaImport extends Benchmark { traverse(wikipedia); - if (doReport) { long millis = System.currentTimeMillis() - start; - System.out.format( - "Traversed %d pages in %d seconds (%.2fms/page)%n", - count, millis / 1000, (double) millis / count); - } + System.out.format("Traversed %d pages in %d seconds (%.2fms/page)%n", count, millis / 1000, (double) millis / count); return code; } @@ -251,11 +233,9 @@ public class WikipediaImport extends Benchmark { code += page.getProperty("text").getString().hashCode(); count++; - if (count % 1000 == 0 && doReport) { + if (count % 1000 == 0) { long millis = System.currentTimeMillis() - start; - System.out.format( - "Read %d pages in %d seconds (%.2fms/page)%n", - count, millis / 1000, (double) millis / count); + System.out.format("Read %d pages in %d seconds (%.2fms/page)%n", count, millis / 1000, (double) millis / count); } traverse(page); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/ScalabilityRunner.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/ScalabilityRunner.java index a25e50c39b..dce3f55865 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/ScalabilityRunner.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/ScalabilityRunner.java @@ -265,6 +265,7 @@ public class ScalabilityRunner { new PrintStream(FileUtils.openOutputStream(csvFile.value(options), true), false, Charsets.UTF_8.name()); } + //TODO: use same approach with composite output strategy for scalability runner for (ScalabilitySuite suite : suites) { if (suite instanceof CSVResultGenerator) { ((CSVResultGenerator) suite).setPrintStream(out);