package me.brandonc.benchmark.chart;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import me.brandonc.benchmark.config.Configuration;
import me.brandonc.benchmark.config.PropertiesBasedConfiguration;
public class ChartGenerator {
public static void main(String[] args) {
Configuration configuration = new PropertiesBasedConfiguration("configuration/configuration.properties");
File resultDir = new File(configuration.getString("result.dir"));
File chartDir = new File(configuration.getString("chart.dir"));
int width = configuration.getIntValue("chart.width");
int height = configuration.getIntValue("chart.height");
if (!resultDir.exists() || !resultDir.isDirectory()) {
System.err.println("Benchmark result dir is not exist");
System.err.println(1);
}
if (!chartDir.exists()) {
chartDir.mkdir();
}
ResultSet resultSet = new ResultSet();
resultSet.loadDataFromFolder(resultDir);
String[] users = configuration.getStringArray("workload.users");
String[] dataSizeSet = configuration.getStringArray("workload.dataSize");
String[] dataStoreSet = new String[] { "Memcached", "Redis", "Mongodb", "MySQL" };
for (String dataSize : dataSizeSet) {
for (String dataStore : dataStoreSet) {
Map<Column, String> conditions = new HashMap<Column, String>();
conditions.put(Column.DATA_SIZE, dataSize);
conditions.put(Column.DATASTORE, dataStore);
ChartHelper.drawChart(chartDir, width, height, resultSet, Column.METHOD, Column.THREAD, conditions);
}
}
for (String user : users) {
for (String dataStore : dataStoreSet) {
Map<Column, String> conditions = new HashMap<Column, String>();
conditions.put(Column.THREAD, user);
conditions.put(Column.DATASTORE, dataStore);
ChartHelper.drawChart(chartDir, width, height, resultSet, Column.METHOD, Column.DATA_SIZE, conditions);
}
}
for (String dataSize : dataSizeSet) {
for (String dataStore : dataStoreSet) {
Map<Column, String> conditions = new HashMap<Column, String>();
conditions.put(Column.DATA_SIZE, dataSize);
ChartHelper.drawChart(chartDir, width, height, resultSet, Column.METHOD, Column.THREAD, conditions);
}
}
for (String user : users) {
for (String dataStore : dataStoreSet) {
Map<Column, String> conditions = new HashMap<Column, String>();
conditions.put(Column.THREAD, user);
ChartHelper.drawChart(chartDir, width, height, resultSet, Column.METHOD, Column.DATA_SIZE, conditions);
}
}
}
}