我正在使用JMeter进行负载测试。我想扩展Timer以延迟毫秒,然后用它来延迟下一个样本。我目前正在使用BeanShell Script来完成此任务,但我希望为它创建一个Java类而不是脚本片段。我应该扩展什么Timer类,有一个例子我可以看一下吗?我没有在网上找到任何东西: - |
答案 0 :(得分:1)
我从来没有实现过计时器,但我确实实现了Sampler,Post-Processor和Listener,因此我对Timer与其他组件的相似性做了一些假设。此外,我没有看到任何关于JMeter插件开发的好文档,我通常会使用JMeter代码来了解它们是如何做到的,然后检查解释各种函数的API文档。
基本上你需要实现2个类
所以插件的骨架看起来像这样:
public class MyTimerGui extends AbstractTimerGui {
// usually has at least the following 3 functions:
@Override
public TestElement createTestElement() {
}
@Override
public void modifyTestElement(TestElement timer) {
}
@Override
public void configure(TestElement el) {
}
}
public class MyTimer extends AbstractTestElement implements Timer {
long delay() {
return someDelayOfYourChoice;
}
// you may need some other functions, e.g. running on test start or sample start
}
就示例而言,您可以查看built-in timers,具体看起来像ConstantTimer这是一个很好的简洁示例,说明它是如何完成的。你甚至可以直接扩展ConstantTimer,就像RandomTimer那样,而不是实现Timer接口。
对于UI部分,您也可以关注ConstantTimerGui示例,或者如果您的界面更接近随机计时器,则可以扩展AbstractRandomTimerGui
要构建插件,我建议使用类似于this example的maven项目。然后,对于运行时,您将其部署到lib/ext
文件夹中。如果您的插件使用JMeter中不存在的任何库,则还需要将它们部署在JMeter的lib
文件夹中。