add new test for parameterization
add new test for parameterization
This commit is contained in:
parent
fbd59fd03f
commit
28ff64a432
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -0,0 +1 @@
|
||||||
|
row1;10;11~row2;20;21~row3,30,31~
|
|
@ -1,5 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<runScenario>
|
<runScenario>
|
||||||
|
<definedParams/>
|
||||||
<pages>
|
<pages>
|
||||||
<page>
|
<page>
|
||||||
<batches>
|
<batches>
|
||||||
|
|
|
@ -91,4 +91,10 @@ public class ParamFormatParser {
|
||||||
public boolean isArgsStringLegal() {
|
public boolean isArgsStringLegal() {
|
||||||
return !(this.getArgsString() == null || this.getArgsString().isEmpty());
|
return !(this.getArgsString() == null || this.getArgsString().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String buildFullPath(String simpleClassName) {
|
||||||
|
return ParamFormatParser.class.getName().substring(0,
|
||||||
|
ParamFormatParser.class.getName().lastIndexOf('.'))
|
||||||
|
+ "." + simpleClassName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.bench4q.agent.Main;
|
import org.bench4q.agent.Main;
|
||||||
|
import org.bench4q.agent.scenario.DefinedParameter;
|
||||||
|
|
||||||
public class ParametersFactory {
|
public class ParametersFactory {
|
||||||
private Map<String, Object> objMap = new HashMap<String, Object>();
|
private Map<String, Object> objMap = new HashMap<String, Object>();
|
||||||
|
@ -36,6 +37,7 @@ public class ParametersFactory {
|
||||||
|
|
||||||
public Object getObjWithGuardExist(String className) {
|
public Object getObjWithGuardExist(String className) {
|
||||||
Object result = null;
|
Object result = null;
|
||||||
|
className = ParamFormatParser.buildFullPath(className);
|
||||||
if (!guardClassExist(className))
|
if (!guardClassExist(className))
|
||||||
throw new NullPointerException("Not find " + className);
|
throw new NullPointerException("Not find " + className);
|
||||||
mapRWLock.readLock().lock();
|
mapRWLock.readLock().lock();
|
||||||
|
@ -76,4 +78,8 @@ public class ParametersFactory {
|
||||||
mapRWLock.writeLock().unlock();
|
mapRWLock.writeLock().unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void createParaInstanceWith(DefinedParameter dP) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,29 +39,22 @@ public class VUserContext implements SessionObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getParameter(ParamFormatParser paraFormat) {
|
private String getParameter(ParamFormatParser paraFormat) {
|
||||||
String result;
|
String result = this.getParameterByContext(paraFormat.getName());
|
||||||
result = this.getParameterByContext(paraFormat.getName());
|
|
||||||
if (result != null)
|
if (result != null)
|
||||||
return result;
|
return result;
|
||||||
String[] argsArray = paraFormat.getArgsArray();
|
String[] argsArray = paraFormat.getArgsArray();
|
||||||
if (paraFormat.getParamType().equals("crossThread")) {
|
if (paraFormat.getParamType().equals("crossThread")) {
|
||||||
result = this.getParameterCrossThread(paraFormat.getName(),
|
result = this.getParameterCrossThread(paraFormat.getName(),
|
||||||
buildFullPath(paraFormat.getClassName()),
|
paraFormat.getClassName(), paraFormat.getMethodName(),
|
||||||
paraFormat.getMethodName(), argsArray);
|
argsArray);
|
||||||
} else if (paraFormat.getParamType().equals("inThread")) {
|
} else if (paraFormat.getParamType().equals("inThread")) {
|
||||||
result = this.getParameterInThread(paraFormat.getName(),
|
result = this.getParameterInThread(paraFormat.getName(),
|
||||||
buildFullPath(paraFormat.getClassName()),
|
ParamFormatParser.buildFullPath(paraFormat.getClassName()),
|
||||||
paraFormat.getMethodName(), argsArray);
|
paraFormat.getMethodName(), argsArray);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String buildFullPath(String simpleClassName) {
|
|
||||||
return ParamFormatParser.class.getName().substring(0,
|
|
||||||
ParamFormatParser.class.getName().lastIndexOf('.'))
|
|
||||||
+ "." + simpleClassName;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getParameterInThread(String name, String className,
|
private String getParameterInThread(String name, String className,
|
||||||
String functionName, Object[] args) {
|
String functionName, Object[] args) {
|
||||||
boolean hasThisClass = false;
|
boolean hasThisClass = false;
|
||||||
|
@ -164,12 +157,12 @@ public class VUserContext implements SessionObject {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public String getParam(String name) {
|
public String getParam(String name) {
|
||||||
if (!satisfyContraints(name))
|
if (!isParamStyle(name))
|
||||||
return name;
|
return name;
|
||||||
return this.getParameter(ParamFormatParser.parseInputParameter(name));
|
return this.getParameter(ParamFormatParser.parseInputParameter(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean satisfyContraints(String name) {
|
private boolean isParamStyle(String name) {
|
||||||
return name.startsWith("<parameters") && name.endsWith("/>");
|
return name.startsWith("<parameters") && name.endsWith("/>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
package org.bench4q.agent.scenario;
|
||||||
|
|
||||||
|
public class DefinedParameter {
|
||||||
|
private String name;
|
||||||
|
private String type;
|
||||||
|
private String pickOrder;
|
||||||
|
private String updateStrategy;
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPickOrder() {
|
||||||
|
return pickOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setPickOrder(String pickOrder) {
|
||||||
|
this.pickOrder = pickOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUpdateStrategy() {
|
||||||
|
return updateStrategy;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUpdateStrategy(String updateStrategy) {
|
||||||
|
this.updateStrategy = updateStrategy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DefinedParameter(String name, String type, String pickOrder,
|
||||||
|
String updateStrategy) {
|
||||||
|
this.setName(name);
|
||||||
|
this.setType(type);
|
||||||
|
this.setPickOrder(pickOrder);
|
||||||
|
this.setUpdateStrategy(updateStrategy);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,11 +1,7 @@
|
||||||
package org.bench4q.agent.scenario;
|
package org.bench4q.agent.scenario;
|
||||||
|
|
||||||
import org.bench4q.agent.datacollector.DataCollector;
|
|
||||||
import org.bench4q.agent.datacollector.impl.PageResultCollector;
|
|
||||||
|
|
||||||
public class Page {
|
public class Page {
|
||||||
private Batch[] batches;
|
private Batch[] batches;
|
||||||
final private DataCollector dataCollector = new PageResultCollector();
|
|
||||||
|
|
||||||
public Batch[] getBatches() {
|
public Batch[] getBatches() {
|
||||||
return batches;
|
return batches;
|
||||||
|
@ -15,8 +11,4 @@ public class Page {
|
||||||
this.batches = batches;
|
this.batches = batches;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataCollector getDataCollector() {
|
|
||||||
return dataCollector;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import java.util.List;
|
||||||
import org.bench4q.agent.scenario.behavior.Behavior;
|
import org.bench4q.agent.scenario.behavior.Behavior;
|
||||||
import org.bench4q.agent.scenario.behavior.BehaviorFactory;
|
import org.bench4q.agent.scenario.behavior.BehaviorFactory;
|
||||||
import org.bench4q.share.helper.MarshalHelper;
|
import org.bench4q.share.helper.MarshalHelper;
|
||||||
|
import org.bench4q.share.models.agent.DefinedParameterModel;
|
||||||
import org.bench4q.share.models.agent.ParameterModel;
|
import org.bench4q.share.models.agent.ParameterModel;
|
||||||
import org.bench4q.share.models.agent.RunScenarioModel;
|
import org.bench4q.share.models.agent.RunScenarioModel;
|
||||||
import org.bench4q.share.models.agent.scriptrecord.BatchModel;
|
import org.bench4q.share.models.agent.scriptrecord.BatchModel;
|
||||||
|
@ -16,6 +17,7 @@ import org.bench4q.share.models.agent.scriptrecord.UsePluginModel;
|
||||||
|
|
||||||
public class Scenario {
|
public class Scenario {
|
||||||
private UsePlugin[] usePlugins;
|
private UsePlugin[] usePlugins;
|
||||||
|
private DefinedParameter[] definedParameters;
|
||||||
private Page[] pages;
|
private Page[] pages;
|
||||||
private List<Behavior> behaviors;
|
private List<Behavior> behaviors;
|
||||||
|
|
||||||
|
@ -23,15 +25,23 @@ public class Scenario {
|
||||||
return usePlugins;
|
return usePlugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUsePlugins(UsePlugin[] usePlugins) {
|
private void setUsePlugins(UsePlugin[] usePlugins) {
|
||||||
this.usePlugins = usePlugins;
|
this.usePlugins = usePlugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DefinedParameter[] getDefinedParameters() {
|
||||||
|
return definedParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setDefinedParameters(DefinedParameter[] definedParameters) {
|
||||||
|
this.definedParameters = definedParameters;
|
||||||
|
}
|
||||||
|
|
||||||
public Page[] getPages() {
|
public Page[] getPages() {
|
||||||
return pages;
|
return pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPages(Page[] pages) {
|
private void setPages(Page[] pages) {
|
||||||
this.pages = pages;
|
this.pages = pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,12 +89,26 @@ public class Scenario {
|
||||||
Scenario scenario = new Scenario();
|
Scenario scenario = new Scenario();
|
||||||
scenario.setUsePlugins(new UsePlugin[runScenarioModel.getUsePlugins()
|
scenario.setUsePlugins(new UsePlugin[runScenarioModel.getUsePlugins()
|
||||||
.size()]);
|
.size()]);
|
||||||
|
scenario.setDefinedParameters(new DefinedParameter[runScenarioModel
|
||||||
|
.getDefinedParameters().size()]);
|
||||||
scenario.setPages(new Page[runScenarioModel.getPages().size()]);
|
scenario.setPages(new Page[runScenarioModel.getPages().size()]);
|
||||||
extractUsePlugins(runScenarioModel, scenario);
|
extractUsePlugins(runScenarioModel, scenario);
|
||||||
|
extractDefinedParameters(runScenarioModel, scenario);
|
||||||
extractPages(runScenarioModel, scenario);
|
extractPages(runScenarioModel, scenario);
|
||||||
return scenario;
|
return scenario;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void extractDefinedParameters(
|
||||||
|
RunScenarioModel runScenarioModel, Scenario scenario) {
|
||||||
|
for (int i = 0; i < runScenarioModel.getDefinedParameters().size(); i++) {
|
||||||
|
DefinedParameterModel model = runScenarioModel
|
||||||
|
.getDefinedParameters().get(i);
|
||||||
|
scenario.definedParameters[i] = new DefinedParameter(
|
||||||
|
model.getName(), model.getType(), model.getPickOrder(),
|
||||||
|
model.getUpdateStrategy());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void extractPages(RunScenarioModel runScenarioModel,
|
private static void extractPages(RunScenarioModel runScenarioModel,
|
||||||
Scenario scenario) {
|
Scenario scenario) {
|
||||||
List<PageModel> pageModels = runScenarioModel.getPages();
|
List<PageModel> pageModels = runScenarioModel.getPages();
|
||||||
|
|
|
@ -78,6 +78,9 @@ public class ScenarioContext {
|
||||||
this.parameterFactory = parameterFactory;
|
this.parameterFactory = parameterFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ScenarioContext() {
|
||||||
|
}
|
||||||
|
|
||||||
public static ScenarioContext buildScenarioContext(UUID testId,
|
public static ScenarioContext buildScenarioContext(UUID testId,
|
||||||
final Scenario scenario, int poolSize) {
|
final Scenario scenario, int poolSize) {
|
||||||
ScenarioContext scenarioContext = new ScenarioContext();
|
ScenarioContext scenarioContext = new ScenarioContext();
|
||||||
|
@ -90,9 +93,19 @@ public class ScenarioContext {
|
||||||
scenarioContext.setExecutorService(executor);
|
scenarioContext.setExecutorService(executor);
|
||||||
scenarioContext.setDataStatistics(new ScenarioResultCollector(testId));
|
scenarioContext.setDataStatistics(new ScenarioResultCollector(testId));
|
||||||
scenarioContext.setParameterFactory(new ParametersFactory(testId));
|
scenarioContext.setParameterFactory(new ParametersFactory(testId));
|
||||||
|
scenarioContext.prepareForParameterization();
|
||||||
return scenarioContext;
|
return scenarioContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void prepareForParameterization() {
|
||||||
|
if (scenario.getDefinedParameters() == null)
|
||||||
|
return;
|
||||||
|
for (DefinedParameter dP : this.getScenario().getDefinedParameters()) {
|
||||||
|
// TODO:
|
||||||
|
this.getParameterFactory().createParaInstanceWith(dP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public VUserContext buildVUserContext() {
|
public VUserContext buildVUserContext() {
|
||||||
return this.getParameterFactory().buildVUserContext();
|
return this.getParameterFactory().buildVUserContext();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.bench4q.agent.scenario;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -62,7 +63,7 @@ public class VUser implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doRunScenario(ScenarioContext context) {
|
public void doRunScenario(ScenarioContext context) {
|
||||||
Map<String, Object> plugins = new HashMap<String, Object>();
|
Map<String, Object> plugins = new LinkedHashMap<String, Object>();
|
||||||
preparePlugins(context.getScenario(), plugins);
|
preparePlugins(context.getScenario(), plugins);
|
||||||
for (int i = 0; i < context.getScenario().getPages().length; i++) {
|
for (int i = 0; i < context.getScenario().getPages().length; i++) {
|
||||||
Page page = context.getScenario().getPages()[i];
|
Page page = context.getScenario().getPages()[i];
|
||||||
|
@ -169,4 +170,8 @@ public class VUser implements Runnable {
|
||||||
plugins.put(pluginId, plugin);
|
plugins.put(pluginId, plugin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getParam(String name) {
|
||||||
|
return this.sessionObject.getParam(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ import org.bench4q.share.helper.TestHelper;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public class Test_InstanceCotroller {
|
public class Test_VUserContext {
|
||||||
/**
|
/**
|
||||||
* The old test case is splited by ',', but it's not robust The new test
|
* The old test case is splited by ',', but it's not robust The new test
|
||||||
* case is splited by ParameterParser.parseNField, It's more robust
|
* case is splited by ParameterParser.parseNField, It's more robust
|
||||||
|
@ -106,10 +106,8 @@ public class Test_InstanceCotroller {
|
||||||
"getParameterCrossThread",
|
"getParameterCrossThread",
|
||||||
new Class[] { String.class, String.class, String.class,
|
new Class[] { String.class, String.class, String.class,
|
||||||
Object[].class },
|
Object[].class },
|
||||||
new Object[] {
|
new Object[] { paramFormatParser.getName(),
|
||||||
paramFormatParser.getName(),
|
paramFormatParser.getClassName(),
|
||||||
"org.bench4q.agent.parameterization.impl."
|
|
||||||
+ paramFormatParser.getClassName(),
|
|
||||||
paramFormatParser.getMethodName(),
|
paramFormatParser.getMethodName(),
|
||||||
paramFormatParser.getArgsArray() });
|
paramFormatParser.getArgsArray() });
|
||||||
assertEquals("11", result);
|
assertEquals("11", result);
|
|
@ -65,7 +65,7 @@ public class Test_HBasePlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public RunScenarioModel buildScenario(int behaviorSize) {
|
public static RunScenarioModel buildScenario(int behaviorSize) {
|
||||||
RunScenarioModel runScenarioModel = new RunScenarioModel();
|
RunScenarioModel runScenarioModel = new RunScenarioModel();
|
||||||
|
|
||||||
List<UsePluginModel> usePluginList = new ArrayList<UsePluginModel>();
|
List<UsePluginModel> usePluginList = new ArrayList<UsePluginModel>();
|
||||||
|
@ -96,7 +96,7 @@ public class Test_HBasePlugin {
|
||||||
return runScenarioModel;
|
return runScenarioModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private BehaviorModel createABehavior(int i) {
|
private static BehaviorModel createABehavior(int i) {
|
||||||
List<ParameterModel> parameters = new ArrayList<ParameterModel>();
|
List<ParameterModel> parameters = new ArrayList<ParameterModel>();
|
||||||
parameters.add(ParameterModel.createParameter("beginTime",
|
parameters.add(ParameterModel.createParameter("beginTime",
|
||||||
"201309111715001"));
|
"201309111715001"));
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
package org.bench4q.agent.test.scenario;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
import org.bench4q.agent.scenario.Scenario;
|
||||||
|
import org.bench4q.agent.test.plugin.Test_HBasePlugin;
|
||||||
|
import org.bench4q.share.models.agent.DefinedParameterModel;
|
||||||
|
import org.bench4q.share.models.agent.RunScenarioModel;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class Test_Scenario {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testScenarioBuilderWithZeroDefinedParameter() {
|
||||||
|
RunScenarioModel inputModel = Test_HBasePlugin.buildScenario(10);
|
||||||
|
Scenario scenario = Scenario.scenarioBuilder(inputModel);
|
||||||
|
assertNotNull(scenario.getDefinedParameters());
|
||||||
|
assertEquals(0, scenario.getDefinedParameters().length);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testScenarioBuilderWithOneDefinedParameter() {
|
||||||
|
RunScenarioModel inputModel = Test_HBasePlugin.buildScenario(10);
|
||||||
|
inputModel.getDefinedParameters().add(
|
||||||
|
buildDefinedParameterModel("param1", "table", "sequencial",
|
||||||
|
"each_iteration"));
|
||||||
|
Scenario scenario = Scenario.scenarioBuilder(inputModel);
|
||||||
|
assertNotNull(scenario.getDefinedParameters());
|
||||||
|
assertEquals(1, scenario.getDefinedParameters().length);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DefinedParameterModel buildDefinedParameterModel(String name,
|
||||||
|
String type, String pickOrder, String updateStrategy) {
|
||||||
|
DefinedParameterModel result = new DefinedParameterModel();
|
||||||
|
result.setName(name);
|
||||||
|
result.setType(type);
|
||||||
|
result.setPickOrder(pickOrder);
|
||||||
|
result.setUpdateStrategy(updateStrategy);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,11 +2,20 @@ package org.bench4q.agent.test.scenario;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.bench4q.agent.parameterization.impl.Para_Table;
|
||||||
import org.bench4q.agent.scenario.Scenario;
|
import org.bench4q.agent.scenario.Scenario;
|
||||||
import org.bench4q.agent.scenario.ScenarioContext;
|
import org.bench4q.agent.scenario.ScenarioContext;
|
||||||
|
import org.bench4q.agent.scenario.VUser;
|
||||||
|
import org.bench4q.agent.test.plugin.Test_HBasePlugin;
|
||||||
|
import org.bench4q.share.helper.TestHelper;
|
||||||
|
import org.bench4q.share.models.agent.DefinedParameterModel;
|
||||||
|
import org.bench4q.share.models.agent.RunScenarioModel;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
@ -17,11 +26,41 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
public class Test_ScenarioContext {
|
public class Test_ScenarioContext {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test() {
|
public void testBuildScenarioContext() {
|
||||||
ScenarioContext context = ScenarioContext.buildScenarioContext(
|
ScenarioContext context = ScenarioContext.buildScenarioContext(
|
||||||
UUID.randomUUID(), new Scenario(), 20);
|
UUID.randomUUID(), new Scenario(), 20);
|
||||||
assertEquals(10,
|
assertEquals(10,
|
||||||
context.getExecutor().getKeepAliveTime(TimeUnit.MINUTES));
|
context.getExecutor().getKeepAliveTime(TimeUnit.MINUTES));
|
||||||
assertEquals(20, context.getExecutor().getMaximumPoolSize());
|
assertEquals(20, context.getExecutor().getMaximumPoolSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testForParameterization() throws IOException {
|
||||||
|
RunScenarioModel model = Test_HBasePlugin.buildScenario(10);
|
||||||
|
String param_name = "param1";
|
||||||
|
UUID testId = UUID.randomUUID();
|
||||||
|
|
||||||
|
createParamFileAndFillParamContent(param_name, testId);
|
||||||
|
|
||||||
|
model.getDefinedParameters().add(
|
||||||
|
new DefinedParameterModel(param_name, "Para_Table",
|
||||||
|
"sequencial", "each_occurrence"));
|
||||||
|
|
||||||
|
ScenarioContext scenarioContext = ScenarioContext.buildScenarioContext(
|
||||||
|
testId, Scenario.scenarioBuilder(model), 10);
|
||||||
|
|
||||||
|
VUser vUser = new VUser(scenarioContext);
|
||||||
|
String firstValue = vUser.getParam(param_name);
|
||||||
|
String secondValue = vUser.getParam(param_name);
|
||||||
|
assertNotEquals(firstValue, secondValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createParamFileAndFillParamContent(String param_name,
|
||||||
|
UUID testId) throws IOException {
|
||||||
|
File parmFile = new File(
|
||||||
|
new Para_Table(testId).getParamFileFullPath(param_name));
|
||||||
|
TestHelper.createFileIfNotExist(parmFile);
|
||||||
|
FileUtils.writeStringToFile(parmFile,
|
||||||
|
"row1;10;11~row2;20;21~row3,30,31~");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,13 +19,12 @@ public class Test_RegularExpression {
|
||||||
public void test() {
|
public void test() {
|
||||||
|
|
||||||
Pattern pattern = Pattern.compile(regex2);
|
Pattern pattern = Pattern.compile(regex2);
|
||||||
|
|
||||||
Matcher matcher = pattern.matcher(target1);
|
Matcher matcher = pattern.matcher(target1);
|
||||||
System.out.println(matcher.matches());
|
System.out.println(matcher.matches());
|
||||||
matcher.reset();
|
matcher.reset();
|
||||||
while (matcher.find()) {
|
while (matcher.find()) {
|
||||||
System.out.println(matcher.group());
|
System.out.println(matcher.group());
|
||||||
}
|
}
|
||||||
fail();
|
assertTrue(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
package org.bench4q.share.models.agent;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
@XmlRootElement
|
||||||
|
public class DefinedParameterModel {
|
||||||
|
private String name;
|
||||||
|
private String type;
|
||||||
|
private String pickOrder;
|
||||||
|
private String updateStrategy;
|
||||||
|
|
||||||
|
@XmlElement
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement
|
||||||
|
public String getPickOrder() {
|
||||||
|
return pickOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPickOrder(String pickOrder) {
|
||||||
|
this.pickOrder = pickOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement
|
||||||
|
public String getUpdateStrategy() {
|
||||||
|
return updateStrategy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpdateStrategy(String updateStrategy) {
|
||||||
|
this.updateStrategy = updateStrategy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DefinedParameterModel() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public DefinedParameterModel(String name, String type, String pickOrder,
|
||||||
|
String updateStrategy) {
|
||||||
|
this();
|
||||||
|
this.setName(name);
|
||||||
|
this.setType(type);
|
||||||
|
this.setPickOrder(pickOrder);
|
||||||
|
this.setUpdateStrategy(updateStrategy);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
package org.bench4q.share.models.agent;
|
package org.bench4q.share.models.agent;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
@ -14,6 +14,7 @@ import org.bench4q.share.models.agent.scriptrecord.UsePluginModel;
|
||||||
public class RunScenarioModel {
|
public class RunScenarioModel {
|
||||||
private int poolSize;
|
private int poolSize;
|
||||||
private List<UsePluginModel> usePlugins;
|
private List<UsePluginModel> usePlugins;
|
||||||
|
private List<DefinedParameterModel> definedParameters;
|
||||||
private List<PageModel> pages;
|
private List<PageModel> pages;
|
||||||
|
|
||||||
@XmlElement
|
@XmlElement
|
||||||
|
@ -35,6 +36,17 @@ public class RunScenarioModel {
|
||||||
this.usePlugins = usePlugins;
|
this.usePlugins = usePlugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@XmlElementWrapper(name = "definedParams")
|
||||||
|
@XmlElement(name = "definedParam")
|
||||||
|
public List<DefinedParameterModel> getDefinedParameters() {
|
||||||
|
return definedParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefinedParameters(
|
||||||
|
List<DefinedParameterModel> definedParameters) {
|
||||||
|
this.definedParameters = definedParameters;
|
||||||
|
}
|
||||||
|
|
||||||
@XmlElementWrapper(name = "pages")
|
@XmlElementWrapper(name = "pages")
|
||||||
@XmlElement(name = "page")
|
@XmlElement(name = "page")
|
||||||
public List<PageModel> getPages() {
|
public List<PageModel> getPages() {
|
||||||
|
@ -46,7 +58,8 @@ public class RunScenarioModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
public RunScenarioModel() {
|
public RunScenarioModel() {
|
||||||
this.setUsePlugins(new ArrayList<UsePluginModel>());
|
this.setUsePlugins(new LinkedList<UsePluginModel>());
|
||||||
this.setPages(new ArrayList<PageModel>());
|
this.setPages(new LinkedList<PageModel>());
|
||||||
|
this.setDefinedParameters(new LinkedList<DefinedParameterModel>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue