diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/api/HomeController.java b/Bench4Q-Agent/src/main/java/org/bench4q/agent/api/HomeController.java index 1077e3a2..c3cc85e9 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/api/HomeController.java +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/api/HomeController.java @@ -5,8 +5,8 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -import org.bench4q.agent.scenario.ScenarioContext; -import org.bench4q.agent.scenario.ScenarioEngine; +import org.bench4q.agent.scenario.engine.ScenarioContext; +import org.bench4q.agent.scenario.engine.ScenarioEngine; import org.bench4q.share.models.agent.ServerStatusModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/api/TestController.java b/Bench4Q-Agent/src/main/java/org/bench4q/agent/api/TestController.java index 6a007d8c..45ff91ca 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/api/TestController.java +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/api/TestController.java @@ -10,9 +10,9 @@ import org.apache.log4j.Logger; import org.bench4q.agent.datacollector.impl.BehaviorStatusCodeResult; import org.bench4q.agent.plugin.ParameterFileCollector; import org.bench4q.agent.scenario.Scenario; -import org.bench4q.agent.scenario.ScenarioContext; -import org.bench4q.agent.scenario.ScenarioEngine; import org.bench4q.agent.scenario.behavior.Behavior; +import org.bench4q.agent.scenario.engine.ScenarioContext; +import org.bench4q.agent.scenario.engine.ScenarioEngine; import org.bench4q.share.helper.MarshalHelper; import org.bench4q.share.models.agent.BehaviorBriefModel; import org.bench4q.share.models.agent.BehaviorStatusCodeResultModel; @@ -97,7 +97,7 @@ public class TestController { return null; } } - + private RunScenarioResultModel buildWith(UUID runId) { RunScenarioResultModel result = new RunScenarioResultModel(); result.setRunId(runId); @@ -267,7 +267,8 @@ public class TestController { return new CleanTestResultModel(true); } - @RequestMapping(value = "/updatePopulation/{runId}/{requiredLoad}", method = RequestMethod.POST) + @RequestMapping(value = "/updatePopulation/{runId}/{requiredLoad}", method = { + RequestMethod.POST, RequestMethod.GET }) @ResponseBody public UpdatePopulationModel updatePopulation(@PathVariable UUID runId, @PathVariable int requiredLoad) { diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/DataCollector.java b/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/DataCollector.java index 94c13c9f..1e1a073a 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/DataCollector.java +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/DataCollector.java @@ -3,8 +3,8 @@ package org.bench4q.agent.datacollector; import java.util.Map; import org.bench4q.agent.datacollector.impl.BehaviorStatusCodeResult; -import org.bench4q.agent.scenario.BehaviorResult; -import org.bench4q.agent.scenario.PageResult; +import org.bench4q.agent.scenario.engine.BehaviorResult; +import org.bench4q.agent.scenario.engine.PageResult; public interface DataCollector { public void add(BehaviorResult behaviorResult); diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/AbstractDataCollector.java b/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/AbstractDataCollector.java index 6f846ac7..1ab0ed1d 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/AbstractDataCollector.java +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/AbstractDataCollector.java @@ -7,7 +7,7 @@ import java.util.concurrent.Executors; import org.bench4q.agent.Main; import org.bench4q.agent.datacollector.DataCollector; import org.bench4q.agent.helper.ApplicationContextHelper; -import org.bench4q.agent.scenario.BehaviorResult; +import org.bench4q.agent.scenario.engine.BehaviorResult; import org.bench4q.agent.storage.StorageHelper; import org.bench4q.share.models.agent.BehaviorResultModel; diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/PageResultCollector.java b/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/PageResultCollector.java index f046c746..e75b5a30 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/PageResultCollector.java +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/PageResultCollector.java @@ -4,8 +4,8 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; -import org.bench4q.agent.scenario.BehaviorResult; -import org.bench4q.agent.scenario.PageResult; +import org.bench4q.agent.scenario.engine.BehaviorResult; +import org.bench4q.agent.scenario.engine.PageResult; import org.bench4q.share.models.agent.statistics.AgentPageBriefModel; public class PageResultCollector extends AbstractDataCollector { diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/ScenarioResultCollector.java b/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/ScenarioResultCollector.java index 53b44994..f58328b6 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/ScenarioResultCollector.java +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/datacollector/impl/ScenarioResultCollector.java @@ -7,8 +7,8 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -import org.bench4q.agent.scenario.BehaviorResult; -import org.bench4q.agent.scenario.PageResult; +import org.bench4q.agent.scenario.engine.BehaviorResult; +import org.bench4q.agent.scenario.engine.PageResult; import org.bench4q.share.models.agent.statistics.AgentBriefStatusModel; /** diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/MongoDB/ui.xml b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/MongoDB/ui.xml index 59938883..24a18fb0 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/MongoDB/ui.xml +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/MongoDB/ui.xml @@ -3,30 +3,30 @@ - + - + - + - + - + - + diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/comandline/ui.xml b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/comandline/ui.xml index 5093e5af..f2e622d0 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/comandline/ui.xml +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/comandline/ui.xml @@ -6,7 +6,7 @@ - + diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/context/ui.xml b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/context/ui.xml index f557275b..ab5778e7 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/context/ui.xml +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/context/ui.xml @@ -6,7 +6,7 @@ - + diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/http/ui.xml b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/http/ui.xml index 00a8d872..305abc93 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/http/ui.xml +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/http/ui.xml @@ -1,5 +1,5 @@ - + @@ -7,7 +7,7 @@ - + diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/iterator/ui.xml b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/iterator/ui.xml index 10a0caee..0ded9f1c 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/iterator/ui.xml +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/iterator/ui.xml @@ -3,10 +3,11 @@ - + - + diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/log/ui.xml b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/log/ui.xml index b20dda6d..deb33bb5 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/log/ui.xml +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/log/ui.xml @@ -6,7 +6,7 @@ - + diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/random/ui.xml b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/random/ui.xml index 1241609d..2b87c5b4 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/random/ui.xml +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/random/ui.xml @@ -1,5 +1,5 @@ - + diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/timer/ui.xml b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/timer/ui.xml index cfe45b9e..632ba265 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/timer/ui.xml +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/timer/ui.xml @@ -1,5 +1,5 @@ - + diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/unique/ui.xml b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/unique/ui.xml index b60efd8c..05a5b33b 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/unique/ui.xml +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/basic/unique/ui.xml @@ -3,10 +3,11 @@ - + - + diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/dtd/ui.dtd b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/dtd/ui.dtd index 4ef7cc6a..dcb0b45d 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/dtd/ui.dtd +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/plugin/dtd/ui.dtd @@ -20,7 +20,7 @@ workQueue = new SynchronousQueue(); - ThreadPoolExecutor executor = new ThreadPoolExecutor(poolSize, - poolSize, keepAliveTime, TimeUnit.MINUTES, workQueue, - new DiscardPolicy()); + final Scenario scenario, int poolSize, PluginManager pluginManager) { + ScenarioContext scenarioContext = buildScenarioContextWithoutScenario( + testId, poolSize, pluginManager); scenarioContext.setScenario(scenario); - scenarioContext.setStartDate(new Date(System.currentTimeMillis())); - scenarioContext.setExecutorService(executor); - scenarioContext.setDataStatistics(new ScenarioResultCollector(testId)); return scenarioContext; } public static ScenarioContext buildScenarioContextWithoutScenario( - UUID testId, int poolSize) { + UUID testId, int poolSize, PluginManager pluginManager) { ScenarioContext scenarioContext = new ScenarioContext(); scenarioContext.setTestId(testId); - final SynchronousQueue workQueue = new SynchronousQueue(); + scenarioContext.setPluginManager(pluginManager); + final ArrayBlockingQueue workQueue = new ArrayBlockingQueue( + poolSize); ThreadPoolExecutor executor = new ThreadPoolExecutor(poolSize, poolSize, keepAliveTime, TimeUnit.MINUTES, workQueue, new DiscardPolicy()); @@ -125,4 +132,18 @@ public class ScenarioContext { this.getExecutor().setMaximumPoolSize(requiredLoad); } + public void addTask() { + if (this.isFinished()) { + return; + } + this.getExecutor().execute(new VUser(this, 1, getPluginManager())); + Logger.getLogger(this.getClass()).info( + this.getExecutor().getActiveCount()); + } + + public void initTasks() { + for (int i = 0; i < this.getExecutor().getCorePoolSize(); i++) { + addTask(); + } + } } diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/ScenarioEngine.java b/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/engine/ScenarioEngine.java similarity index 73% rename from Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/ScenarioEngine.java rename to Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/engine/ScenarioEngine.java index a127e8b3..a9d3b0f9 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/ScenarioEngine.java +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/engine/ScenarioEngine.java @@ -1,13 +1,11 @@ -package org.bench4q.agent.scenario; +package org.bench4q.agent.scenario.engine; import java.util.HashMap; import java.util.Map; import java.util.UUID; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - import org.apache.log4j.Logger; import org.bench4q.agent.plugin.PluginManager; +import org.bench4q.agent.scenario.Scenario; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -41,7 +39,8 @@ public class ScenarioEngine { public void addRunningTestWithoutScenario(UUID runId, int poolSize) { try { final ScenarioContext scenarioContext = ScenarioContext - .buildScenarioContextWithoutScenario(runId, poolSize); + .buildScenarioContextWithoutScenario(runId, poolSize, + getPluginManager()); this.getRunningTests().put(runId, scenarioContext); } catch (Exception e) { e.printStackTrace(); @@ -61,28 +60,15 @@ public class ScenarioEngine { return false; } final ScenarioContext context = this.getRunningTests().get(runId); - return runWith(context, runId); + return runWith(context); } - private boolean runWith(final ScenarioContext scenarioContext, - final UUID runId) { + private boolean runWith(final ScenarioContext scenarioContext) { if (scenarioContext == null) { logger.error("The context required is null"); return false; } - ExecutorService taskMaker = Executors.newSingleThreadExecutor(); - - taskMaker.execute(new Runnable() { - public void run() { - int currentIterationId = 0; - while (!scenarioContext.isFinished()) { - scenarioContext.getExecutor().execute( - new VUser(scenarioContext, currentIterationId, - getPluginManager())); - currentIterationId++; - } - } - }); + scenarioContext.initTasks(); return true; } diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/engine/TaskMonitor.java b/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/engine/TaskMonitor.java new file mode 100644 index 00000000..3f4adc0a --- /dev/null +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/engine/TaskMonitor.java @@ -0,0 +1,26 @@ +package org.bench4q.agent.scenario.engine; + +public class TaskMonitor { + + public static class TaskProducer implements Runnable { + private ScenarioContext context; + + public TaskProducer(ScenarioContext context) { + this.context = context; + } + + @Override + public void run() { + int poolSize = context.getExecutor().getCorePoolSize(); + try { + if (context.getExecutor().getTaskCount() > poolSize * 2) { + this.wait(); + } + } catch (Exception e) { + + } finally { + + } + } + } +} diff --git a/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/VUser.java b/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/engine/VUser.java similarity index 95% rename from Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/VUser.java rename to Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/engine/VUser.java index 4f4dee4c..4d158553 100644 --- a/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/VUser.java +++ b/Bench4Q-Agent/src/main/java/org/bench4q/agent/scenario/engine/VUser.java @@ -1,4 +1,4 @@ -package org.bench4q.agent.scenario; +package org.bench4q.agent.scenario.engine; import java.util.Date; import java.util.HashMap; @@ -12,6 +12,11 @@ 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.Batch; +import org.bench4q.agent.scenario.Page; +import org.bench4q.agent.scenario.Parameter; +import org.bench4q.agent.scenario.Scenario; +import org.bench4q.agent.scenario.UsePlugin; import org.bench4q.agent.scenario.behavior.Behavior; import org.bench4q.agent.scenario.dfa.ParamPart; @@ -58,6 +63,7 @@ public class VUser implements Runnable { } private void doCleanUp() { + this.getScenarioContext().addTask(); this.setScenarioContext(null); } diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/TestBase.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/TestBase.java index ccde802d..874f90a9 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/TestBase.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/TestBase.java @@ -10,8 +10,8 @@ import org.apache.commons.io.FileUtils; import org.bench4q.agent.plugin.ParameterBarn; import org.bench4q.agent.plugin.PluginManager; import org.bench4q.agent.scenario.Scenario; -import org.bench4q.agent.scenario.ScenarioContext; -import org.bench4q.agent.scenario.VUser; +import org.bench4q.agent.scenario.engine.ScenarioContext; +import org.bench4q.agent.scenario.engine.VUser; import org.bench4q.share.helper.TestHelper; import org.bench4q.share.models.agent.ParameterModel; import org.bench4q.share.models.agent.RunScenarioModel; @@ -111,6 +111,6 @@ public abstract class TestBase { public VUser createVUser(Scenario scenario, UUID testId) { return new VUser(ScenarioContext.buildScenarioContext(testId, scenario, - 10), 1, this.getPluginManager()); + 10, pluginManager), 1, this.getPluginManager()); } } diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/TestWithScriptFile.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/TestWithScriptFile.java index c610ca04..f929c8ff 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/TestWithScriptFile.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/TestWithScriptFile.java @@ -62,7 +62,7 @@ public class TestWithScriptFile { public TestWithScriptFile() { this.setFilePath("Scripts" + System.getProperty("file.separator") - + "httpWithoutTimer.xml"); + + "homepage.xml"); this.setHttpRequester(new HttpRequester()); } @@ -193,7 +193,7 @@ public class TestWithScriptFile { files.add(new File("Scripts" + System.getProperty("file.separator") + "testJD.xml")); HttpResponse httpResponse1 = this.getHttpRequester().sendPost( - url + "/bookTest/10", null, null); + url + "/bookTest/100", null, null); RunScenarioResultModel bookResponse = (RunScenarioResultModel) MarshalHelper .tryUnmarshal(RunScenarioResultModel.class, httpResponse1.getContent()); diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/DetailStatisticsTest.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/DetailStatisticsTest.java index ca586ba9..f5bebd3d 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/DetailStatisticsTest.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/DetailStatisticsTest.java @@ -9,7 +9,7 @@ import java.util.UUID; import org.bench4q.agent.datacollector.DataCollector; import org.bench4q.agent.datacollector.impl.ScenarioResultCollector; import org.bench4q.agent.datacollector.impl.BehaviorStatusCodeResult; -import org.bench4q.agent.scenario.BehaviorResult; +import org.bench4q.agent.scenario.engine.BehaviorResult; import org.bench4q.agent.storage.StorageHelper; import org.junit.Test; import org.springframework.context.ApplicationContext; diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/PageResultStatisticsTest.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/PageResultStatisticsTest.java index 2aa57c88..671bf4ea 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/PageResultStatisticsTest.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/PageResultStatisticsTest.java @@ -2,7 +2,7 @@ package org.bench4q.agent.test.datastatistics; import org.bench4q.agent.datacollector.DataCollector; import org.bench4q.agent.datacollector.impl.PageResultCollector; -import org.bench4q.agent.scenario.PageResult; +import org.bench4q.agent.scenario.engine.PageResult; import org.bench4q.share.models.agent.statistics.AgentPageBriefModel; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/ScenarioStatisticsTest.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/ScenarioStatisticsTest.java index 9271b126..b24923d4 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/ScenarioStatisticsTest.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/datastatistics/ScenarioStatisticsTest.java @@ -9,8 +9,8 @@ import java.util.UUID; import org.bench4q.agent.datacollector.DataCollector; import org.bench4q.agent.datacollector.impl.ScenarioResultCollector; -import org.bench4q.agent.scenario.BehaviorResult; -import org.bench4q.agent.scenario.PageResult; +import org.bench4q.agent.scenario.engine.BehaviorResult; +import org.bench4q.agent.scenario.engine.PageResult; import org.bench4q.agent.storage.StorageHelper; import org.bench4q.share.models.agent.statistics.AgentBriefStatusModel; import org.junit.Test; diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_ContextPlugin.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_ContextPlugin.java index 6b3d885f..498964a6 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_ContextPlugin.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_ContextPlugin.java @@ -6,7 +6,7 @@ import java.util.UUID; import org.bench4q.agent.plugin.basic.context.Context; import org.bench4q.agent.scenario.Scenario; -import org.bench4q.agent.scenario.VUser; +import org.bench4q.agent.scenario.engine.VUser; import org.bench4q.agent.test.TestBase; import org.bench4q.share.models.agent.ParameterModel; import org.bench4q.share.models.agent.RunScenarioModel; diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_CsvProvider.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_CsvProvider.java index cf4c6c8b..2c8c55ed 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_CsvProvider.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_CsvProvider.java @@ -13,7 +13,7 @@ import java.util.UUID; import org.bench4q.agent.plugin.PluginManager; import org.bench4q.agent.plugin.basic.csvprovider.CsvProvider; import org.bench4q.agent.scenario.Scenario; -import org.bench4q.agent.scenario.VUser; +import org.bench4q.agent.scenario.engine.VUser; import org.bench4q.agent.test.TestBase; import org.bench4q.share.helper.TestHelper; import org.bench4q.share.models.agent.ParameterModel; diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_HttpPlugin.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_HttpPlugin.java index 97af7505..97ebad8b 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_HttpPlugin.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_HttpPlugin.java @@ -16,7 +16,7 @@ import org.bench4q.agent.plugin.basic.http.BatchRequest; import org.bench4q.agent.plugin.basic.http.HttpPlugin; import org.bench4q.agent.plugin.basic.http.HttpReturn; import org.bench4q.agent.scenario.Scenario; -import org.bench4q.agent.scenario.VUser; +import org.bench4q.agent.scenario.engine.VUser; import org.bench4q.agent.test.TestBase; import org.bench4q.share.helper.MarshalHelper; import org.bench4q.share.helper.TestHelper; diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_MongoDBPlugin.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_MongoDBPlugin.java index 4b5a0ded..627e4f4f 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_MongoDBPlugin.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/plugin/Test_MongoDBPlugin.java @@ -12,7 +12,7 @@ import org.apache.commons.io.FileUtils; import org.bench4q.agent.plugin.basic.MongoDB.MongoDBPlugin; import org.bench4q.agent.plugin.basic.MongoDB.MongoDBReturn; import org.bench4q.agent.scenario.Scenario; -import org.bench4q.agent.scenario.VUser; +import org.bench4q.agent.scenario.engine.VUser; import org.bench4q.agent.test.TestBase; import org.bench4q.share.helper.MarshalHelper; import org.bench4q.share.helper.TestHelper; diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_ScenarioContext.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_ScenarioContext.java index 8cf48bc2..737d5416 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_ScenarioContext.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_ScenarioContext.java @@ -5,21 +5,25 @@ import static org.junit.Assert.*; import java.util.UUID; import java.util.concurrent.TimeUnit; +import org.bench4q.agent.plugin.PluginManager; import org.bench4q.agent.scenario.Scenario; -import org.bench4q.agent.scenario.ScenarioContext; +import org.bench4q.agent.scenario.engine.ScenarioContext; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:application-context.xml" }) public class Test_ScenarioContext { + @Autowired + private PluginManager pluginManager; @Test public void testBuildScenarioContext() { ScenarioContext context = ScenarioContext.buildScenarioContext( - UUID.randomUUID(), new Scenario(), 20); + UUID.randomUUID(), new Scenario(), 20, this.pluginManager); assertEquals(10, context.getExecutor().getKeepAliveTime(TimeUnit.MINUTES)); assertEquals(20, context.getExecutor().getMaximumPoolSize()); diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_ScenarioEngine.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_ScenarioEngine.java index 890fca0d..c66520ae 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_ScenarioEngine.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_ScenarioEngine.java @@ -2,12 +2,16 @@ package org.bench4q.agent.test.scenario; import static org.junit.Assert.*; +import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.UUID; +import org.apache.commons.io.FileUtils; +import org.bench4q.agent.plugin.PluginManager; import org.bench4q.agent.scenario.Scenario; -import org.bench4q.agent.scenario.ScenarioContext; -import org.bench4q.agent.scenario.ScenarioEngine; +import org.bench4q.agent.scenario.engine.ScenarioContext; +import org.bench4q.agent.scenario.engine.ScenarioEngine; import org.bench4q.agent.test.TestBase; import org.bench4q.share.models.agent.ParameterModel; import org.bench4q.share.models.agent.scriptrecord.BehaviorModel; @@ -22,6 +26,9 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @ContextConfiguration(locations = { "classpath:application-context.xml" }) public class Test_ScenarioEngine extends TestBase { private ScenarioEngine scenarioEngine; + private UUID testId = UUID.randomUUID(); + @Autowired + private PluginManager pluginManager; private ScenarioEngine getScenarioEngine() { return scenarioEngine; @@ -34,19 +41,27 @@ public class Test_ScenarioEngine extends TestBase { @Test public void test_UpdatePopulation() { - UUID testId = UUID.randomUUID(); - ScenarioContext scenarioContext = ScenarioContext - .buildScenarioContext( - testId, - Scenario.scenarioBuilderWithCompile(buildRunScenarioModelWith( - new ArrayList(), - BehaviorModel - .UserBehaviorBuilder(1, "ok", "http", - new ArrayList()))), - 100); + ScenarioContext scenarioContext = ScenarioContext.buildScenarioContext( + testId, + Scenario.scenarioBuilderWithCompile(buildRunScenarioModelWith( + new ArrayList(), BehaviorModel + .UserBehaviorBuilder(1, "ok", "http", + new ArrayList()))), + 100, this.pluginManager); this.getScenarioEngine().getRunningTests().put(testId, scenarioContext); this.getScenarioEngine().updatePopulation(testId, 20); assertEquals(20, scenarioContext.getExecutor().getMaximumPoolSize()); System.out.println(scenarioContext.getExecutor().getActiveCount()); } + + @Test + public void test_RunWithContext() throws IOException { + ScenarioContext scenarioContext = ScenarioContext.buildScenarioContext( + testId, Scenario.scenarioBuilderWithCompile(FileUtils + .readFileToString(new File("Scripts" + + System.getProperty("file.separator") + + "homepage.xml"))), 100, this.pluginManager); + this.getScenarioEngine().getRunningTests().put(testId, scenarioContext); + this.getScenarioEngine().runWith(testId); + } } diff --git a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_VUser.java b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_VUser.java index f949af49..b4bda65a 100644 --- a/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_VUser.java +++ b/Bench4Q-Agent/src/test/java/org/bench4q/agent/test/scenario/Test_VUser.java @@ -9,8 +9,8 @@ import static org.junit.Assert.*; import org.bench4q.agent.plugin.basic.csvprovider.CsvProvider; import org.bench4q.agent.scenario.Scenario; -import org.bench4q.agent.scenario.VUser; import org.bench4q.agent.scenario.behavior.Behavior; +import org.bench4q.agent.scenario.engine.VUser; import org.bench4q.agent.test.TestBase; import org.bench4q.share.helper.TestHelper; import org.bench4q.share.models.agent.ParameterModel; diff --git a/Bench4Q-Agent/src/test/resources/application-context.xml b/Bench4Q-Agent/src/test/resources/application-context.xml index 6013e944..6c72d7ff 100644 --- a/Bench4Q-Agent/src/test/resources/application-context.xml +++ b/Bench4Q-Agent/src/test/resources/application-context.xml @@ -5,9 +5,6 @@ xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> - - + -