2

パフォーマンステストの目的で最大50,000の疑似並行エンティティをシミュレートする必要があると顧客から言われたときから、私は月曜日からこれをレンガの壁にぶつけてきました。これがセットアップです。次のようなJSONデータを含むJSONオブジェクトでいっぱいのテキストファイルがあります。

{"customerId"=>"900", "assetId"=>"NN_18_144", "employee"=>"", "visible"=>false,
 "GenerationDate"=>"2012-09-21T09:41:39Z", "index"=>52, "Category"=>2...}

これは、1行に対する1つのオブジェクトです。JMeterのJMSパブリッシャーを使用して、行を順番に読み取ります。

${_StringFromFile(${PATH_TO_DATA_FILES}scenario_9.json)}

それぞれから異なるシナリオが含まれています。

私がする必要があるのは、ファイルを読み取り、assetIdの値を、50,000個の非順次の事前生成された文字列のリストからランダムに選択された値に置き換えることです(assetIdごとに個別のファイルを作成することはできません。ロードインジェクターに50,000個のファイルを散らかし、それぞれについてJMeter内でスレッドグループを構成します。プログラム的には、置換を実行するのは簡単なことですが、JMeterでその場で実行するのはそれほど簡単ではありません。

通常、私はこれを興味深い技術的課題として扱い、数日かけて解決しますが、週末しかありません。とにかくオフィスで一晩寝ることになると思います。

誰かがこれを手伝ってくれませんか?

ありがとう。

4

2 に答える 2

1

アセットを読み取るには、CSVDataSetConfigを使用します。assetIdが変数名になると思います。

式を変更します。

   ${_StringFromFile(${PATH_TO_DATA_FILES}scenario_9.json, lineToSubstitute)}

置換を行うには、BeanshellサンプラーまたはJSR223_Sampler J(groovyを使用)を追加し、置換をコーディングします。

   String assetId = vars.get("assetId");
   String lineToSubstitute = vars.get("lineToSubstitute");
   String lineSubstituted = ....;
   vars.put("lineSubstituted", lineSubstituted);
于 2012-10-13T19:51:05.207 に答える
1

JSON本体が常に同じである場合、またはJSON本体にほとんど変更がない場合は、次のことを行う必要があります。

  • RAWPOST本文でHTTPサンプラーを使用する

  • アセットIDの変数を含むJSON本文をその中に入れます

  • アセットIDをCSVデータセット構成に入れる

$ {_ StringFromFile}はコストがかかるため、使用しないでください。

スクリプトが必要な場合は、JSR223 Post Processor with Script in external file + Caching(2.8以降で使用可能)を使用して、スクリプトをコンパイルします。

于 2012-12-22T16:25:30.823 に答える