

1、入口
New Driver.java文件:反射调用JMeter类的start方法。
2、输入数据
JMeter.java:
Cmd Agrs:解析命令行参数,如-n 、-t、-o、g、-l等;
Properties:加载配置文件,如jmeter.properties、user.properties、system.properties等;
通过参数选择GUI或者非GUI的方式启动;
Jmx ->hash tree:解析test plan文件成hash tree。
3、运行测试脚本
JMeter.java:
实例化StandardJMeterEngine;
调用已解析的hash tree;
JMeterEngine运行测试(实际上JMeterEngine是一个线程,每次调用run方法进行测试,也是调用采样器的过程)。
non-gui模式:
org.apache.jmeter.JMeter
if (!remoteStart) {
JMeterEngine engine = new StandardJMeterEngine();
clonedTree.add(clonedTree.getArray()[0], new ListenToTest(
org.apache.jmeter.JMeter.ListenToTest.RunMode.LOCAL, false, reportGenerator));
engine.configure(clonedTree);
long now=System.currentTimeMillis();
println("Starting standalone test @ "+new Date(now)+" ("+now+")");
engines.add(engine);
engine.runTest();
}
GUI start:
org.apache.jmeter.gui.action.Start
engine = new StandardJMeterEngine();
engine.configure(clonedTree);
try {
engine.runTest();
} catch (JMeterEngineException e) {
JOptionPane.showMessageDialog(gui.getMainFrame(), e.getMessage(),
JMeterUtils.getResString("error_occurred"), JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$
}
if (log.isDebugEnabled()) {
log.debug("test plan after cloning and running test is running version: {}",
((TestPlan) treeToUse.getArray()[0]).isRunningVersion());
}
4、监听
JMeter.java:
JMeter类监听StopTestNow / Shutdown等指令。
网友评论