【发布时间】:2016-01-18 09:37:55
【问题描述】:
我需要获取摘要报告侦听器并对其进行自定义,以便我可以添加一个额外的列来显示每个输出记录的延迟。它也可以作为自定义插件实现。我想要的是一个侦听器,其中包含 Summary Report 的所有列以及 Latency 列。
【问题讨论】:
标签: jmeter jmeter-plugins
我需要获取摘要报告侦听器并对其进行自定义,以便我可以添加一个额外的列来显示每个输出记录的延迟。它也可以作为自定义插件实现。我想要的是一个侦听器,其中包含 Summary Report 的所有列以及 Latency 列。
【问题讨论】:
标签: jmeter jmeter-plugins
如果您真的必须“获取摘要报告侦听器并对其进行自定义”,那么您将不得不走上艰难的道路:
首先,设置一个 Java 项目。例如,如果使用 Maven,这是您的典型设置 with one additional dependency
不幸的是,SummaryReport 的实现方式不允许围绕数据列提供任何灵活性。因此,您必须复制 SummaryReport 并将您需要的内容添加到您的版本中。或者基于 AbstractVisualizer 为该一个延迟值实现您自己的单独“可视化器”(在这种情况下,使用 SummaryReport 作为示例说明如何执行此操作)。
然后将插件构建到 jar 中,将其放入 jmeter_dir/lib/ext,并将其所有缺少的依赖项放入 jmeter_dir/lib(如果使用 Maven 构建,则更容易创建 zip that contains your jar and all dependencies
如果一切都好,你会得到你想要的。
但是,如果您可以接受不使用摘要报告来处理延迟,则更简单的解决方案是将其中一个可编程侦听器(即 BSF listener 或 JSR223 Listener)添加到您的测试计划中。它可以访问sampleResult 对象。因此,您可以开发一个小功能,将延迟保存到文件中。像这样(使用 BSF 并选择“java”作为语言):
String filename = "/tmp/latency_report";
FileOutputStream f = new FileOutputStream(filename, true);
PrintStream p = new PrintStream(f);
this.interpreter.setOut(p);
print(prev.getEndTime() + "," + prev.getLatency());
f.close();
请注意,此示例显示了最原始的实现(即,它每次都打开文件,对于多线程来说并不安全,没有错误处理)。
【讨论】: