
Передача данных в xml файл, при тестировании WEB Service
#1
Отправлено 10 ноября 2011 - 08:14
Столкнулся с такой вот проблемкой. Есть веб сервис который нужно нагрузить. Для этого использую WebService(SOAP) Request. Проблемка в следующем:Если я использую XML-RPC Data, значения параметров берутся из файла либо(если число) подставляются рандомно, то запрос отпрвляется и получаю хороший результат.
Попробовал вынести этот XML- код в отдельный файлик и загрузить его, во всех параметрах вместо значения написал param1,param2,param3,param4 и т.д. с увеличением на 1(всего 8), для своего запроса (WebService(SOAP) Request)пробовал использовать BeanShell PreProcessor где инициализировал нужные параметры.
После запуска такого запроса, если смотреть через View Results Tree, вкладка Request пустая. Хотя все переменные инициализировались нормально.(смотрел через Debug Sampler)
В чём может быть ошибка ?
#3
Отправлено 10 ноября 2011 - 10:54
Нет, не пробовал но сейчас обязательно попробую)))Пробовали функцию __FileToString ?
#4
Отправлено 10 ноября 2011 - 11:37
#5
Отправлено 10 ноября 2011 - 11:40
AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .
попробуйте указать полный путь до файла.
#6
Отправлено 10 ноября 2011 - 11:58
Пробовал, пишет тоже самое.
AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .
попробуйте указать полный путь до файла.
#7
Отправлено 10 ноября 2011 - 14:06
Пробовал, пишет тоже самое.
AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .
попробуйте указать полный путь до файла.
А почему не хранить данные в csv файле?
#8
Отправлено 14 ноября 2011 - 04:58
Речь не о хранении данных, а о передачи данных в xml файлик который используется при запросе к Web Service
Пробовал, пишет тоже самое.
AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .
попробуйте указать полный путь до файла.
А почему не хранить данные в csv файле?
#9
Отправлено 14 ноября 2011 - 06:07
AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .
Более-менее уверен.
Проверял так:
* взял jp@gc - Dummy Sampler
* вставил у него в Responce Data ${__FileToString(c://WINDOWS//Temp//TMP//1.jmx,,var)};
где 1.jmx -- сам файл сценария (как известно, это xml)
* поставил Debug Sampler
* посмотрел View Results Tree
* и переменная var, и Responce Data одинаковы и содержат в себе xml-текст.
var=<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="2.1">
<hashTree>
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
<boolProp name="ResultCollector.error_logging">false</boolProp>
<objProp>
...
Замечание: не стоит вставлять просто ${__FileToString(c://WINDOWS//Temp//TMP//1.jmx,,var)} в , например, BeanShell Sampler, получите ошибку.
#10
Отправлено 14 ноября 2011 - 07:25
Попробовал сделать как вы показали, ничего не получилось. Я писал так ${__FileToString(C://Users//VLevikov//Desktop//file1.jmx,,var)} и так ${__FileToString(C://Users//VLevikov//Desktop//file1.xml,,var)}. Пробовал её использовать в User Defined Variables , чтобы просто присвоить значение переменной "var". Пробовал использовать сразу в запросе(я знаю что вы сказали так не делать, но решил попробовать), но не работает ни там, ни там.
AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .
Более-менее уверен.
Проверял так:
* взял jp@gc - Dummy Sampler
* вставил у него в Responce Data ${__FileToString(c://WINDOWS//Temp//TMP//1.jmx,,var)};
где 1.jmx -- сам файл сценария (как известно, это xml)
* поставил Debug Sampler
* посмотрел View Results Tree
* и переменная var, и Responce Data одинаковы и содержат в себе xml-текст.var=<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="2.1">
<hashTree>
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
<boolProp name="ResultCollector.error_logging">false</boolProp>
<objProp>
...
Замечание: не стоит вставлять просто ${__FileToString(c://WINDOWS//Temp//TMP//1.jmx,,var)} в , например, BeanShell Sampler, получите ошибку.
#11
Отправлено 14 ноября 2011 - 07:52
На всякий случай: java 1.6 + jmeter 2.5.1 + windows xp sp3
Как альтернатива, вы можете xml запихать в переменную, которую объявите в BeanShell PreProcessor. Минусом тут является неудобство правки такой переменной и генерация её извне, плюсом -- это быстрее, чем операция чтения файла.
#12
Отправлено 14 ноября 2011 - 08:25

Что это за страшный зверь ? и за что он мне)))
#13
Отправлено 14 ноября 2011 - 12:03
Еще одна альтернатива: я делал на BeanShell чтение рандомной строки из файла. Там через FileInputStream и BufferedReader. Могу скинуть код.
#14
Отправлено 15 декабря 2011 - 15:04
Ничего страшного в нем нет. Давайте свой сценарий или расскажите подробнее, где происходит ошибка.
Еще одна альтернатива: я делал на BeanShell чтение рандомной строки из файла. Там через FileInputStream и BufferedReader. Могу скинуть код.
AxelM, запостите код пожалуйста - ломаю голову не могу прочитать строку по номеру иль случайным образом из файла в jmeter
#15
Отправлено 16 декабря 2011 - 06:12
Ничего страшного в нем нет. Давайте свой сценарий или расскажите подробнее, где происходит ошибка.
Еще одна альтернатива: я делал на BeanShell чтение рандомной строки из файла. Там через FileInputStream и BufferedReader. Могу скинуть код.
AxelM, запостите код пожалуйста - ломаю голову не могу прочитать строку по номеру иль случайным образом из файла в jmeter
Например, необходимо произвольным образом выбирать логины из файла. Создать файл c://WINDOWS//Temp//TMP//1.csv, где перечислены логины
login_tt1
login_rr2
login_ww3
login_uu4
Создать BeanShell PreProcessor следующего содержания
print("--ReadFile--"); try{ //Open the file FileInputStream fstream = new FileInputStream("c://WINDOWS//Temp//TMP//1.csv"); //Get the object of DataInputStream DataInputStream instream = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(instream)); String Line; int i=1; int Number = ${__Random(0,${NumberOfString})}; //Read File Line By Line while ((Line = br.readLine()) != null){ if (i == (Number)){ //Set variable value vars.put("GettingValue", Line); } i++; } //Close the input stream fstream.close(); } catch (Exception e){ print("IO error: " + e.getMessage()); }
В переменной GettingValue будет содержаться рандомная строка
#16
Отправлено 16 декабря 2011 - 06:53
#17
Отправлено 16 декабря 2011 - 11:12
В переменной GettingValue будет содержаться рандомная строка
Спасибо, а в какой среде лучше всего производить отладку подобных скриптов ?
#18
Отправлено 16 декабря 2011 - 11:43
Что-то мне подсказывает, что на высоких нагрузках это может сильно замедлить работу жметра
Скорее всего не высокие нагрузки замедлят работу, а большой объем файла
а в какой среде лучше всего производить отладку подобных скриптов ?
Пока я писал не очень большие скрипты, поэтому отладку делал прямо в консоле Jmeter через print
#19
Отправлено 16 декабря 2011 - 12:53
В переменной GettingValue будет содержаться рандомная строка
Не понимаю почему после того как получили значение GettingValue и делаем в этой же ветке три http reauestfa, то значение получаются различны
Выполняем BeanShellPre или Pro Processor получаем GettingValue и подставляем его в 3 последжовательных htpp request
htpp request1 - "запрос"
htpp request2 - "банкнота"
htpp request3 "валюта"
А если делать один htpp request в цыкле, то примерно среди 33 запросов - 9-и не передаются значения почему-то, такое впечатление что beanshell живет отдельной жизнью от http requestов и в итоге 30% запросов невалидны
Почему значения разные ?
#20
Отправлено 19 декабря 2011 - 18:46
PreProcessors вызываются перед _каждым_ вызовом RequestНе понимаю почему после того как получили значение GettingValue и делаем в этой же ветке три http reauestfa, то значение получаются различны
Если уменьшить кол-во строк файла с параметрами GettingValue, то проблема останется?А если делать один htpp request в цыкле, то примерно среди 33 запросов - 9-и не передаются значения
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных