java - 扩展 JMeter 定时器以可变地延迟定时器

标签 java jmeter load-testing beanshell

我正在使用 JMeter 进行负载测试。我想扩展 Timer 以进行毫秒延迟,然后用它来延迟下一个样本。我目前正在使用 BeanShell Script 来完成此操作,但我想为其创建一个 Java 类而不是脚本片段。我应该扩展什么 Timer 类,有没有我可以看的例子?我还没有在网上找到任何东西:-|

最佳答案

我从来没有实现过定时器,但我确实实现了采样器、后处理器和监听器,所以我对定时器与其他组件的相似性做了一些假设。此外,我从来没有看到任何关于 JMeter 插件开发的好文档,我通常会深入研究 JMeter 代码以了解它们是如何实现的,然后查看解释各种功能的 API 文档。

基本上你需要实现2个类

  1. 将运行计时器的类。该类应该扩展 AbstractTestElement并实现Timer interface
  2. 一个 GUI 类,用于在 JMeter UI 中表示您的计时器。该类应该扩展 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 ,具体看起来像ConstantTimer是它如何完成的一个很好而简洁的例子。您甚至可以直接扩展 ConstantTimer,例如 RandomTimer,而不是实现 Timer 接口(interface)。

UI部分也可以关注ConstantTimerGui例如,或者如果您的界面更接近随机计时器,您可以扩展 AbstractRandomTimerGui

要构建您的插件,我推荐类似于 this example 的 Maven 项目.然后在运行时将其部署到 lib/ext 文件夹中。如果您的插件使用 JMeter 中不存在的任何库,您还需要将它们部署到 JMeter 的 lib 文件夹中。

关于java - 扩展 JMeter 定时器以可变地延迟定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36157315/

相关文章:

css - jmeter 在提供正确的 css 选择器后出错

json - 如何在 JMeter HTTP 请求中更改 Post Body 的内容

jmeter - 如何使用jmeter加载测试视频流

java - 如何让Eclipse获得在线帮助?

java - JWrapper 应用程序在加载时在所有版本的 OSX 上崩溃

java - JNDI 连接适用于 Tomcat,但不适用于 Websphere

java - hyperjaxb 忽略 hjid 的内联自定义问题

mysql - Jmeter 中的记录 Controller 未在本地主机 Web 服务器中记录

java - 通过程序运行 Jmeter 测试后,结果不会与列名称一起存储在 CSV 文件中(Java 代码)

scala - 如何将响应中的值写入 Gatling 中的文件?