воскресенье, 11 октября 2009 г.

Реальная практика: Быстрая трансформация Jmeter логов в html репорт

Очевидно, что Jmeter очень популярный продукт. Как и у любого open source продукта у этого тула присутствует ряд серьезных недостатков, и одним из недостатков есть убогий репортинг результатов. По сути репортинга результатов как такового нет(то представление результатов, которое есть в текущий момент сложно назвать полноценным репортом), пользователь получает лог, а дальше ломайте голову товарищи, что с этим логом делать.

Одно из решений трансформации xml лога Jmeter в html репорт представлено на www.programmerplanet.org. Идея хорошая, только a) это решение заточено под использование в ant b) html репорт, который мы получим в результате, содержит недостаточно информации для анализа(интересно о каком анализе результатов можно говоорить имея в репорте только average response time?).

Для того, чтобы html репорт действительно представлял ценность(в моем случае) мне нужно следующее:
1) Простое и удобное решение трансформации xml -> html
2) Дополнительные метрики в таблице результатов: median, 50%Line, 70%Line, 90%Line
3) Убрать Summary, для меня эта информация просто лишняя
4) Подкорректировать оглавления столбцов в таблице результатов. Например, столбец Tests, в котором отображается информация по количеству итераций для соответствующей транзакции. Почему имя столюбца Tests понять сложно.
5) Графическое представление тренда по каждой транзакции(в данном посте имплементация этого решения не рассматривается)

Реализация(без пункта 5):
Поскольку у нас уже есть xsl шаблон, его просто нужно подправить, чтобы в результате получить ту информацию, которая нужна - пункты 2-4. Для трансформации xml -> html буду использовать SAXON XSLT processor. "Саксон" очень удобен в использовании и он достаточно быстр(100MB xml лог парсится за секунды, в зависимости от железа). Все, что мне нужно сделать для трансформации это вытянуть из архива джарник saxon9.jar и использовать его.

Трансформация выполняется одной командой, которая имеет следующий формат(CMD):
C:\>java –jar PATH_TO_SAXON_JAR\saxon9.jar PATH_TO_JMETER_LOG\log.jtl PATH_TO_XSL_FILE\template.xsl > PATH_OF_RESULT_HTML_FILE\results.html

CMD пример:

В результате я получаю репорт с нужной статистикой выполнив только одну команду:

Download xsl template
Download saxon9.jar

1 комментарий: