String plugin = argsLine.getOptionValue("b");
String classname = pluginConfig.getString("/plugin[@name='" + plugin + "']");
if (classname == null)
throw new ParseException("Plugin " + plugin + " is undefined in config/plugin.xml");
BenchmarkModule bench = ClassUtil.newInstance(classname, new Object[] { wrkld }, new Class<?>[] { WorkloadConfiguration.class });
assert (bench != null);
Map<String, Object> initDebug = new ListOrderedMap<String, Object>();
initDebug.put("Benchmark", String.format("%s {%s}", plugin.toUpperCase(), classname));
initDebug.put("Configuration", configFile);
initDebug.put("Type", wrkld.getDBType());
initDebug.put("Driver", wrkld.getDBDriver());
initDebug.put("URL", wrkld.getDBConnection());
initDebug.put("Isolation", xmlConfig.getString("isolation", "TRANSACTION_SERIALIZABLE [DEFAULT]"));
initDebug.put("Scale Factor", wrkld.getScaleFactor());
INIT_LOG.info(SINGLE_LINE + "\n\n" + StringUtil.formatMaps(initDebug));
INIT_LOG.info(SINGLE_LINE);
// Load TransactionTypes
List<TransactionType> ttypes = new ArrayList<TransactionType>();
// Always add an INVALID type for Carlo
ttypes.add(TransactionType.INVALID);
for (int i = 0; i < numTxnTypes; i++) {
String key = "transactiontypes.transactiontype(" + i + ")";
String txnName = xmlConfig.getString(key + ".name");
int txnId = i + 1;
if (xmlConfig.containsKey(key + ".id")) {
txnId = xmlConfig.getInt(key + ".id");
}
ttypes.add(bench.initTransactionType(txnName, txnId));
} // FOR
TransactionTypes tt = new TransactionTypes(ttypes);
wrkld.setTransTypes(tt);
LOG.debug("Using the following transaction types: " + tt);
// Export StatementDialects
if (isBooleanOptionSet(argsLine, "dialects-export")) {
if (bench.getStatementDialects() != null) {
LOG.info("Exporting StatementDialects for " + bench);
String xml = bench.getStatementDialects().export(wrkld.getDBType(),
bench.getProcedures().values());
System.out.println(xml);
System.exit(0);
}
throw new RuntimeException("No StatementDialects is available for " + bench);
}
@Deprecated
boolean verbose = argsLine.hasOption("v");
// Create the Benchmark's Database
if (isBooleanOptionSet(argsLine, "create")) {
CREATE_LOG.info("Creating new " + bench.getBenchmarkName().toUpperCase() + " database...");
runCreator(bench, verbose);
CREATE_LOG.info("Finished!");
CREATE_LOG.info(SINGLE_LINE);
} else if (CREATE_LOG.isDebugEnabled()) {
CREATE_LOG.debug("Skipping creating benchmark database tables");
CREATE_LOG.info(SINGLE_LINE);
}
// Clear the Benchmark's Database
if (isBooleanOptionSet(argsLine, "clear")) {
CREATE_LOG.info("Resetting " + bench.getBenchmarkName().toUpperCase() + " database...");
bench.clearDatabase();
CREATE_LOG.info("Finished!");
CREATE_LOG.info(SINGLE_LINE);
} else if (CREATE_LOG.isDebugEnabled()) {
CREATE_LOG.debug("Skipping creating benchmark database tables");
CREATE_LOG.info(SINGLE_LINE);
}
// Execute Loader
if (isBooleanOptionSet(argsLine, "load")) {
LOAD_LOG.info("Loading data into " + bench.getBenchmarkName().toUpperCase() + " database...");
runLoader(bench, verbose);
LOAD_LOG.info("Finished!");
LOAD_LOG.info(SINGLE_LINE);
} else if (LOAD_LOG.isDebugEnabled()) {
LOAD_LOG.debug("Skipping loading benchmark database records");