2017-02-20 11 views
0

У меня есть Jmeter java sampler для генерации сообщений.Параметр jmeter должен ссылаться на файл только один раз на поток

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-ю итерацию, значение не должно меняться. Третья нить принимает 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

It работает на меня. – user7264473