У меня есть скрипт JMeter, который отправляет 3 типа XML-запросов на веб-сервис.
Например, для 2-го типа - SOAPMethod 'getHeadlines' я отправляю такой XML-запрос:
<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header/>
<S:Body>
<ns2:getHeadlines xmlns:ns2="http://******.com/">
<startDate>${startDate}</startDate>
<endDate>${endDate}</endDate>
<contributor>${randomNameContributor2}</contributor>
<topic>${randomNameTopic2}</topic>
<maxCount>${maxCount}</maxCount>
</ns2:getHeadlines>
</S:Body>
</S:Envelope>
и я использую
Препроцессор BeanShell 2.1 - для получения случайного {randomNameContributor2}:
String[] argsCrnt21=vars.getObject("arrayOfContributors"); //initialization of array
int randomElement=(int)(Math.random()*argsCrnt21.length ); //random element number
vars.put("randomNameContributor2", argsCrnt21[randomElement] ); //initialization of random variable for 'randomNameContributor2'
и по аналогии я использую
Препроцессор BeanShell 2.2 - для получения случайного {randomNameTopic2}:
String[] argsCrnt22=vars.getObject("arrayOfTopics"); //initialization of array
int randomElement=(int)(Math.random()*argsCrnt22.length ); //random element number
vars.put("randomNameTopic2", argsCrnt22[randomElement] ); //initialization of random variable for 'randomNameTopic2'
Константа ${maxCount}` предопределена в разделе пользовательских переменных JMeter.
Для получения переменных как ${RandomStartDate}
и ${RandomEndDate}
(мне нужно получить случайный интервал от [01-06-2011; 31-07-2012], который имеет фиксированную предопределенную продолжительность ${Interval0}) я использую препроцессор BSF со следующим java-скриптом:
var startDate = new Date();
startDate.setDate(1);
startDate.setMonth(06);
startDate.setYear(2011);
var startDateTime = startDate.getTime();
var endDate = new Date();
endDate.setDate(31);
endDate.setMonth(07);
endDate.setYear(2012);
var endDateTime = endDate.getTime();
var randomSDate = new Date();
var randomSDateTime = startDateTime+Math.random()*((endDateTime -${Interval0}) -startDateTime );
randomSDate.setTime(randomSDateTime);
var randomEDate = new Date();
var randomEDateTime = (randomSDateTime + ${Interval0}); // adds interval to start date
randomEDate.setTime(randomEDateTime); // transforms to string format
var rndSDate = randomSDate.getDate();
var rndSMonth = randomSDate.getMonth()+1 ;
var rndSYear = randomSDate.getFullYear();
var rndEDate = randomEDate.getDate(); // disassembles the end date to year-month-day format
var rndEMonth = randomEDate.getMonth()+1 ;
var rndEYear = randomEDate.getFullYear();
if (rndSDate.toString().length == 1) // add 0 to the left of month and day if they have only 1 symbol
rndSDate = "0" + rndSDate;
if (rndSMonth.toString().length == 1)
rndSMonth = "0" + rndSMonth;
if (rndEDate.toString().length == 1) // add 0 to the left of month and day if they have only 1 symbol
rndEDate = "0" + rndEDate;
if (rndEMonth.toString().length == 1)
rndEMonth = "0" + rndEMonth;
var RandomStartDate = rndSYear + "-" + rndSMonth + "-" + rndSDate;
vars.put ("RandomStartDate", RandomStartDate);
var RandomEndDate = rndEYear + "-" + rndEMonth + "-" + rndEDate;
vars.put ("RandomEndDate", RandomEndDate);
Теперь мне нужно преобразовать этот скрипт JMeter в скрипт LR.
Не могли бы вы посоветовать мне, как мне начать реализацию этой идеи? Первое, что мне нужно знать, это - какой должна быть структура скрипта LR для моего случая?