Перейти к содержимому

Фотография

Передача данных в xml файл, при тестировании WEB Service


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 30

#1 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 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)

В чём может быть ошибка ?
  • 0

#2 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 10 ноября 2011 - 10:02

Пробовали функцию __FileToString ?
  • 0

#3 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 10 ноября 2011 - 10:54

Пробовали функцию __FileToString ?

Нет, не пробовал но сейчас обязательно попробую)))
  • 0

#4 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 10 ноября 2011 - 11:37

AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .
  • 0

#5 fesd

fesd

    Опытный участник

  • Members
  • PipPipPipPip
  • 262 сообщений

Отправлено 10 ноября 2011 - 11:40

AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .


попробуйте указать полный путь до файла.
  • 0

#6 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 10 ноября 2011 - 11:58


AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .


попробуйте указать полный путь до файла.

Пробовал, пишет тоже самое.
  • 0

#7 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 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 файле?
  • 0

#8 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 14 ноября 2011 - 04:58




AxelM а вы уверены что эту функцию можно использовать для xml файлов? Просто я указываю в качестве пути к файлу его имя(файл лежит вместе с проектом) ${__FileToString(user_lister.xml,,)}, у меня вылетает ошибка, а в лог пишется:Could not read file: user_lister.xml File 'user_lister.xml' does not exist .


попробуйте указать полный путь до файла.

Пробовал, пишет тоже самое.


А почему не хранить данные в csv файле?

Речь не о хранении данных, а о передачи данных в xml файлик который используется при запросе к Web Service
  • 0

#9 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 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, получите ошибку.
  • 0

#10 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 14 ноября 2011 - 07:25


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, получите ошибку.

Попробовал сделать как вы показали, ничего не получилось. Я писал так ${__FileToString(C://Users//VLevikov//Desktop//file1.jmx,,var)} и так ${__FileToString(C://Users//VLevikov//Desktop//file1.xml,,var)}. Пробовал её использовать в User Defined Variables , чтобы просто присвоить значение переменной "var". Пробовал использовать сразу в запросе(я знаю что вы сказали так не делать, но решил попробовать), но не работает ни там, ни там.
  • 0

#11 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 14 ноября 2011 - 07:52

Дело не в формате файла. Фантастики быть не может, у меня работает. Может быть, если Вы сможете выложить кусочек вашего сценария (без самого SOAP запроса), то мы вместе попробуем найти ошибку.
На всякий случай: java 1.6 + jmeter 2.5.1 + windows xp sp3

Как альтернатива, вы можете xml запихать в переменную, которую объявите в BeanShell PreProcessor. Минусом тут является неудобство правки такой переменной и генерация её извне, плюсом -- это быстрее, чем операция чтения файла.
  • 0

#12 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 14 ноября 2011 - 08:25

Добился того что он находи файл. :dirol: Но возникает теперь ошибка:Error occurred compiling the tree: org.apache.jorphan.util.JMeterStopThreadException: End of sequence .
Что это за страшный зверь ? и за что он мне)))
  • 0

#13 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 14 ноября 2011 - 12:03

Ничего страшного в нем нет. Давайте свой сценарий или расскажите подробнее, где происходит ошибка.
Еще одна альтернатива: я делал на BeanShell чтение рандомной строки из файла. Там через FileInputStream и BufferedReader. Могу скинуть код.
  • 0

#14 KRULIT

KRULIT

    Новый участник

  • Members
  • Pip
  • 47 сообщений
  • ФИО:Ковальчук Роман Львович
  • Город:Киев

Отправлено 15 декабря 2011 - 15:04

Ничего страшного в нем нет. Давайте свой сценарий или расскажите подробнее, где происходит ошибка.
Еще одна альтернатива: я делал на BeanShell чтение рандомной строки из файла. Там через FileInputStream и BufferedReader. Могу скинуть код.


AxelM, запостите код пожалуйста - ломаю голову не могу прочитать строку по номеру иль случайным образом из файла в jmeter
  • 0

#15 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 16 декабря 2011 - 06:12


Ничего страшного в нем нет. Давайте свой сценарий или расскажите подробнее, где происходит ошибка.
Еще одна альтернатива: я делал на BeanShell чтение рандомной строки из файла. Там через FileInputStream и BufferedReader. Могу скинуть код.


AxelM, запостите код пожалуйста - ломаю голову не могу прочитать строку по номеру иль случайным образом из файла в jmeter


Например, необходимо произвольным образом выбирать логины из файла. Создать файл c://WINDOWS//Temp//TMP//1.csv, где перечислены логины

login_tt1
login_rr2
login_ww3
login_uu4

Определить переменную NumberOfString = количество строк в файле (считается от 1)
Создать 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 будет содержаться рандомная строка
  • 1

#16 fesd

fesd

    Опытный участник

  • Members
  • PipPipPipPip
  • 262 сообщений

Отправлено 16 декабря 2011 - 06:53

Что-то мне подсказывает, что на высоких нагрузках это может сильно замедлить работу жметра. В таком случае можно зараннее подготовить данные в файле нужным образом.
  • 0

#17 KRULIT

KRULIT

    Новый участник

  • Members
  • Pip
  • 47 сообщений
  • ФИО:Ковальчук Роман Львович
  • Город:Киев

Отправлено 16 декабря 2011 - 11:12

В переменной GettingValue будет содержаться рандомная строка


Спасибо, а в какой среде лучше всего производить отладку подобных скриптов ?
  • 0

#18 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 16 декабря 2011 - 11:43

Что-то мне подсказывает, что на высоких нагрузках это может сильно замедлить работу жметра


Скорее всего не высокие нагрузки замедлят работу, а большой объем файла

а в какой среде лучше всего производить отладку подобных скриптов ?


Пока я писал не очень большие скрипты, поэтому отладку делал прямо в консоле Jmeter через print
  • 0

#19 KRULIT

KRULIT

    Новый участник

  • Members
  • Pip
  • 47 сообщений
  • ФИО:Ковальчук Роман Львович
  • Город:Киев

Отправлено 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% запросов невалидны

Почему значения разные ?
  • 0

#20 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 19 декабря 2011 - 18:46

Не понимаю почему после того как получили значение GettingValue и делаем в этой же ветке три http reauestfa, то значение получаются различны

PreProcessors вызываются перед _каждым_ вызовом Request

А если делать один htpp request в цыкле, то примерно среди 33 запросов - 9-и не передаются значения

Если уменьшить кол-во строк файла с параметрами GettingValue, то проблема останется?
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных