Graph SampleResult.subResult的Jmeter图形侦听器
我正在寻找一个jmeter图形监听器,它将输出SamplerRequest对象的子结果。我还没有找到,我非常渴望得到它 我知道的唯一选项是graph,它绘制结果和子结果,但仅来自事务控制器,而不是嵌入式资源。您可以要求作者实现一个新的图表…我知道,这是一个老问题 不幸的是,似乎没有JMeter图形监听器可以对附加到SampleResult的子结果的结果进行图形化。刚刚面临同样的问题,我选择写我自己的 步骤:Graph SampleResult.subResult的Jmeter图形侦听器,graph,jmeter,listeners,Graph,Jmeter,Listeners,我正在寻找一个jmeter图形监听器,它将输出SamplerRequest对象的子结果。我还没有找到,我非常渴望得到它 我知道的唯一选项是graph,它绘制结果和子结果,但仅来自事务控制器,而不是嵌入式资源。您可以要求作者实现一个新的图表…我知道,这是一个老问题 不幸的是,似乎没有JMeter图形监听器可以对附加到SampleResult的子结果的结果进行图形化。刚刚面临同样的问题,我选择写我自己的 步骤: 将下面的类编译为jar 将jar放在jMeter的lib/ext文件夹中 打开您的测试计
public class SubResultDistributedResponseTimeListener extends DistributionGraphVisualizer {
private static final Logger LOG = LoggingManager.getLoggerForClass();
@Override
public void add(final SampleResult res) {
final List<SampleResult> subResults = Arrays.asList(res.getSubResults());
final SubResultDistributedResponseTimeListener inst = this;
JMeterUtils.runSafe(new Runnable() {
public void run() {
for (SampleResult r : subResults) {
long time = r.getEndTime() - r.getStartTime();
LOG.info("Adding result; start: " + r.getStartTime() + " end: " + r.getEndTime() + " duration: " + time);
SamplingStatCalculator model = inst.getCustomModel();
if (model != null) {
model.addSample(r);
inst.updateGui(model.getCurrentSample());
}
}
}
});
}
// we need this because DistributionGraphVisualizer has a private field 'model' which
// deals with updating the screen. Watch out for SecurityManager problems with
// accessing private fields.
public SamplingStatCalculator getCustomModel() {
try {
Field f = DistributionGraphVisualizer.class.getDeclaredField("model");
f.setAccessible(true);
return (SamplingStatCalculator) f.get(this);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
@Override
public String getName() {
return "SubResult Distributed Response Graph";
}
@Override
public String getStaticLabel() {
return this.getName();
}
@Override
public String getLabelResource() { // add this Listeners name to the right click context menu.
return this.getName();
}
公共类子结果DistributedResponseMeListener扩展分布式图形可视化工具{
私有静态最终记录器LOG=LoggingManager.getLoggerForClass();
@凌驾
公共无效添加(最终采样器结果res){
final List subResults=Arrays.asList(res.getSubResults());
最终子结果DistributedResponseTimeListener inst=此;
runSafe(新的Runnable(){
公开募捐{
对于(SampleResult r:子结果){
长时间=r.getEndTime()-r.getStartTime();
LOG.info(“添加结果;开始:+r.getStartTime()+”结束:+r.getEndTime()+”持续时间:“+time”);
SamplingStatCalculator model=inst.getCustomModel();
如果(型号!=null){
模型。添加样本(r);
inst.updateGui(model.getCurrentSample());
}
}
}
});
}
//我们需要这个,因为DistributionGraphVisualizer有一个私有字段“模型”,它
//处理屏幕更新。注意安全管理器与
//访问私有字段。
公共采样StatCalculator getCustomModel(){
试一试{
字段f=DistributionGraphVisualizer.class.getDeclaredField(“模型”);
f、 setAccessible(true);
return(SamplingStatCalculator)f.get(this);
}捕获(无此字段例外){
e、 printStackTrace();
}捕获(安全异常e){
e、 printStackTrace();
}捕获(IllegalArgumentException e){
e、 printStackTrace();
}捕获(非法访问例外e){
e、 printStackTrace();
}
返回null;
}
@凌驾
公共字符串getName(){
返回“子结果分布响应图”;
}
@凌驾
公共字符串getStaticLabel(){
返回这个.getName();
}
@凌驾
公共字符串getLabelResource(){//将此侦听器名称添加到右键单击上下文菜单。
返回这个.getName();
}
注意,这个可怕的catch块是因为我必须用Java1.5编译
如果读者愿意,我将把它留给他们来扩展不同的图形侦听器。什么是SampleRequest对象?从来没有听说过…你能提供一个链接吗?对不起,我的意思是说SampleResult不是“SampleRequest”。还有一个问题,“输出”是什么?Jmeter的View Results Tree组件可以很好地显示子结果…我想绘制子结果。我可以在ViewResults树中很好地看到输出,但无法绘制子结果。Summary、aggreagate和其他侦听器似乎只显示根元素的统计信息,而不是suresults。仅供参考。我对Jmeter不熟悉。