now agent can run scenario with a batch
This commit is contained in:
parent
839e157412
commit
b4dc21b576
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<runScenario>
|
||||
<batches>
|
||||
<batch>
|
||||
<behaviors>
|
||||
<userBehavior>
|
||||
<id>1</id>
|
||||
<name>Get</name>
|
||||
<parameters>
|
||||
<parameter>
|
||||
<key>url</key>
|
||||
<value>http://localhost:8080/Bench4QTestCase/testcase.html
|
||||
</value>
|
||||
</parameter>
|
||||
<parameter>
|
||||
<key>parameters</key>
|
||||
<value></value>
|
||||
</parameter>
|
||||
</parameters>
|
||||
<use>http</use>
|
||||
</userBehavior>
|
||||
</behaviors>
|
||||
<childId>-1</childId>
|
||||
<id>0</id>
|
||||
<parentId>-1</parentId>
|
||||
</batch>
|
||||
</batches>
|
||||
<poolSize>0</poolSize>
|
||||
<usePlugins>
|
||||
<usePlugin>
|
||||
<id>http</id>
|
||||
<name>Http</name>
|
||||
<parameters />
|
||||
</usePlugin>
|
||||
<usePlugin>
|
||||
<id>timer</id>
|
||||
<name>ConstantTimer</name>
|
||||
<parameters />
|
||||
</usePlugin>
|
||||
</usePlugins>
|
||||
</runScenario>
|
|
@ -25,9 +25,9 @@ import org.bench4q.agent.api.model.RunScenarioResultModel;
|
|||
import org.bench4q.agent.api.model.StopTestModel;
|
||||
import org.bench4q.agent.api.model.TestBehaviorsBriefModel;
|
||||
import org.bench4q.agent.api.model.UsePluginModel;
|
||||
import org.bench4q.agent.api.model.behavior.Batch;
|
||||
import org.bench4q.agent.api.model.behavior.BehaviorBaseModel;
|
||||
import org.bench4q.agent.datacollector.impl.DetailStatusCodeResult;
|
||||
import org.bench4q.agent.scenario.Batch;
|
||||
import org.bench4q.agent.scenario.Parameter;
|
||||
import org.bench4q.agent.scenario.ScenarioNew;
|
||||
import org.bench4q.agent.scenario.ScenarioContext;
|
||||
|
|
|
@ -4,9 +4,12 @@ import java.util.List;
|
|||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import javax.xml.bind.annotation.XmlElements;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.bench4q.agent.api.model.behavior.BehaviorBaseModel;
|
||||
import org.bench4q.agent.api.model.behavior.TimerBehaviorModel;
|
||||
import org.bench4q.agent.api.model.behavior.UserBehaviorModel;
|
||||
|
||||
@XmlRootElement(name = "batch")
|
||||
public class BatchBehavior {
|
||||
|
@ -43,7 +46,9 @@ public class BatchBehavior {
|
|||
}
|
||||
|
||||
@XmlElementWrapper(name = "behaviors")
|
||||
@XmlElement
|
||||
@XmlElements(value = {
|
||||
@XmlElement(name = "userBehavior", type = UserBehaviorModel.class),
|
||||
@XmlElement(name = "timerBehavior", type = TimerBehaviorModel.class) })
|
||||
public List<BehaviorBaseModel> getBehaviors() {
|
||||
return behaviors;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||
|
||||
@XmlRootElement(name = "runScenario")
|
||||
public class RunScenarioModelNew {
|
||||
|
||||
private int poolSize;
|
||||
private List<UsePluginModel> usePlugins;
|
||||
private List<BatchBehavior> batches;
|
||||
|
@ -34,7 +33,7 @@ public class RunScenarioModelNew {
|
|||
}
|
||||
|
||||
@XmlElementWrapper(name = "batches")
|
||||
@XmlElement
|
||||
@XmlElement(name = "batch")
|
||||
public List<BatchBehavior> getBatches() {
|
||||
return batches;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package org.bench4q.agent.api.model.behavior;
|
||||
package org.bench4q.agent.scenario;
|
||||
|
||||
import org.bench4q.agent.scenario.behavior.Behavior;
|
||||
|
|
@ -8,7 +8,6 @@ import java.util.concurrent.ExecutorService;
|
|||
import java.util.concurrent.Executors;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.bench4q.agent.api.model.behavior.Batch;
|
||||
import org.bench4q.agent.plugin.Plugin;
|
||||
import org.bench4q.agent.plugin.PluginManager;
|
||||
import org.bench4q.agent.plugin.result.HttpReturn;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package org.bench4q.agent.scenario;
|
||||
|
||||
import org.bench4q.agent.api.model.behavior.Batch;
|
||||
|
||||
public class ScenarioNew {
|
||||
private UsePlugin[] usePlugins;
|
||||
|
|
|
@ -4,14 +4,14 @@ import java.io.ByteArrayInputStream;
|
|||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.bench4q.agent.api.model.RunScenarioModelOld;
|
||||
|
||||
import org.bench4q.agent.api.model.RunScenarioModelNew;
|
||||
import Communication.HttpRequester;
|
||||
|
||||
public class TestWithScriptFile {
|
||||
|
@ -37,24 +37,28 @@ public class TestWithScriptFile {
|
|||
}
|
||||
|
||||
public TestWithScriptFile() {
|
||||
this.setFilePath("scripts" + System.getProperty("file.separator")
|
||||
+ "ScriptSuzou.xml");
|
||||
this.setFilePath("Scripts" + System.getProperty("file.separator")
|
||||
+ "forBatch.xml");
|
||||
this.setHttpRequester(new HttpRequester());
|
||||
}
|
||||
|
||||
public void testWithScript() throws JAXBException {
|
||||
File file = new File(this.getFilePath());
|
||||
if (!file.exists()) {
|
||||
System.out.println("There's no this script!");
|
||||
return;
|
||||
}
|
||||
String scriptContent;
|
||||
try {
|
||||
scriptContent = FileUtils.readFileToString(file);
|
||||
RunScenarioModelOld runScenarioModel = extractRunScenarioModel(scriptContent);
|
||||
RunScenarioModelNew runScenarioModel = extractRunScenarioModel(scriptContent);
|
||||
if (runScenarioModel == null) {
|
||||
System.out.println("can't execute an unvalid script");
|
||||
return;
|
||||
}
|
||||
assertTrue(runScenarioModel.getBatches().size() > 0);
|
||||
assertTrue(runScenarioModel.getBatches().get(0).getBehaviors()
|
||||
.size() > 0);
|
||||
runScenarioModel.setPoolSize(load);
|
||||
|
||||
this.getHttpRequester().sendPostXml(this.url,
|
||||
|
@ -64,24 +68,25 @@ public class TestWithScriptFile {
|
|||
}
|
||||
}
|
||||
|
||||
private RunScenarioModelOld extractRunScenarioModel(String scriptContent) {
|
||||
private RunScenarioModelNew extractRunScenarioModel(String scriptContent) {
|
||||
try {
|
||||
Unmarshaller unmarshaller = JAXBContext.newInstance(
|
||||
RunScenarioModelOld.class).createUnmarshaller();
|
||||
return (RunScenarioModelOld) unmarshaller
|
||||
RunScenarioModelNew.class).createUnmarshaller();
|
||||
return (RunScenarioModelNew) unmarshaller
|
||||
.unmarshal(new ByteArrayInputStream(scriptContent
|
||||
.getBytes()));
|
||||
} catch (JAXBException e) {
|
||||
System.out.println("model unmarshal has an exception!");
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private String marshalRunScenarioModel(RunScenarioModelOld model)
|
||||
private String marshalRunScenarioModel(RunScenarioModelNew model)
|
||||
throws JAXBException {
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
JAXBContext.newInstance(RunScenarioModelOld.class).createMarshaller()
|
||||
JAXBContext.newInstance(RunScenarioModelNew.class).createMarshaller()
|
||||
.marshal(model, outputStream);
|
||||
return outputStream.toString();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue