美文网首页
jmeter(三十四)jmeter原理

jmeter(三十四)jmeter原理

作者: Sandra_liu | 来源:发表于2022-02-19 18:42 被阅读0次
jmeter结构图.png jmeter运行机制.png

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等指令。

参考:https://blog.csdn.net/zuozewei/article/details/85042829

相关文章

网友评论

      本文标题:jmeter(三十四)jmeter原理

      本文链接:https://www.haomeiwen.com/subject/rudplrtx.html