当需要突然创建Apache JMeter独特采样器插件进行负载测试时,可以阅读以下文章

目标读者

    • Apache JMeterを使った負荷試験の計画を練っている最中、既存のサンプラだけでは不十分な状況に陥ったので、独自のサンプラをサッと書きたい。

 

    Javaはなんとなく読み書きできるけど詳しくない。Javaのビルド設定の仕方が分からない。

关于这个句子

以下是解释如何用Java快速编写自定义采样器的步骤,此文主要面向不熟悉Java的人,并重点解释构建配置等内容。

我将描述JMeter的采样器中用于JavaSampler的插件。

操作步骤

1. 安装InteliJ IDEA。

对于平时不写Java的人,建议安装Java集成开发环境IntelliJ IDEA。有免费版和付费版可供选择。(笔者已购买JetBrains的全套包,但我认为免费版已经足够了。)

以下内容基于 IntelliJ IDEA 2023.2.2 版本。

2. 创建项目

当你启动InteliJ时,开始创建新项目。

    • JDKは(2023年9月21日現在)19以下にします。JDKのインストールが無くてもJDKのプルダウンメニューからインストールできます。

 

    • BuildSystemは、ここではGradleを選び、Gradle DSLはGroovyにします。

 

    Advanced SettingsのGroupIdは任意の値を指定します。ちょうどドメイン名を逆転したような書き方をします。たとえばcom.<会社名の英語>など。
Screenshot 2023-09-21 at 2.08.10.png

创建项目。

3. 设定依存关系

image.png

打开build.gradle文件,在dependencies中添加Apache JMeter库的代码如下所示。在此,我们指定了版本5.6.2,你可以在MavenCentral上确认可用的版本。

dependencies {
    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
    // ↓追記
    implementation group: 'org.apache.jmeter', name: 'ApacheJMeter_java', version: '5.6.2'
}
image.png

4. 采样器的描述

右击 ./src/main/java,选择Package并创建一个包。例如,在项目创建时指定的 GroupId 后面可以指定任意名称,如 com..samplers。

在创建的包下面创建如下所示的Java类。样例类需要实现JavaSamplerClient接口。

package com.hiroyky.samplers;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

public class OriginalSampler implements JavaSamplerClient {

    static final String URL = "Enter request URL";
    static final String  USERNAME = "Enter user name";
    static final String PASSWORD = "Enter password";

    @Override
    public void setupTest(JavaSamplerContext context) {

    }

    @Override
    public SampleResult runTest(JavaSamplerContext context) {
        /* サンプラの処理本体を書きます。 */

        // 設定項目の値取得
        String url = context.getParameter(URL);
        String userName = context.getParameter(USERNAME);
        String password = context.getParameter(PASSWORD);

        // 結果に出力するメッセージを作成します。
        StringBuilder responseMessage = new StringBuilder();
        responseMessage.append("URL: ").append(url).append("\n");
        responseMessage.append("User name: ").append(userName).append("\n");

        SampleResult result = new SampleResult();
        try {
            // 時間計測開始
            result.sampleStart();

            /*
            * TODO: 行いたい処理を書いてください。
            * */

            // 時間計測終了
            result.sampleEnd();

            // 結果に成功を登録
            result.setResponseCodeOK();
            result.setSuccessful(true);
            result.setResponseMessage(responseMessage.toString());
        } catch (Exception e) {
            // 時間計測終了
            result.sampleEnd();

            // 失敗を登録
            result.setResponseCode("500");
            result.setSuccessful(false);
            responseMessage.append("error: ").append(e.getMessage()).append("\n");
            result.setResponseMessage(responseMessage.toString());
        }
        return result;
    }

    @Override
    public void teardownTest(JavaSamplerContext context) {
    }

    @Override
    public Arguments getDefaultParameters() {
        // 設定項目を定義します。第二引数はデフォルト値の文字列
        // ここの設定項目がGUI上に表示されます。
        Arguments arguments = new Arguments();
        arguments.addArgument(URL, "http://localhost/");
        arguments.addArgument(USERNAME, "taro");
        arguments.addArgument(PASSWORD, "password");
        return arguments;
    }
}

5. 建筑

点击屏幕右侧的Gradle并进行构建操作。

image.png

成功构建后,将在build/libs/目录下生成Jar文件。这就是所需的构建成果物。

image.png

6. 安装

将通过5步骤生成的jar文件复制到Apache JMeter的./lib/ext/目录中。完成复制后,启动JMeter。

7. 尝试使用

根据Sampler创建Java请求。在Java请求中,选择应该包含已创建的自定义采样器。

image.png

以上是所有内容。

问题或困扰

当依存关系不足时

如果您的独立采样器依赖于另一个库,那么您也需要将该库放置在JMeter的./lib/ext或./lib/目录下。例如,如果出现NoClassDefFoundError错误,则明显存在依赖关系的问题。如果您想统一获取它们,只需要在build.gradle中添加以下描述。

定义一个任务,可以一次性下载依存关系并保存到build/libs/。

task copyDependencies(type: Copy) {
    from configurations.runtimeClasspath
    into 'build/libs'
}
image.png

然后,右侧的任务菜单中将出现“其他”->“复制依赖项”的选项,点击它。依赖项将会下载并保存在build/libs目录下,然后将所有的Jar文件放入JMeter的./lib/ext目录下,暂时就可以了。

结束

这是使用Apache JMeter创建和构建自定义采样器的方法。

广告
将在 10 秒后关闭
bannerAds