package voldemort.performance.benchmark;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
import voldemort.store.bdb.BdbStorageConfiguration;
import voldemort.store.views.View;
import voldemort.utils.Props;
import voldemort.utils.ReflectUtils;
import voldemort.utils.Utils;
public class BenchmarkViews {
private Benchmark benchmark;
public BenchmarkViews() {}
public static View<?, ?, ?, ?> loadTransformation(String className) {
if(className == null)
return null;
Class<?> transClass = ReflectUtils.loadClass(className.trim());
return (View<?, ?, ?, ?>) ReflectUtils.callConstructor(transClass, new Object[] {});
}
public static List<String> getTransforms() {
List<String> transforms = new ArrayList<String>();
transforms.add("concat");
transforms.add("concat-upper");
return transforms;
}
public void runBenchmark(Props props) throws Exception {
benchmark = new Benchmark();
benchmark.initialize(props);
benchmark.warmUpAndRun();
benchmark.close();
}
public static void main(String[] args) throws IOException {
OptionParser parser = new OptionParser();
parser.accepts(Benchmark.RECORD_COUNT, "number of records inserted during warmup phase")
.withRequiredArg()
.ofType(Integer.class);
parser.accepts(Benchmark.OPS_COUNT, "number of operations to do")
.withRequiredArg()
.ofType(Integer.class);
parser.accepts(Benchmark.HELP);
OptionSet options = parser.parse(args);
if(options.has(Benchmark.HELP)) {
parser.printHelpOn(System.out);
System.exit(0);
}
if(!options.has(Benchmark.RECORD_COUNT) || !options.has(Benchmark.OPS_COUNT)) {
parser.printHelpOn(System.out);
Utils.croak("Missing params");
System.exit(0);
}
Props props = new Props();
props.put(Benchmark.RECORD_COUNT, (Integer) options.valueOf(Benchmark.RECORD_COUNT));
props.put(Benchmark.OPS_COUNT, (Integer) options.valueOf(Benchmark.OPS_COUNT));
props.put(Benchmark.STORAGE_CONFIGURATION_CLASS,
BdbStorageConfiguration.class.getCanonicalName());
props.put(Benchmark.STORE_TYPE, "view");
props.put(Benchmark.VIEW_CLASS, "voldemort.store.views.UpperCaseView");
props.put(Benchmark.HAS_TRANSFORMS, "true");
BenchmarkViews benchmark = null;
try {
benchmark = new BenchmarkViews();
benchmark.runBenchmark(props);
} catch(Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
}