now we can use the csvProvider as the
now we can use the csvProvider as the
This commit is contained in:
parent
8402fe13d9
commit
b6626afe2a
|
@ -165,7 +165,7 @@ public class Scenario {
|
|||
}
|
||||
}
|
||||
|
||||
private static Behavior extractBehavior(BehaviorModel behaviorModel) {
|
||||
public static Behavior extractBehavior(BehaviorModel behaviorModel) {
|
||||
Behavior behavior = BehaviorFactory.getBuisinessObject(behaviorModel);
|
||||
behavior.setName(behaviorModel.getName());
|
||||
behavior.setUse(behaviorModel.getUse());
|
||||
|
|
|
@ -78,9 +78,11 @@ public class ScenarioEngine {
|
|||
|
||||
taskMaker.execute(new Runnable() {
|
||||
public void run() {
|
||||
int currentIterationId = 0;
|
||||
while (!scenarioContext.isFinished()) {
|
||||
scenarioContext.getExecutor().execute(
|
||||
new VUser(scenarioContext));
|
||||
new VUser(scenarioContext, currentIterationId));
|
||||
currentIterationId++;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -7,21 +7,33 @@ import java.util.LinkedHashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.bench4q.agent.datacollector.DataCollector;
|
||||
import org.bench4q.agent.helper.ApplicationContextHelper;
|
||||
import org.bench4q.agent.parameterization.SessionObject;
|
||||
import org.bench4q.agent.plugin.BaseParameterization;
|
||||
import org.bench4q.agent.plugin.Plugin;
|
||||
import org.bench4q.agent.plugin.PluginManager;
|
||||
import org.bench4q.agent.plugin.basic.PluginReturn;
|
||||
import org.bench4q.agent.plugin.basic.http.HttpReturn;
|
||||
import org.bench4q.agent.scenario.behavior.Behavior;
|
||||
import org.bench4q.agent.scenario.dfa.ParamPart;
|
||||
|
||||
public class VUser implements Runnable {
|
||||
private ScenarioContext scenarioContext;
|
||||
private SessionObject sessionObject;
|
||||
private int currentIterationId;
|
||||
|
||||
private PluginManager pluginManager;
|
||||
|
||||
private int getCurrentIterationId() {
|
||||
return currentIterationId;
|
||||
}
|
||||
|
||||
private void setCurrentIterationId(int currentIterationId) {
|
||||
this.currentIterationId = currentIterationId;
|
||||
}
|
||||
|
||||
private ScenarioContext getScenarioContext() {
|
||||
return scenarioContext;
|
||||
}
|
||||
|
@ -46,11 +58,12 @@ public class VUser implements Runnable {
|
|||
this.pluginManager = pluginManager;
|
||||
}
|
||||
|
||||
public VUser(ScenarioContext scenarioContext) {
|
||||
public VUser(ScenarioContext scenarioContext, int currentIterationId) {
|
||||
this.setScenarioContext(scenarioContext);
|
||||
this.setPluginManager(ApplicationContextHelper.getContext().getBean(
|
||||
PluginManager.class));
|
||||
this.setSessionObject(scenarioContext.buildVUserContext());
|
||||
this.setCurrentIterationId(currentIterationId);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
|
@ -93,10 +106,10 @@ public class VUser implements Runnable {
|
|||
for (Behavior behavior : batch.getBehaviors()) {
|
||||
behavior.distillParams(this.getSessionObject());
|
||||
Object plugin = plugins.get(behavior.getUse());
|
||||
Map<String, String> behaviorParameters = prepareBehaviorParameters(behavior);
|
||||
Date startDate = new Date(System.currentTimeMillis());
|
||||
PluginReturn pluginReturn = (PluginReturn) this.getPluginManager()
|
||||
.doBehavior(plugin, behavior.getName(), behaviorParameters);
|
||||
.doBehavior(plugin, behavior.getName(),
|
||||
reassamblyParameters(behavior, plugins));
|
||||
|
||||
extractRunTimeParams(pluginReturn);
|
||||
|
||||
|
@ -113,6 +126,60 @@ public class VUser implements Runnable {
|
|||
return results;
|
||||
}
|
||||
|
||||
private Map<String, String> reassamblyParameters(Behavior behavior,
|
||||
Map<String, Object> plugins) {
|
||||
Map<String, String> behaviorParameters = new HashMap<String, String>();
|
||||
for (Parameter parameter : behavior.getParameters()) {
|
||||
behaviorParameters.put(parameter.getKey(),
|
||||
reassamblyParameter(parameter.getParamParts(), plugins));
|
||||
}
|
||||
return behaviorParameters;
|
||||
}
|
||||
|
||||
private String reassamblyParameter(ParamPart[] parts,
|
||||
Map<String, Object> plugins) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
for (int i = 0, len = parts.length; i < len; i++) {
|
||||
switch (parts[i].getType()) {
|
||||
case STRING:
|
||||
buf.append(parts[i].getContentForStringType());
|
||||
break;
|
||||
case SESSION_ID:
|
||||
buf.append(this.getCurrentIterationId());
|
||||
break;
|
||||
case CONTEXT_CALL:
|
||||
try {
|
||||
Object dpObj = plugins.get(parts[i]
|
||||
.getPluginIdForContextCallType());
|
||||
if (dpObj == null) {
|
||||
throw new RuntimeException("No such plug-in id: "
|
||||
+ parts[i].getPluginIdForContextCallType());
|
||||
} else if (dpObj instanceof BaseParameterization) {
|
||||
buf.append(((BaseParameterization) dpObj).getValue(parts[i]
|
||||
.getVariableForContextCallAndProperty()));
|
||||
} else {
|
||||
throw new RuntimeException("Plug-in "
|
||||
+ parts[i].getPluginIdForContextCallType()
|
||||
+ " is not a data provider.");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Logger.getLogger(VUser.class)
|
||||
.error(parts[i].getPluginIdForContextCallType()
|
||||
+ "variable "
|
||||
+ parts[i]
|
||||
.getVariableForContextCallAndProperty(),
|
||||
e);
|
||||
}
|
||||
break;
|
||||
case PROPERTY:
|
||||
buf.append(System.getProperty(
|
||||
parts[i].getVariableForContextCallAndProperty(), ""));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
private void extractRunTimeParams(PluginReturn pluginReturn) {
|
||||
if (pluginReturn == null || !pluginReturn.hasRunTimeParams())
|
||||
return;
|
||||
|
@ -150,19 +217,6 @@ public class VUser implements Runnable {
|
|||
return result;
|
||||
}
|
||||
|
||||
private Map<String, String> prepareBehaviorParameters(Behavior behavior) {
|
||||
Map<String, String> behaviorParameters = new HashMap<String, String>();
|
||||
for (Parameter parameter : behavior.getParameters()) {
|
||||
compile(parameter.getValue());
|
||||
behaviorParameters.put(parameter.getKey(), parameter.getValue());
|
||||
}
|
||||
return behaviorParameters;
|
||||
}
|
||||
|
||||
private void compile(String value) {
|
||||
// TODO: Add the state pattern to this and parse the value
|
||||
}
|
||||
|
||||
private void preparePlugins(Scenario scenario, Map<String, Object> plugins) {
|
||||
for (UsePlugin usePlugin : scenario.getUsePlugins()) {
|
||||
String pluginId = usePlugin.getId();
|
||||
|
|
|
@ -2,11 +2,19 @@ package org.bench4q.agent.test;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.bench4q.agent.plugin.BaseParameterization;
|
||||
import org.bench4q.share.helper.TestHelper;
|
||||
import org.bench4q.share.models.agent.ParameterModel;
|
||||
import org.bench4q.share.models.agent.RunScenarioModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.BatchModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.BehaviorModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.PageModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.UsePluginModel;
|
||||
|
||||
public abstract class TestBase_Parameterization {
|
||||
private BaseParameterization basePara;
|
||||
|
@ -31,4 +39,59 @@ public abstract class TestBase_Parameterization {
|
|||
File dirFile = new File(dirPath);
|
||||
FileUtils.deleteDirectory(dirFile);
|
||||
}
|
||||
|
||||
protected UsePluginModel buildCsvProviderWith(final String id,
|
||||
final String fileName, final String fieldNames) {
|
||||
UsePluginModel usePluginModel = new UsePluginModel() {
|
||||
{
|
||||
setId(id);
|
||||
setName("CsvProvider");
|
||||
setParameters(new ArrayList<ParameterModel>() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
{
|
||||
add(ParameterModel
|
||||
.createParameter("fileName", fileName));
|
||||
add(ParameterModel.createParameter("separator", ","));
|
||||
add(ParameterModel.createParameter("fieldNames",
|
||||
fieldNames));
|
||||
add(ParameterModel.createParameter("shared",
|
||||
"Notenable"));
|
||||
add(ParameterModel.createParameter("loop", "enable"));
|
||||
add(ParameterModel.createParameter("loadAtRunTime",
|
||||
"Notenable"));
|
||||
add(ParameterModel.createParameter("commentPrefix",
|
||||
null));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return usePluginModel;
|
||||
}
|
||||
|
||||
public RunScenarioModel buildRunScenarioModelWith(
|
||||
List<UsePluginModel> plugins, BehaviorModel... behaviors) {
|
||||
RunScenarioModel runScenarioModel = new RunScenarioModel();
|
||||
UsePluginModel httpPlugin = new UsePluginModel() {
|
||||
{
|
||||
setId("http");
|
||||
setName("Http");
|
||||
setParameters(new ArrayList<ParameterModel>());
|
||||
}
|
||||
};
|
||||
for (UsePluginModel pluginModel : plugins) {
|
||||
runScenarioModel.getUsePlugins().add(pluginModel);
|
||||
}
|
||||
runScenarioModel.getUsePlugins().add(httpPlugin);
|
||||
|
||||
PageModel page = new PageModel();
|
||||
BatchModel batch = new BatchModel();
|
||||
batch.setBehaviors(new ArrayList<BehaviorModel>());
|
||||
for (BehaviorModel behavior : behaviors) {
|
||||
batch.getBehaviors().add(behavior);
|
||||
}
|
||||
page.getBatches().add(batch);
|
||||
runScenarioModel.getPages().add(page);
|
||||
return runScenarioModel;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,12 +56,12 @@ public class Test_ParameterManager extends TestBase_Parameterization {
|
|||
UpdateStrategy.ONCE.name())));
|
||||
ScenarioContext scenarioContext = ScenarioContext.buildScenarioContext(
|
||||
testId, scenario, 1);
|
||||
VUser vUser = new VUser(scenarioContext);
|
||||
VUser vUser = new VUser(scenarioContext, 1);
|
||||
String v1_firstValue = vUser.getParam(paramName);
|
||||
String v1_secondValue = vUser.getParam(paramName);
|
||||
assertEquals("12", v1_firstValue);
|
||||
assertEquals(v1_firstValue, v1_secondValue);
|
||||
VUser vUser2 = new VUser(scenarioContext);
|
||||
VUser vUser2 = new VUser(scenarioContext, 1);
|
||||
String v2_firstValue = vUser2.getParam(paramName);
|
||||
String v2_secondValue = vUser2.getParam(paramName);
|
||||
assertEquals(v1_firstValue, v2_firstValue);
|
||||
|
@ -80,12 +80,12 @@ public class Test_ParameterManager extends TestBase_Parameterization {
|
|||
UpdateStrategy.EACH_ITERATION.name())));
|
||||
ScenarioContext scenarioContext = ScenarioContext.buildScenarioContext(
|
||||
testId, scenario, 1);
|
||||
VUser vUser = new VUser(scenarioContext);
|
||||
VUser vUser = new VUser(scenarioContext, 1);
|
||||
String v1_firstValue = vUser.getParam(paramName);
|
||||
String v1_secondeValue = vUser.getParam(paramName);
|
||||
assertNotEquals(paramName, v1_firstValue);
|
||||
assertEquals(v1_firstValue, v1_secondeValue);
|
||||
VUser vUser2 = new VUser(scenarioContext);
|
||||
VUser vUser2 = new VUser(scenarioContext, 1);
|
||||
String v2_firstValue = vUser2.getParam(paramName);
|
||||
String v2_secondValue = vUser2.getParam(paramName);
|
||||
assertNotEquals(paramName, v2_firstValue);
|
||||
|
@ -105,7 +105,7 @@ public class Test_ParameterManager extends TestBase_Parameterization {
|
|||
UpdateStrategy.EACH_OCCURRENCE.name())));
|
||||
ScenarioContext scenarioContext = ScenarioContext.buildScenarioContext(
|
||||
testId, scenario, 1);
|
||||
VUser vUser = new VUser(scenarioContext);
|
||||
VUser vUser = new VUser(scenarioContext, 1);
|
||||
String vuserFirstValue = vUser.getParam(paramName);
|
||||
String vuserSecondeValue = vUser.getParam(paramName);
|
||||
assertNotEquals(vuserFirstValue, vuserSecondeValue);
|
||||
|
|
|
@ -24,7 +24,7 @@ public class Test_ClassHelper {
|
|||
.value();
|
||||
}
|
||||
});
|
||||
assertEquals(5, plugins.size());
|
||||
assertEquals(6, plugins.size());
|
||||
assertEquals(true, plugins.containsKey("Http"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,10 +10,10 @@ import org.bench4q.agent.scenario.dfa.ParamPart.ParamPartType;
|
|||
import org.junit.Test;
|
||||
|
||||
public class Test_DFA {
|
||||
public static final String TEST_CASE = "${csvProvider0:userName}";
|
||||
private static final String TEST_CASE = "${csvProvider0:userName}";
|
||||
private static final String TEST_CASE2 = "${csvProvider0:userName}$#";
|
||||
private static final String TEST_CASE3 = "${csvProvider0:userName}$#okOrNot";
|
||||
static final String TEST_CASE4 = "${csvProvider0:userName}$#okOrNot${file.separator}";
|
||||
private static final String TEST_CASE4 = "${csvProvider0:userName}$#okOrNot${file.separator}";
|
||||
|
||||
private static final String TEST_CASE_NOTSUPPORT1 = "${{abc";
|
||||
private static final String TEST_CASE_NOTSUPPORT2 = "${csvProvider0:adc{";
|
||||
|
|
|
@ -11,23 +11,24 @@ import org.bench4q.agent.scenario.Scenario;
|
|||
import org.bench4q.agent.scenario.behavior.Behavior;
|
||||
import org.bench4q.agent.scenario.dfa.ParamPart;
|
||||
import org.bench4q.agent.scenario.dfa.ParamPart.ParamPartType;
|
||||
import org.bench4q.agent.test.TestBase_Parameterization;
|
||||
import org.bench4q.agent.test.plugin.Test_HBasePlugin;
|
||||
import org.bench4q.share.models.agent.DefinedParameterModel;
|
||||
import org.bench4q.share.models.agent.ParameterModel;
|
||||
import org.bench4q.share.models.agent.RunScenarioModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.BatchModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.BehaviorModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.PageModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.UsePluginModel;
|
||||
import org.junit.Test;
|
||||
|
||||
public class Test_Scenario {
|
||||
public class Test_Scenario extends TestBase_Parameterization {
|
||||
private static final String TEST_CASE = "${csvProvider0:userName}$#okOrNot${file.separator}";
|
||||
|
||||
@Test
|
||||
public void testScenarioBuilderWithZeroDefinedParameter() {
|
||||
RunScenarioModel inputModel = Test_HBasePlugin.buildScenario(10);
|
||||
Scenario scenario = Scenario.scenarioBuilderWithCompile(inputModel);
|
||||
assertNotNull(scenario.getDefinedParameters());
|
||||
assertEquals(0, scenario.getDefinedParameters().length);
|
||||
assertEquals(1, scenario.getDefinedParameters().length);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -38,7 +39,7 @@ public class Test_Scenario {
|
|||
"each_iteration"));
|
||||
Scenario scenario = Scenario.scenarioBuilderWithCompile(inputModel);
|
||||
assertNotNull(scenario.getDefinedParameters());
|
||||
assertEquals(1, scenario.getDefinedParameters().length);
|
||||
assertEquals(2, scenario.getDefinedParameters().length);
|
||||
}
|
||||
|
||||
private DefinedParameterModel buildDefinedParameterModel(String name,
|
||||
|
@ -53,18 +54,16 @@ public class Test_Scenario {
|
|||
|
||||
@Test
|
||||
public void test_ScenarioCompile() {
|
||||
|
||||
List<BehaviorModel> behaviors = new ArrayList<BehaviorModel>();
|
||||
behaviors.add(BehaviorModel.UserBehaviorBuilder(0, "first", "http",
|
||||
new ArrayList<ParameterModel>() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
{
|
||||
add(ParameterModel.createParameter("withParamPart",
|
||||
Test_DFA.TEST_CASE4));
|
||||
}
|
||||
}));
|
||||
|
||||
RunScenarioModel inputModel = buildRunScenarioModelWith(behaviors);
|
||||
RunScenarioModel inputModel = buildRunScenarioModelWith(
|
||||
new ArrayList<UsePluginModel>(),
|
||||
BehaviorModel.UserBehaviorBuilder(0, "first", "http",
|
||||
new ArrayList<ParameterModel>() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
{
|
||||
add(ParameterModel.createParameter(
|
||||
"withParamPart", TEST_CASE));
|
||||
}
|
||||
}));
|
||||
Scenario scenario = Scenario.scenarioBuilderWithCompile(inputModel);
|
||||
assertNotNull(scenario.getDefinedParameters());
|
||||
for (Behavior behavior : scenario.getAllBehaviors()) {
|
||||
|
@ -100,15 +99,4 @@ public class Test_Scenario {
|
|||
}
|
||||
}
|
||||
|
||||
private RunScenarioModel buildRunScenarioModelWith(
|
||||
List<BehaviorModel> behaviors) {
|
||||
RunScenarioModel runScenarioModel = new RunScenarioModel();
|
||||
PageModel page = new PageModel();
|
||||
BatchModel batch = new BatchModel();
|
||||
batch.setBehaviors(new ArrayList<BehaviorModel>());
|
||||
batch.getBehaviors().addAll(behaviors);
|
||||
page.getBatches().add(batch);
|
||||
runScenarioModel.getPages().add(page);
|
||||
return runScenarioModel;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,22 +2,11 @@ package org.bench4q.agent.test.scenario;
|
|||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.bench4q.agent.parameterization.PickOrder;
|
||||
import org.bench4q.agent.parameterization.UpdateStrategy;
|
||||
import org.bench4q.agent.parameterization.impl.Para_Table;
|
||||
import org.bench4q.agent.scenario.Scenario;
|
||||
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.runner.RunWith;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
|
@ -36,36 +25,36 @@ public class Test_ScenarioContext {
|
|||
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();
|
||||
// @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",
|
||||
// PickOrder.SEQUENTIAL.name(),
|
||||
// UpdateStrategy.EACH_OCCURRENCE.name()));
|
||||
//
|
||||
// ScenarioContext scenarioContext = ScenarioContext.buildScenarioContext(
|
||||
// testId, Scenario.scenarioBuilderWithCompile(model), 10);
|
||||
//
|
||||
// VUser vUser = new VUser(scenarioContext, 1);
|
||||
// String firstValue = vUser.getParam(param_name);
|
||||
// String secondValue = vUser.getParam(param_name);
|
||||
// assertNotEquals(firstValue, secondValue);
|
||||
// }
|
||||
|
||||
createParamFileAndFillParamContent(param_name, testId);
|
||||
|
||||
model.getDefinedParameters().add(
|
||||
new DefinedParameterModel(param_name, "Para_Table",
|
||||
PickOrder.SEQUENTIAL.name(),
|
||||
UpdateStrategy.EACH_OCCURRENCE.name()));
|
||||
|
||||
ScenarioContext scenarioContext = ScenarioContext.buildScenarioContext(
|
||||
testId, Scenario.scenarioBuilderWithCompile(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, PickOrder.SEQUENTIAL,
|
||||
UpdateStrategy.EACH_ITERATION, param_name, -1)
|
||||
.getParamFileFullPath(param_name));
|
||||
TestHelper.createFileIfNotExist(parmFile);
|
||||
FileUtils.writeStringToFile(parmFile,
|
||||
"row1;10;11~row2;20;21~row3,30,31~");
|
||||
}
|
||||
// private void createParamFileAndFillParamContent(String param_name,
|
||||
// UUID testId) throws IOException {
|
||||
// File parmFile = new File(
|
||||
// new Para_Table(testId, PickOrder.SEQUENTIAL,
|
||||
// UpdateStrategy.EACH_ITERATION, param_name, -1)
|
||||
// .getParamFileFullPath(param_name));
|
||||
// TestHelper.createFileIfNotExist(parmFile);
|
||||
// FileUtils.writeStringToFile(parmFile,
|
||||
// "row1;10;11~row2;20;21~row3,30,31~");
|
||||
// }
|
||||
}
|
||||
|
|
|
@ -1,17 +1,26 @@
|
|||
package org.bench4q.agent.test.scenario;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import org.bench4q.agent.plugin.basic.PluginReturn;
|
||||
import org.bench4q.agent.plugin.basic.csvprovider.CsvProvider;
|
||||
import org.bench4q.agent.plugin.basic.http.HttpReturn;
|
||||
import org.bench4q.agent.scenario.Scenario;
|
||||
import org.bench4q.agent.scenario.ScenarioContext;
|
||||
import org.bench4q.agent.scenario.VUser;
|
||||
import org.bench4q.agent.scenario.behavior.Behavior;
|
||||
import org.bench4q.agent.test.TestBase_Parameterization;
|
||||
import org.bench4q.agent.test.plugin.Test_HBasePlugin;
|
||||
import org.bench4q.share.helper.TestHelper;
|
||||
import org.bench4q.share.models.agent.ParameterModel;
|
||||
import org.bench4q.share.models.agent.RunScenarioModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.BehaviorModel;
|
||||
import org.bench4q.share.models.agent.scriptrecord.UsePluginModel;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
|
@ -19,7 +28,8 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = { "classpath:application-context.xml" })
|
||||
public class Test_VUser {
|
||||
public class Test_VUser extends TestBase_Parameterization {
|
||||
static final String TEST_CASE = "${csvProvider0:userName}$#okOrNot${file.separator}";
|
||||
|
||||
@Test
|
||||
public void testExtractRunTimeParamsWithiNullPluginReturn() {
|
||||
|
@ -94,17 +104,58 @@ public class Test_VUser {
|
|||
}
|
||||
|
||||
private static Scenario getTestScenario() {
|
||||
return Scenario.scenarioBuilderWithCompile(Test_HBasePlugin.buildScenario(10));
|
||||
return Scenario.scenarioBuilderWithCompile(Test_HBasePlugin
|
||||
.buildScenario(10));
|
||||
}
|
||||
|
||||
public static VUser createVUser(Scenario scenario, UUID testId) {
|
||||
return new VUser(ScenarioContext.buildScenarioContext(testId, scenario,
|
||||
10));
|
||||
10), 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_run() {
|
||||
VUser vUser = createAWorker();
|
||||
vUser.run();
|
||||
public void test_reassamblyParameters() throws Exception {
|
||||
UUID testId = UUID.randomUUID();
|
||||
final String paramKey = "userName";
|
||||
final String fileName = "param1";
|
||||
final String fieldNames = paramKey + ", password";
|
||||
createFileAndWriteContent(testId, fileName,
|
||||
"chen, 123" + System.getProperty("line.separator") + "kkk, 321");
|
||||
final BehaviorModel behaviorModel = BehaviorModel.UserBehaviorBuilder(
|
||||
1, "beh1", "http", new ArrayList<ParameterModel>() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
{
|
||||
add(ParameterModel.createParameter(paramKey, TEST_CASE));
|
||||
}
|
||||
});
|
||||
RunScenarioModel runScenarioModel = buildRunScenarioModelWith(
|
||||
new ArrayList<UsePluginModel>() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
{
|
||||
add(buildCsvProviderWith("csvProvider0", fileName,
|
||||
fieldNames));
|
||||
}
|
||||
}, behaviorModel);
|
||||
Scenario scenario = Scenario
|
||||
.scenarioBuilderWithCompile(runScenarioModel);
|
||||
VUser vUser = createVUser(scenario, testId);
|
||||
Map<String, Object> plugins = new HashMap<String, Object>();
|
||||
TestHelper
|
||||
.invokePrivate(vUser, "preparePlugins", new Class<?>[] {
|
||||
Scenario.class, Map.class }, new Object[] { scenario,
|
||||
plugins });
|
||||
assertEquals(2, plugins.size());
|
||||
assertTrue(plugins.containsKey("csvProvider0"));
|
||||
CsvProvider csvProvider = (CsvProvider) plugins.get("csvProvider0");
|
||||
csvProvider.doNext();
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, String> params = (Map<String, String>) TestHelper
|
||||
.invokePrivate(vUser, "reassamblyParameters", new Class<?>[] {
|
||||
Behavior.class, Map.class }, new Object[] {
|
||||
scenario.getAllBehaviors().get(0), plugins });
|
||||
assertEquals(1, params.size());
|
||||
assertTrue(params.containsKey(paramKey));
|
||||
assertEquals("chen1okOrNot\\", params.get(paramKey));
|
||||
dropFiles(testId);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue