Показаны сообщения с ярлыком Jmeter. Показать все сообщения
Показаны сообщения с ярлыком Jmeter. Показать все сообщения

пятница, 29 августа 2014 г.

Load testing with Amazon

Использование EC2 Amazon для нагрузочного тестирования

Думаю, что тут все просто.Не всегда нам хватает своих машин или своей ширины канала для нагрузочного тестирования.
А быстро нам все это предоставить не всегда возможно,но есть выход что с этим делать.
Можно воспользоваться EC2 Amazon.
Сервис который предоставит нам до 10 микро инстансов,на удобной нам системе и бесплатно(правда только первый год,но нам этого хватит)

В общем то все это сделать можно достаточно просто,но не совсем,постараюсь рассказать.
1.Создаем нужный нам instance машины.
2.Начинаем предварительную настройку машины.

Важно!-Не нужно заходить на машину и настраивать iptables,как делал сначала я.Все это настраиваться в UI Instance в категории Security Groups.

3.Настраиваем доступы следующим образом


4.После этого мы уже почти закончили)
Сетапим Jmeter и запускаем на машинах jmeter-server
Запускаем примерно вот так

jmeter-server -Dserver.rmi.localport=2048 -Djava.rmi.server.hostname=`curl -s http://169.254.169.254/latest/meta-data/public-ipv4`

На всякий случай объясню,что мы тут делаем.
Мы биндим RMI на 2048 порт и запускаем сервер с публичным IP который нам предоставил EC2

5.Нам понадобится ssh туннели,кто не в курсе как это и что это лезем сюда.

ssh -R11099:localhost:11099 ...(user@ip)

ssh -i yourkey.pem -R 11099:localhost:11099 ec2-user@54.213.155.162

6.На основной машине запускаем Jmeter следующим образом

jmeter -Dclient.rmi.localport=11099 -Djava.rmi.server.hostname=localhost 

Наши туннели будут пробрасывать все на порт 11099,все результаты полученные с удаленных машин появятся на нашей основной машине.

Кстати скопировать на инстанс проще всего как то так 

rsync -azvv --progress -e "ssh -i pathtopem.pem" target_folder ec2-user@52.88.37.176:destination_folder

Вот собственно и все.
Всем спасибо.







четверг, 10 января 2013 г.

Кодировка ответа Sampler в Jmeter.

Кодировка ответа Sampler в Jmeter.

Иногда при работе с Jmeter,в ответах на ваши запросы он использует  неправильную кодировку.
Дело в том,что можно поставить кодировку контента(то бишь отправляемых значений),а получаемых нет.
Это можно исправить(правда способ костыльный,хотя рабочий)-используем BeanShell Jmeter.

Небольшая справка о переменных Jmeter в BeanShell для тех кто не в курсе:
  • log - (Logger) - Можно использовать для записи лога в файл.
  • ctx - (JMeterContext) - Доступ к контексту.
  • vars - ( JMeterVariables ) - Позволяет читать/записывать значения в переменные Jmeter: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - class java.util.Properties) -собственно класс свойств из Java  props.get("START.HMS"); props.put("PROP1","1234");
  • prev - (SampleResult) - Доступ к предыдущему ответу.
  • sampleEvent (SampleEvent) доступ к текущему событию.
Собственно,если мы хотим поменять кодировку ответа на определенный запрос,то к запросу добавляем BS PostProcessor
с кодом

prev.setDataEncoding("UTF-8"); 

И все.Был рад помочь.

четверг, 6 декабря 2012 г.

Selenium WebDriver+Jmeter

Selenium WebDriver+Jmeter


В общем то,для тех кто не в курсе как из Jmeter можно запускать тесты Selenium и будет этот пост.

IDE для Selenium у меня Intellij Idea,поэтому буду показывать на ней.

После написания всех наших тестов на Selenium,остается их только прикрутить к Jmeter,а это куда проще чем кажется.
Т.к у Jmeter есть Junit Sampler,который нам в этом поможет,будем делать все через него.Для начала создадим jar наших Selenium тестов.
В Idea для этого делаем:
1. Project Settings, вкладка Artifacts. Нажимаем [+], в выпавшем меню выбираем JAR.

