From 0d545811b8eb72862015edbe520d34f121eea169 Mon Sep 17 00:00:00 2001 From: Zhen Tang Date: Thu, 27 Jun 2013 15:34:41 +0800 Subject: [PATCH] plugins are only loaded while starting. --- .../org/bench4q/agent/api/HomeController.java | 2 +- .../bench4q/agent/plugin/PluginManager.java | 22 ++++++++++++++----- .../plugin/timer/ConstantTimerPlugin.java | 2 +- .../agent/scenario/ScenarioEngine.java | 9 ++++---- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/bench4q/agent/api/HomeController.java b/src/main/java/org/bench4q/agent/api/HomeController.java index cb4fedb0..69fdd854 100644 --- a/src/main/java/org/bench4q/agent/api/HomeController.java +++ b/src/main/java/org/bench4q/agent/api/HomeController.java @@ -80,7 +80,7 @@ public class HomeController { scenario.getUserBehaviors()[2].getParameters()[0].setKey("time"); scenario.getUserBehaviors()[2].getParameters()[0].setValue("1000"); - this.getScenarioEngine().runScenario(scenario, 1000); + this.getScenarioEngine().runScenario(scenario, 100); return "It works!"; } } \ No newline at end of file diff --git a/src/main/java/org/bench4q/agent/plugin/PluginManager.java b/src/main/java/org/bench4q/agent/plugin/PluginManager.java index 4fdd1cc6..a39dc8db 100644 --- a/src/main/java/org/bench4q/agent/plugin/PluginManager.java +++ b/src/main/java/org/bench4q/agent/plugin/PluginManager.java @@ -23,12 +23,19 @@ import org.springframework.stereotype.Component; public class PluginManager { private ClassHelper classHelper; private TypeConverter typeConverter; + private Map> plugins; + + @Autowired + public PluginManager(ClassHelper classHelper, TypeConverter typeConverter) { + this.setClassHelper(classHelper); + this.setTypeConverter(typeConverter); + this.setPlugins(this.findPlugins("org.bench4q.agent.plugin")); + } private ClassHelper getClassHelper() { return classHelper; } - @Autowired private void setClassHelper(ClassHelper classHelper) { this.classHelper = classHelper; } @@ -37,11 +44,18 @@ public class PluginManager { return typeConverter; } - @Autowired private void setTypeConverter(TypeConverter typeConverter) { this.typeConverter = typeConverter; } + public Map> getPlugins() { + return plugins; + } + + private void setPlugins(Map> plugins) { + this.plugins = plugins; + } + private Map> findPlugins(String packageName) { try { List classNames = this.getClassHelper().getClassNames( @@ -60,10 +74,6 @@ public class PluginManager { } } - public Class getPlugin(String name) { - return this.findPlugins("org.bench4q.agent.plugin").get(name); - } - public Object initializePlugin(Class plugin, Map parameters) { try { diff --git a/src/main/java/org/bench4q/agent/plugin/timer/ConstantTimerPlugin.java b/src/main/java/org/bench4q/agent/plugin/timer/ConstantTimerPlugin.java index 010b021c..f78d857f 100644 --- a/src/main/java/org/bench4q/agent/plugin/timer/ConstantTimerPlugin.java +++ b/src/main/java/org/bench4q/agent/plugin/timer/ConstantTimerPlugin.java @@ -5,7 +5,7 @@ import org.bench4q.agent.plugin.Plugin; @Plugin("ConstantTimer") public class ConstantTimerPlugin { - public ConstantTimerPlugin(int time) { + public ConstantTimerPlugin() { } diff --git a/src/main/java/org/bench4q/agent/scenario/ScenarioEngine.java b/src/main/java/org/bench4q/agent/scenario/ScenarioEngine.java index f6b51eb2..51a849d8 100644 --- a/src/main/java/org/bench4q/agent/scenario/ScenarioEngine.java +++ b/src/main/java/org/bench4q/agent/scenario/ScenarioEngine.java @@ -1,6 +1,5 @@ package org.bench4q.agent.scenario; -import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -24,7 +23,6 @@ public class ScenarioEngine { } public void runScenario(final Scenario scenario, int threadCount) { - System.out.println("Start at:" + new Date(System.currentTimeMillis())); ExecutorService executorService = Executors .newFixedThreadPool(threadCount); int i; @@ -37,7 +35,6 @@ public class ScenarioEngine { executorService.execute(runnable); } executorService.shutdown(); - System.out.println("End at:" + new Date(System.currentTimeMillis())); } public void runScenario(Scenario scenario) { @@ -45,12 +42,13 @@ public class ScenarioEngine { } private void doRunScenario(Scenario scenario) { + System.out.println("Running"); ScenarioContext scenarioContext = new ScenarioContext(); scenarioContext.setPlugins(new HashMap()); for (UsePlugin usePlugin : scenario.getUsePlugins()) { String pluginId = usePlugin.getId(); - Class pluginClass = this.getPluginManager().getPlugin( - usePlugin.getName()); + Class pluginClass = this.getPluginManager().getPlugins() + .get(usePlugin.getName()); Map initParameters = new HashMap(); for (Parameter parameter : usePlugin.getParameters()) { initParameters.put(parameter.getKey(), parameter.getValue()); @@ -71,5 +69,6 @@ public class ScenarioEngine { this.getPluginManager().doBehavior(plugin, behaviorName, behaviorParameters); } + System.out.println("Finished"); } }