Я изменяю пару значений запроса POST, используя препроцессор JSR223 со следующим кодом:
import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
def length = 10 // the size of the random string
def pool = ['a'..'z', 'A'..'Z', 0..9, '-'].flatten() // generating pool
Random random = new Random(System.currentTimeMillis())
def randomChars = (0..9).collect { pool[random.nextInt(pool.size())] }
def randomString = randomChars.join()
Arguments arguments = sampler.getArguments();
for (int i=0;i<arguments.getArgumentCount();i++)
{
Argument argument = arguments.getArgument(i);
String name = argument.getName();
String value = argument.getValue();
if(name =="mainForm:firstName"){
sampler.getArguments().removeArgument("mainForm:firstName");
sampler.addArgument("mainForm:firstName",randomString);
log.info("Name is " + randomString);
}
if(name =="mainForm:covers:0:sumInsured"){
sampler.getArguments().removeArgument("mainForm:covers:0:sumInsured");
value = value.replace("\$","");
value = value.replace(",", "");
def val = Double.parseDouble(value);
val++;
sampler.addArgument("mainForm:covers:0:sumInsured","\$"+String.valueOf(val));
}
}
Я вижу выходные данные журнала для первой итерации, но нет ничего для последующих, предлагающих аргументыпо какой-то причине больше не найдены.
У меня есть этот PreProcessor, присоединенный к HTTP-запросу, который он модифицирует.
Есть идеи, почему он запускается только один раз?
Я заметил висточник для Аргументов, который он упоминает, - RunVersion () - что это делает?
public void addArgument(Argument arg) {
TestElementProperty newArg = new TestElementProperty(arg.getName(), arg);
if (isRunningVersion()) {
this.setTemporary(newArg);
}
getArguments().addItem(newArg);
}