2017-02-20 5 views
0

メッセージを生成するためにJmeter java samplerがあります。jmeterパラメータはスレッドごとにファイルを1回だけ参照する必要があります

Testplan 
- Threadgroup 
    - Javasampler Publish message " $var3 population was $var1 in $var2 $_getthreadnumder" 
    - Userdefined variables 
      -var1 = {_stringfromfile(a.txt,,,) //file has values like 10, 20 till 5000 
      -var2 = {_stringfromfile(b.txt,,,) //file has values like 2000, 2001,... till 2017 
     - Userdefined variables 
      -var3 = {_stringfromfile(c.txt,,,) 

このc.txtには約500の名前があります。彼らは最後の反復を実行するまで、各スレッドがそれに一度だけ&スティックをこのファイルを参照して作成する方法

London 
Madrid 
Newyork 
Paris 
... 
.. 

。例えば

、 私は3スレッドに& 50のループ を与える場合、それはのように振る舞う必要があります。それは第50回反復して実行するまで

最初のスレッドがロンドン&をとり、値は変更しないでください。 2番目のスレッドがマドリードを受け取ります。& 50回目の実行まで、値は変更しないでください。 第3スレッドはNewyorkを&で実行し、50回目の反復を実行するまで値は変更しません。

出力:私は一度試してみました

London population was 10 in 2000 1 
Madrid population was 10 in 2000 2 
Newyork population was 10 in 2000 3 
London population was 20 in 2001 1 
Madrid population was 20 in 2001 2 
Newyork population was 20 in 2001 3 
--- 
--- 

so on 

のみ&共有モード(すべて、現在のスレッド、現在のスレッドグループ)

どちらか彼らのすべてのスレッドからロンドンや、それらすべての共有のすべての値をとりますトップ。

私はこのvar3ファイルに一度だけ、&までそれに固執してほしいです。

すべてのアイデア?

答えて

1

テキストファイルから対応する値で、各スレッドで$ {メッセージ}値を設定するために、プリプロセッサのBeanShell使用する

import java.io.BufferedReader; 
import java.io.InputStreamReader; 

FileInputStream linesStream = new FileInputStream(pathToFile); 
BufferedReader br = new BufferedReader(new InputStreamReader(linesStream)); 
int threadNum=ctx.getThreadNum(); 
//skipping lines that belong to other threads 
for (int i = 1; i <= threadNum; ++i) { 
    br.readLine(); 
} 
String line = br.readLine(); 
br.close(); 
linesStream.close(); 
vars.put("message",line); 

+0

それをそれを使用するサンプラーのコール$ {メッセージ}で私のために働く。 – user7264473

関連する問題