package org.spotter.ext.workload.tpcw;
import java.util.HashSet;
import java.util.Set;
import org.lpe.common.config.ConfigParameterDescription;
import org.lpe.common.util.LpeSupportedTypes;
import org.spotter.core.workload.AbstractWorkloadExtension;
import org.spotter.core.workload.IWorkloadAdapter;
public class TpcwRbeExtension extends AbstractWorkloadExtension {
private static final String EXTENSION_DESCRIPTION = "Used for TPCW Remote Browser Emulator!";
public static final String PAR_EB_FACTORY = "EB factory";
public static final String PAR_THINK_TIME = "think time factor";
public static final String PAR_NUM_CUSTOMERS = "DB num customers";
public static final String PAR_NUM_ITEMS = "DB num items";
public static final String PAR_URL = "base URL";
public static final String BROWSING_MIX = "Browsing Mix";
public static final String SHOPPING_MIX = "Shopping Mix";
public static final String ORDERING_MIX = "Ordering Mix";
@Override
public String getName() {
// TODO Auto-generated method stub
return "TPCW RBE Extension";
}
@Override
public IWorkloadAdapter createExtensionArtifact() {
return new TpcwRbeDriver(this);
}
private ConfigParameterDescription createEBFactoryParameter() {
ConfigParameterDescription parameter = new ConfigParameterDescription(PAR_EB_FACTORY, LpeSupportedTypes.String);
parameter.setMandatory(true);
Set<String> options = new HashSet<>();
options.add(BROWSING_MIX);
options.add(SHOPPING_MIX);
options.add(ORDERING_MIX);
parameter.setOptions(options);
parameter.setDefaultValue(BROWSING_MIX);
parameter.setDescription("Mix Type");
return parameter;
}
private ConfigParameterDescription createThinkTimeFactorParameter() {
ConfigParameterDescription parameter = new ConfigParameterDescription(PAR_THINK_TIME, LpeSupportedTypes.Double);
parameter.setMandatory(true);
parameter.setDefaultValue(String.valueOf(1.0));
parameter.setDescription("number of emulated browsers");
return parameter;
}
private ConfigParameterDescription createNumDBCustomersParameter() {
ConfigParameterDescription parameter = new ConfigParameterDescription(PAR_NUM_CUSTOMERS,
LpeSupportedTypes.Integer);
parameter.setMandatory(true);
parameter.setDefaultValue(String.valueOf(100));
parameter.setDescription("number of customers in the database");
return parameter;
}
private ConfigParameterDescription createNumDBItemsParameter() {
ConfigParameterDescription parameter = new ConfigParameterDescription(PAR_NUM_ITEMS, LpeSupportedTypes.Integer);
parameter.setMandatory(true);
parameter.setDefaultValue(String.valueOf(100));
parameter.setDescription("number of items in the database");
return parameter;
}
private ConfigParameterDescription createURLParameter() {
ConfigParameterDescription parameter = new ConfigParameterDescription(PAR_URL, LpeSupportedTypes.String);
parameter.setMandatory(true);
parameter.setDefaultValue("http://");
parameter.setDescription("Base URL of the TPC-W application");
return parameter;
}
@Override
protected void initializeConfigurationParameters() {
addConfigParameter(createEBFactoryParameter());
addConfigParameter(createThinkTimeFactorParameter());
addConfigParameter(createNumDBCustomersParameter());
addConfigParameter(createNumDBItemsParameter());
addConfigParameter(createURLParameter());
}
@Override
public boolean testConnection(String host, String port) {
return true;
}
@Override
public boolean isRemoteExtension() {
return false;
}
}