2011-11-25 20 views
0

我正在寻找一个将输出SamplerRequest对象的子结果的jmeter图监听器。我还没有找到一个,我非常渴望得到它。用于SampleResult.subResult的Jmeter Graph Listener

+0

它是什么SamplerRequest对象?从未听说...你能提供一个链接吗? –

+0

对不起,我的意思是说SampleResult不是'SamplerRequest'。 – wonchi

+0

还有一个问题 - 什么是“输出”?查看结果Jmeter的树组件显示子结果... –

回答

0

我知道的唯一选项是Hits Per Second图,它绘制了结果和子结果,但仅限于事务控制器,而不是嵌入式资源。您可能会要求作者实施新图...

1

老问题,我知道。

不幸的是,似乎没有JMeter图形监听器将绘制附加到SampleResult的子结果的结果。刚刚面对同样的问题,我选择写我自己的。

步骤:

  1. 编译以下类作为广口瓶中。
  2. 把jar放在jMeter的lib/ext文件夹中。
  3. 打开您的测试计划,浏览菜单,以正常添加监听器,选择“SubResult Distributed Response Graph”
  4. 运行您的测试计划。

类:

的下面类将提供一个响应时间分布图,其将只图形子结果。

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(); 
} 

注意,可怕的丑块是因为我不得不在Java 1.5中编译。

我会让读者根据需要扩展不同的图形监听器。