扩展 JMeter 定时器以可变地延迟定时器
Extending JMeter Timer to delay timer variably
我正在使用 JMeter 进行负载测试。我想扩展 Timer 以进行毫秒延迟,然后用它来延迟下一个样本。我目前正在使用 BeanShell 脚本来完成此操作,但我想要一个 Java class 而不是脚本片段。我应该扩展什么计时器 class,有没有我可以看的示例?我还没有在网上找到任何东西:-|
我从来不需要实现定时器,但我确实实现了采样器、Post-处理器和监听器,所以我对定时器与其他组件的相似性做了一些假设。我也没有看到任何关于 JMeter 插件开发的好文档,我通常会深入研究 JMeter 代码以了解它们是如何做到的,然后查看 API 解释各种功能的文档。
基本上你需要实现 2 classes
- 一个 class 将 运行 一个计时器。 class 应该扩展 AbstractTestElement and implement Timer interface
- A GUI class 在 JMeter UI 中代表您的计时器。 class 应该扩展 AbstractTimerGui
所以插件的框架应该是这样的:
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, specifically looks like ConstantTimer 是如何完成的简洁明了的示例。您甚至可以直接扩展 ConstantTimer,例如 RandomTimer,而不是实现 Timer 接口。
对于UI部分你也可以关注ConstantTimerGui example, or if your interface is closer to random timer, you could extend AbstractRandomTimerGui
要构建您的插件,我推荐类似于 this example 的 Maven 项目。然后在 运行 时间内将其部署到 lib/ext
文件夹中。如果您的插件使用 JMeter 中不存在的任何库,您还需要将它们部署到 JMeter 的 lib
文件夹中。
我正在使用 JMeter 进行负载测试。我想扩展 Timer 以进行毫秒延迟,然后用它来延迟下一个样本。我目前正在使用 BeanShell 脚本来完成此操作,但我想要一个 Java class 而不是脚本片段。我应该扩展什么计时器 class,有没有我可以看的示例?我还没有在网上找到任何东西:-|
我从来不需要实现定时器,但我确实实现了采样器、Post-处理器和监听器,所以我对定时器与其他组件的相似性做了一些假设。我也没有看到任何关于 JMeter 插件开发的好文档,我通常会深入研究 JMeter 代码以了解它们是如何做到的,然后查看 API 解释各种功能的文档。
基本上你需要实现 2 classes
- 一个 class 将 运行 一个计时器。 class 应该扩展 AbstractTestElement and implement Timer interface
- A GUI class 在 JMeter UI 中代表您的计时器。 class 应该扩展 AbstractTimerGui
所以插件的框架应该是这样的:
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, specifically looks like ConstantTimer 是如何完成的简洁明了的示例。您甚至可以直接扩展 ConstantTimer,例如 RandomTimer,而不是实现 Timer 接口。
对于UI部分你也可以关注ConstantTimerGui example, or if your interface is closer to random timer, you could extend AbstractRandomTimerGui
要构建您的插件,我推荐类似于 this example 的 Maven 项目。然后在 运行 时间内将其部署到 lib/ext
文件夹中。如果您的插件使用 JMeter 中不存在的任何库,您还需要将它们部署到 JMeter 的 lib
文件夹中。