in oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/ScalabilityRunner.java [59:195]
public static void main(String[] args) throws Exception {
initOptionSet(args);
OptionSet options = parser.parse(args);
if (options.has(scalabilityOptions.getHelp())) {
parser.printHelpOn(System.out);
System.exit(0);
}
int cacheSize = scalabilityOptions.getCache().value(options);
RepositoryFixture[] allFixtures = new RepositoryFixture[] {
new JackrabbitRepositoryFixture(scalabilityOptions.getBase().value(options), cacheSize),
OakRepositoryFixture.getMemoryNS(cacheSize * MB),
OakRepositoryFixture.getMongo(
scalabilityOptions.getHost().value(options),
scalabilityOptions.getPort().value(options),
scalabilityOptions.getDbName().value(options),
scalabilityOptions.getDropDBAfterTest().value(options),
cacheSize * MB,
scalabilityOptions.isThrottlingEnabled().value(options)),
OakRepositoryFixture.getMongoWithDS(
scalabilityOptions.getHost().value(options),
scalabilityOptions.getPort().value(options),
scalabilityOptions.getDbName().value(options),
scalabilityOptions.getDropDBAfterTest().value(options),
cacheSize * MB,
scalabilityOptions.getBase().value(options),
scalabilityOptions.getFdsCache().value(options),
scalabilityOptions.isThrottlingEnabled().value(options)),
OakRepositoryFixture.getMongoNS(
scalabilityOptions.getHost().value(options),
scalabilityOptions.getPort().value(options),
scalabilityOptions.getDbName().value(options),
scalabilityOptions.getDropDBAfterTest().value(options),
cacheSize * MB,
scalabilityOptions.isThrottlingEnabled().value(options)),
OakRepositoryFixture.getSegmentTar(
scalabilityOptions.getBase().value(options), 256, cacheSize,
scalabilityOptions.getMmap().value(options), Segment.MEDIUM_LIMIT),
OakRepositoryFixture.getSegmentTarWithDataStore(scalabilityOptions.getBase().value(options),
256, cacheSize,
scalabilityOptions.getMmap().value(options), Segment.MEDIUM_LIMIT,
scalabilityOptions.getFdsCache().value(options)),
OakRepositoryFixture.getSegmentTarWithColdStandby(scalabilityOptions.getBase().value(options), 256, cacheSize,
scalabilityOptions.getMmap().value(options),
Segment.MEDIUM_LIMIT,
scalabilityOptions.getColdUseDataStore().value(options),
scalabilityOptions.getFdsCache().value(options),
scalabilityOptions.getColdSyncInterval().value(options),
scalabilityOptions.getColdShareDataStore().value(options),
scalabilityOptions.getColdSecure().value(options),
scalabilityOptions.getColdOneShotRun().value(options)),
OakRepositoryFixture.getRDB(scalabilityOptions.getRdbjdbcuri().value(options),
scalabilityOptions.getRdbjdbcuser().value(options),
scalabilityOptions.getRdbjdbcpasswd().value(options),
scalabilityOptions.getRdbjdbctableprefix().value(options),
scalabilityOptions.getDropDBAfterTest().value(options), cacheSize * MB, -1),
OakRepositoryFixture.getRDBWithDS(scalabilityOptions.getRdbjdbcuri().value(options),
scalabilityOptions.getRdbjdbcuser().value(options),
scalabilityOptions.getRdbjdbcpasswd().value(options),
scalabilityOptions.getRdbjdbctableprefix().value(options),
scalabilityOptions.getDropDBAfterTest().value(options), cacheSize * MB,
scalabilityOptions.getBase().value(options),
scalabilityOptions.getFdsCache().value(options), -1)
};
addToScalabilitySuiteList(
Arrays.asList(
new ScalabilityStandbySuite()
.addBenchmarks(new StandbyBulkTransferBenchmark()
)
));
Set<String> argset = new HashSet<>(scalabilityOptions.getNonOption().values(options));
List<RepositoryFixture> fixtures = new ArrayList<>();
for (RepositoryFixture fixture : allFixtures) {
if (argset.remove(fixture.toString())) {
fixtures.add(fixture);
}
}
Map<String, List<String>> argmap = new HashMap<>();
// Split the args to get suites and benchmarks (i.e. suite:benchmark1,benchmark2)
for(String arg : argset) {
List<String> tokens = Splitter.on(":").limit(2).splitToList(arg);
if (tokens.size() > 1) {
argmap.put(tokens.get(0), Splitter.on(",").trimResults().splitToList(tokens.get(1)));
} else {
argmap.put(tokens.get(0), null);
}
argset.remove(arg);
}
if (argmap.isEmpty()) {
System.err.println("Warning: no scalability suites specified, " +
"supported are: " + Arrays.asList(allSuites));
}
List<ScalabilitySuite> suites = new ArrayList<>();
for (ScalabilitySuite suite : allSuites) {
if (argmap.containsKey(suite.toString())) {
List<String> benchmarks = argmap.get(suite.toString());
// Only keep requested benchmarks
if (benchmarks != null) {
Iterator<String> iter = suite.getBenchmarks().keySet().iterator();
for (;iter.hasNext();) {
String availBenchmark = iter.next();
if (!benchmarks.contains(availBenchmark)) {
iter.remove();
}
}
}
suites.add(suite);
argmap.remove(suite.toString());
}
}
if (argmap.isEmpty()) {
PrintStream out = null;
if (options.has(scalabilityOptions.getCsvFile())) {
out =
new PrintStream(FileUtils.openOutputStream(scalabilityOptions.getCsvFile().value(options), true), false,
StandardCharsets.UTF_8);
}
for (ScalabilitySuite suite : suites) {
if (suite instanceof CSVResultGenerator) {
((CSVResultGenerator) suite).setPrintStream(out);
}
suite.run(fixtures);
}
if (out != null) {
out.close();
}
} else {
System.err.println("Unknown arguments: " + argset);
}
}