Wednesday, December 14, 2011

Как подружить Jmeter и Jenkins?

У нас на проекте существует какая-никакая Continuous Integration (CI) с выделенным серваком и прикрученным к нему Дженкинсом (вариант Hudson - оба являются CI-серверами).

Постановка задачи: для начала прикрутить два несложных джиметровских скрипта с тем, чтобы можно было смотреть что-то типа aggregate report родного Джиметра. Имя хоста передаётся параметром.

Шаг 1. Установить на Jenkins Performance Plugin путём стандартных средств Дженкинса: Jenkins -> Manage Jenkins -> Manage Plugins -> Available. Найти нужный и нажать [Install].

Шаг 2. Заливаем на сервер джиметр. У меня на сервере живёт бубунта, и её стандартный package manager ставит джиметр версии 2.3. Потому я сверху установленного 2.3 стянула последнюю версию и распаковала её в другом месте _path_. Потом мы на это место будем ссылаться.

Шаг 3. Делаем job для каждого скрипта и запускаем его, дабы создались директории в /var/lib/hudson/jobs

Шаг4. Если мы задаём имя хоста в User Defined Variables, то там пишем следующее:
HOST (имя переменной) ${__P(server,_defaultHost_)} (значение переменной)
Где _defaultHost_ - имя хоста по умолчанию, а server - имя параметра, передаваемого в командной строке.
Такой скрипт можно гонять как из ГУИ, так и из командной строки.

Шаг 5. Для каждого job'a копируем в папку /var/lib/hudson/jobs/_JobName_/workspace/ необходимый параметризованный джиметровский скрипт и csv файлы. Допустим, у нас есть скрипт testjm.jmx.

Шаг 6. Настраиваем job'ы. (Configure)
Для этого открываем в Дженкинсе нужный Job (для каждого из двух скриптов был создан отдельный) и делаем следующее:

- Ставим галочку для "This build is parameterized" и пишем что-то типа
Name hostname
Default Value _servername_
Description Host name where the test will be run


- В разделе Build жмём кнопочку [Add build step] -> Execute shell.
В поле Command пишем:

echo $WORKSPACE
JMETER_HOME=/home/hudson/jakarta-jmeter-2.5/bin (_path_ куда был записан свежий джиметр)
PATH=$JMETER_HOME:$PATH
java -jar $JMETER_HOME/ApacheJMeter.jar -n -t $WORKSPACE/testjm.jmx -Jserver=${hostname} -l $WORKSPACE/jmeter.jtl


Этот скрипт будет выполнять наш скрипт testjm.jmx (-t) в командной строке (-n), передавая туда переменную для джиметра server, значение которой будет равняться параметру, заданному hostname.
Также в папку /var/lib/hudson/jobs/_JobName_/workspace/ будет положен лог джиметра с именем jmeter.jtl (-l).

- Ставим галочку Publish Performance test result report. Тут же нажимаем [Add a new report] и выбираем JMeter. В Report Files пишем имя нашего лога - jmeter.jtl

Шаг 7. Сохраняем.

Шаг 8. Бегаем.


Для того, чтобы после выполнения посмотреть лог, идём на

http://_server_/view/_path_/job/_JobName_/lastBuild/performance/

Тут _server_ - имя Дженкинс-сервера.
_path_ - путь до папочки "jobs".
_JobName_ - имя текущего job'a.

No comments:

Post a Comment