LoginSignup
1
3

More than 5 years have passed since last update.

JMeter で独自関数を定義する

Last updated at Posted at 2018-02-19

概要

JMeter で独自関数を定義する方法を記載します。

独自関数の定義方法は JMeter の公式ドキュメントには記載がないです。

WEB検索すれば英語での解説記事は簡単に見つかりますが、日本語での解説記事は見つからなかったので、自分が書いてみることにしました。

英文に抵抗がない人は以下を参照した方がいいです。

手順

大まかな流れは以下です。

  1. 関数のソースコードを作成する
  2. コンパイルして jar を生成し、JMeter に追加する
  3. シナリオから参照する

ソースコード

以下のサンプルコードを基にして、カスタマイズしてください。
※package 名は functions を含む必要があります。

SampleFunc.java
package jp.proj.jmeter.functions.sample;

import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

/**
 * JMeter 関数の定義
 * 機能:引数を二つ受け取り、引数を連結した文字列を返す
 */
public class SampleFunc extends AbstractFunction {

    /**
     * 引数の説明
     */
    private static final List<String> desc = new ArrayList<String>();
    /**
     * 関数名
     * prefix として __ を付けること。
     */
    private static final String MyFunctionName = "__SampleFunc";

    static {
        desc.add("引数1");
        desc.add("引数2");
    }

    /**
     * 引数を保持しておくための変数
     */
    private List<String> args;

    public SampleFunc() {
        super();
    }

    @Override
    public List <String> getArgumentDesc() {
        return desc;
    }

    /**
     * 関数本体
     * @param arg0
     * @param arg1
     * @return
     * @throws InvalidVariableException
     */
    @Override
    public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException {
        return args.get(0) + args.get(1);
    }

    @Override
    public String getReferenceKey() {
        return MyFunctionName;
    }

    @Override
    public void setParameters(Collection< CompoundVariable > parameters) throws InvalidVariableException {
        args = parameters.stream().map((param) -> param.execute().trim()).collect(Collectors.toList());
    }
}

コンパイル

org.apache.jmeter.ApacheJMeter_core に依存しています。

JMeter に追加

生成した jar ファイルを <JMETER_HOME>/lib/ext に追加して、JMeter をリスタートします。

シナリオから参照

${__SampleFunc(hoge1, hoge2)} で参照可能です。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3