LoginSignup
0
0

More than 5 years have passed since last update.

Apache JMeter の自作サンプラーにパラメータを渡したい

Posted at

Apache JMeter の AbstractJavaSamplerClient を拡張した自作サンプラにパラメータを渡したかったのだけれど、いろいろなやり方があって、どれが有効なのかよくわからないので整理してみる。

TL;DR

  • 同じ種類の Config Element が複数ある場合
    • User Parameters は Test Plan > Thread Group
    • User Defined Variables は Test Plan < Thread Group
  • 異なる種類の Config Element が混在するる場合
    • User Parameters > User Defined Variables > Test Plan

実験

こんな構造にした:

+- Test_Plan
|  +- User_Parameters_0
|  +- User_Defined_Variables_0
|  |
|  +- Thread_Group_1
|  |  +- User_Defined_Variables_1
|  |  +- User_Parameters_1
|  |  +- Java_Request_1
|  |
|  +- Thread_Group_2
|     +- Java_Request_2
|
+ WorkBench

複数の Config Elements 上で同じ名前のパラメータを定義しておき、どの値が採用されるかを調査した。

結果

TP UP0 UDV0 + UP1 UDV1 JR1 + JR2
+ UP0 + UP0
+ UDV1 + UDV0
+ TP + TP

(くたびれた、あとでかく)

参考実装

import (省略)

public class UserParameterReportSampler extends AbstractJavaSamplerClient {

    @Override
    public void setupTest(JavaSampleContext arguments) {
        arguments.getParameter("TheParameter");
        JMeterVariables variables = JMeterContextService.getContext().getVariables();
        variables.get("TheParameter");
    }

    @Override
    public SampleResult runTest(JavaSamplerContext context) {
        SampleResult result = new SampleResult();
        result.sampleStart();
        JMeterVariables variables = JMeterContextService.getContext().getVariables();
        result.setSamplerData(variables.get("TheParameter"), null/*encoding=DEFAULT*/);
        result.setSuccessful(true);
        result.sampleEnd();
        return result;
    }
}

remote_host に異なるパラメータを渡したい

各々のJMeter Server が同期して動作するだけ。単純に2倍とかの負荷がかかるだけ。サーバごとに異なるパラメータを渡してくれるなんていう気の利いたことはしてくれない。

サーバごとに異なる設定を仕込みたい場合

JMeter-Serverの起動パラメータで -JserverID=001 のように指定すると、その文字列を User Parameters から ${__P(serverID)} のように参照できる。

サーバごとサンプリングごとに異なる設定を仕込みたい場合

CSV Import を使う。各サーバを起動したディレクトリにある CSVファイルを読むので、各サーバに異なる内容のファイルを置いておく。

まとめ。

よくわからん……。とりあえず User Defined Variables を使っておこう。

0
0
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
0
0