plugins are only loaded while starting.

This commit is contained in:
Zhen Tang 2013-06-27 15:34:41 +08:00
parent 147c40166d
commit 0d545811b8
4 changed files with 22 additions and 13 deletions

View File

@ -80,7 +80,7 @@ public class HomeController {
scenario.getUserBehaviors()[2].getParameters()[0].setKey("time"); scenario.getUserBehaviors()[2].getParameters()[0].setKey("time");
scenario.getUserBehaviors()[2].getParameters()[0].setValue("1000"); scenario.getUserBehaviors()[2].getParameters()[0].setValue("1000");
this.getScenarioEngine().runScenario(scenario, 1000); this.getScenarioEngine().runScenario(scenario, 100);
return "It works!"; return "It works!";
} }
} }

View File

@ -23,12 +23,19 @@ import org.springframework.stereotype.Component;
public class PluginManager { public class PluginManager {
private ClassHelper classHelper; private ClassHelper classHelper;
private TypeConverter typeConverter; private TypeConverter typeConverter;
private Map<String, Class<?>> 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() { private ClassHelper getClassHelper() {
return classHelper; return classHelper;
} }
@Autowired
private void setClassHelper(ClassHelper classHelper) { private void setClassHelper(ClassHelper classHelper) {
this.classHelper = classHelper; this.classHelper = classHelper;
} }
@ -37,11 +44,18 @@ public class PluginManager {
return typeConverter; return typeConverter;
} }
@Autowired
private void setTypeConverter(TypeConverter typeConverter) { private void setTypeConverter(TypeConverter typeConverter) {
this.typeConverter = typeConverter; this.typeConverter = typeConverter;
} }
public Map<String, Class<?>> getPlugins() {
return plugins;
}
private void setPlugins(Map<String, Class<?>> plugins) {
this.plugins = plugins;
}
private Map<String, Class<?>> findPlugins(String packageName) { private Map<String, Class<?>> findPlugins(String packageName) {
try { try {
List<String> classNames = this.getClassHelper().getClassNames( List<String> 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, public Object initializePlugin(Class<?> plugin,
Map<String, String> parameters) { Map<String, String> parameters) {
try { try {

View File

@ -5,7 +5,7 @@ import org.bench4q.agent.plugin.Plugin;
@Plugin("ConstantTimer") @Plugin("ConstantTimer")
public class ConstantTimerPlugin { public class ConstantTimerPlugin {
public ConstantTimerPlugin(int time) { public ConstantTimerPlugin() {
} }

View File

@ -1,6 +1,5 @@
package org.bench4q.agent.scenario; package org.bench4q.agent.scenario;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
@ -24,7 +23,6 @@ public class ScenarioEngine {
} }
public void runScenario(final Scenario scenario, int threadCount) { public void runScenario(final Scenario scenario, int threadCount) {
System.out.println("Start at:" + new Date(System.currentTimeMillis()));
ExecutorService executorService = Executors ExecutorService executorService = Executors
.newFixedThreadPool(threadCount); .newFixedThreadPool(threadCount);
int i; int i;
@ -37,7 +35,6 @@ public class ScenarioEngine {
executorService.execute(runnable); executorService.execute(runnable);
} }
executorService.shutdown(); executorService.shutdown();
System.out.println("End at:" + new Date(System.currentTimeMillis()));
} }
public void runScenario(Scenario scenario) { public void runScenario(Scenario scenario) {
@ -45,12 +42,13 @@ public class ScenarioEngine {
} }
private void doRunScenario(Scenario scenario) { private void doRunScenario(Scenario scenario) {
System.out.println("Running");
ScenarioContext scenarioContext = new ScenarioContext(); ScenarioContext scenarioContext = new ScenarioContext();
scenarioContext.setPlugins(new HashMap<String, Object>()); scenarioContext.setPlugins(new HashMap<String, Object>());
for (UsePlugin usePlugin : scenario.getUsePlugins()) { for (UsePlugin usePlugin : scenario.getUsePlugins()) {
String pluginId = usePlugin.getId(); String pluginId = usePlugin.getId();
Class<?> pluginClass = this.getPluginManager().getPlugin( Class<?> pluginClass = this.getPluginManager().getPlugins()
usePlugin.getName()); .get(usePlugin.getName());
Map<String, String> initParameters = new HashMap<String, String>(); Map<String, String> initParameters = new HashMap<String, String>();
for (Parameter parameter : usePlugin.getParameters()) { for (Parameter parameter : usePlugin.getParameters()) {
initParameters.put(parameter.getKey(), parameter.getValue()); initParameters.put(parameter.getKey(), parameter.getValue());
@ -71,5 +69,6 @@ public class ScenarioEngine {
this.getPluginManager().doBehavior(plugin, behaviorName, this.getPluginManager().doBehavior(plugin, behaviorName,
behaviorParameters); behaviorParameters);
} }
System.out.println("Finished");
} }
} }