2. В панели слева - содержимое JAR-файла, в панели справа - содержимое проекта. Перетаскиваем справа налево все, что хотим включить в JAR.
3. Указываем имя для файла и директорию назначения над панелями
3. Нажимаем на  кнопку create manifest под левой панелью, создаем manifest.mf. При этом IDE спросит Main class и classpath для указания в манифесте.(если не подхватятся нужные библиотеки для Selenium WebDriver,то в  classpath укажите путь к selenium-server-standalone.jar )
4. Не забудем поставить галочку "Build on make" над панелями
5. Теперь в меню Build есть команда сборки артефакта
6. PROFIT




Стоит отметить,что наш тестовый класс должен расширять класс TestCase или SeleniumTestCase,чтобы позволить Jmeter их "подобрать".И конечно название тест кейсов должно начинаться с "test".

После того,как мы сгенерировали наш jar файл,нам нужно его положить в
(%JMETER_HOME%/lib/junit)

 После,мы запускаем Jmeter,добавляем в Thread Group наш Junit Sampler,
который сразу подхватит наши тесты.
Осталось только запустить тест и наслаждаться)

вторник, 27 ноября 2012 г.

Jmeter SMTP Sampler+Postfix

Jmeter SMTP Sampler+Postfix

Иногда, бывает удобно высылать результаты выполнения тестов Jmeter на  почтовый ящик, как уведомления о корректности их выполнения или для мониторинга правильной работы системы.А когда этот мониторинг нам необходим каждый час,то наша локальная машина нем не подходит,все это же можно развернуть и на виртуалке.

У jmeter есть 2 типа оповещения по email.
Это SMTP Sampler,который выступает в роли обычного сэмплера и его можно использовать в связке с каким-нибудь if controller,или же просто запускать по окончанию теста.Или же Mailer Visualizer, который добавляется как Listener к тесту и по определенным условиям высылает письмо настроенное на успешное или не успешное прохождение теста.

Для того чтобы воспользоваться MailerVisualizer вам необходимо указать в настройках (в поле SMTP host) имя email сервера с открытой (без логина/пароля) ретрансляцией, это может быть или ваш локальный email сервер или email сервер вашей сетки, поддерживающий открытую ретрансляцию только для пользователей внутри сетки.


Если нам понадобился такой локальный smtp,то ничего сложного.
aptitude install postfix
Прежде всего вам надо настроить следующие параметры, отвечающие за домен и имя сервера:
# Имя вашего хоста. По умолчанию берется из системы, но лучше всегда указывать явно
myhostmane = mail.example.com

# Домен вашего сервера. По умолчанию выделяется 
#из имени хоста отбрасыванием первой части, поэтому вручную указывать обычно не нужно
#mydomain = example.com

# Домен, с которого отправляется локальная почта.
 #Автоматически дописывается при необходимости к исходящему адресу
myorigin = $mydomain

# Домены, для которых данный сервер является конечной точкой доставки почты.
# Обычно лучше почтовые домены обслуживать через механизм virtual, поэтому в этом параметре
# чаще всего стоит лишь указать localhost и имя хоста, так, на всякий случай,
# можно вообще оставить значение пустым.
mydestination =
 localhost
 $myhostname

# Мы хотим вообще запретить стандартную локальную доставку,
# поэтому нужно указать пустой список локальных получателей
# Для локальной доставки почты мы будем использовать виртуальные домены
local_recipient_maps =
 
 Теперь все оповещения без проблем достигнут адресата.

пятница, 23 ноября 2012 г.

Распределенная нагрузка Jmeter

Распределенная нагрузка Jmeter.

Бывает,что пользователей которые может предоставить Jmeter нам не хватает.Конечно в таком случае уместнее использовать другой более походящий инструмент вроде Tsung,но лень нам не даст так просто забить на все наши тесты написанные на Jmeter,поэтому попробуем провести большую нагрузку с несколькими машинами.

Ставим на все машины которые хотим для этого использовать Jmeter и запускаем на них JMETER_HOME/bin/jmeter-server

На основной машине мы правим  JMETER_HOME/bin/jmeter.properties
конкретно строчку с “remote_hosts=127.0.0.1”
Например если jmeter-server запущен на 192.168.0.10, 11, 12, 13, и
14, строка будет выглядеть так:
remote_hosts=192.168.0.10,192.168.0.11,192.168.0.12,192.168.0.13,192.168.0.14

Теперь из

Из GUI

Console
jmeter -n -t script.jmx -r  запустит на всех хостах указанных в jmeter.properties
или
jmeter -n -t script.jmx -R server1,server2...  запустит только на указанных хостах

с флагом
-X - Закончит работу с удаленными серверами после теста.