Uluru Оглавление 1. Введение .................................................................................................................................................. 3 2. Системные требования ........................................................................................................................... 3 3. Установка.................................................................................................................................................. 3 4. Запуск........................................................................................................................................................ 5 4.1. Команда................................................................................................................................................. 5 4.2. Отчет запуска ........................................................................................................................................ 5 5. Конфигурация запуска............................................................................................................................. 5 4.1 Файл конфигурации............................................................................................................................... 5 5.2. Таблица параметров файла конфигурации........................................................................................ 6 5.3. Пример. Содержание файла конфигурации ...................................................................................... 7 1. Путь к Jmeter .................................................................................................................................... 7 2. Список тестов для запуска .............................................................................................................. 7 4. Целевые сервера для нагрузочного тестирования....................................................................... 8 5. Время запуска тестов и кол-во пользователей для сценария, другие опции запуска ............. 8 6. Индивидуальные опции запуска групп тестов или тестов ........................................................... 9 7. Генерация тестовых данных ........................................................................................................... 9 8. Снятие статистики Sar-ом и проверка запуска гласс-фиша ........................................................10 9. Рассылка отчета на email..............................................................................................................11 1. Введение Данная программа автоматизирует запуск сценариев нагрузочного тестирования, осуществляет сбор статистики утилизации ресурсов на удаленных серверах во время запуска, строит отчет о запуске. Cистема написана с использованием Born again shell (bash) и Java. Тестовые сценарии разработаны с использованием продукта Apache Jmeter. Система поставляется с комплектом тестов для шины BIS, «Личного кабинета» и «Синих страниц». База тестов может легко расширяться, так как используются тесты, созданные с помощью утилиты Jmeter. 2. Системные требования Операционная система Linux. Аппаратные требования зависят от нагрузки, которую должна воспроизводить система. К примеру - для эмуляции 500 пользователей «Личного Кабинета» работающих одновременно (запуска тестового сценария в 500 потоков) требуется o оперативная память от 1.5Гб o процессор Intel Core(TM)2 Quad CPU Q9400 @ 2.66GHz 3. Установка Uluru поставляется в виде архива Uluru.tar. Для корректной работы «Uluru», на хосте необходимо предварительно установить JRE 1.6 и Jmeter 2.3.. Процесс установки Java Runtime Environment в данной инструкции не описывается. Для установки Uluru: Распакуйте файл Uluru.tar в директорию, в которую вы хотите установить Uluru (далее – [ULURU_HOME] ) в файл [ULURU_HOME]/conf/trusted_hosts добавьте список серверов окружения, на которых развернуты компоненты тестируемой системы. Для завершения установки запустите скрипт [ULURU_HOME]/bin/sanity.sh Этот скрипт автоматически установит утилиты, необходимые для работы Uluru и доверительные отношения с хостами из списка trusted_hosts (Login: login, Password: password) Список утилит: openssh-clients – ssh утилита. Нужна для удаленного доступа к серверам (проверка работы глассфиша и сбора статистики SAR-а). На серверах из списка trusted hosts должен быть установлен ssh. which – определяет полный путь к файлу. sed – текстовый процессор. sendmail – для оправки отчета на почту expect – для автоматической установки доверительных отношений с сервером, без диалога с пользователем. sar - для снятия статистики утилизации системных ресурсов сервера. Структура директории Uluru: /[ULURU_HOME] /bin/ - bash скрипты программы /doc/ - описание тестов в файле tests.xls и текущий документ readme. /conf/ - конфигурационные файлы для запуска тестов /scripts/ - скрипты Jmetera (*.jmx). /AIS/*.jmx - тесты на Account Information Service /AMS/*.jmx - тесты на Account Management Service /SC/*.jmx - тесты на SelfCare (личный кабинет) /preScripts/ - скрипты (*.sh) , запускаемые перед тестом (если установлен флаг EXECUTE_PRE_SCRIPTS=YES). Название bash cкрипта должно совпадать с названием теста. /AIS/ /AMS/ /addDevice/*.sh /createBSSAccount/*.sh /removeDevice/*.sh /updateAccountType/*.sh /SwitchDeviceProfile/*.sh /postScripts/ - скрипты, запускаемые после теста, если установлен флаг EXECUTE_POST_SCRIPTS=YES. Аналогично preScripts. 4. Запуск 4.1. Команда Запуск тестов на исполнение производится командой /Uluru/bin/Uluru.sh <props_file> где: <props_file> - имя конфигурационного файла, в котором описан набор тестов и условия запуска. Указывается короткое имя файла, который должен находиться в каталоге [ULURU_HOME]/conf/ 4.2. Отчет запуска В результате запуска, система формирует отчет в каталоге, имя которого определяется в конфигурационном файле. Структура директории отчета: Uluru.report – итоговый отчет по всем запущенным тестам с финальными данными /имя_теста_ID/ /имя_теста_ID/ /имя_теста_ID/ … /имя_теста_ID/ Для каждого теста после запуска записывается в поддиректорию: Summariser_Test.log – отчет, содержащий временной ряд показателей производительности теста. Генерируется JMeter-ом автоматически. Jmeter.log - системный лог работы Jmetera. Sar.report.%host% - отчет SAR-a по утилизации ресурсов на хосте %host% Errors.log - список входных данных, при которых в нагрузочном тесте произошли ошибки. 5. Конфигурация запуска 4.1 Файл конфигурации Для конфигурации запуска нагрузочных тестов требуется создать файл, который будет содержать параметры запуска: 1) Список тестов для запуска, упорядоченных в группы 2) Время запуска нагрузочных тестов 3) 4) 5) 6) 7) Кол-во потоков (пользователей) нагрузочных тестов Сервер, на который будут нацелены нагрузочные тесты Путь к директории Jmeter Путь к директории тестовых данных Файлы генерации данных (файл описания пулов данных и файл описания запросов к данным пулам данных) 8) Путь к директории отчета 9) Список серверов, на которых в процессе запуска тестов требуется собирать статистику предоставляемую утилитой SAR. 10) Список серверов, на которых запускать глассфиш перед тестом, в случае, если он не был запущен. 5.2. Таблица параметров файла конфигурации Параметр Описание JMETER_PATH Путь к JMETER/bin BM_GROUPS список групп тестов, которые будут запущены в данной конфигурации по очереди %TEST_GROUP_NAME% Список тестов, которые будут отнесены к текущей группе и запущены по очереди, если данная группа включена в список BM_GROUPS. TARGET_SERVER Сервер, по которому будет «стрелять» нагрузочные тесты BM_RUN_TIME Время работы теста в секундах RESULT_DIR Директория отчета о запуске BM_THREADS_NUM кол-во потоков для нагрузочного теста (кол-во пользователей) BM_RAMPUP_TIME время в секундах, в течении которых все потоки нагрузочного теста будут запущены PAUSE_BETWEEN_RUNS время в секундах на паузу между запусками тестов JMETER_SAMPLE_VARIABLES переменные теста, которые буду записаны в файл errors.log в случае, если нагрузочный тест пройдет с ошибкой при данных переменных. JMETER_CL_SUFFIX параметр, добавляемый к концу строки запуска JMeter-а GENERATE_NEW_INPUT_DATA нужно ли генерировать тестовые данные (YES или NO) INPUT_DATA_FOR_TEST_DIR Директорий-источник тестовых данных DB_CONFIG_FILE SQL_INPUT_CONFIG_FILE Название файла в директории %ULURU_HOME%/conf содержащего описание параметров подключения к БД. Формат файла. MY_DB1=(DESCRIPTION=...) login1 password1 MY_DB2=(DESCRIPTION=...) login2 password2 Название файла в директории %ULURU_HOME%/conf содержащего описание запросов к БД из DB_CONFIG_FILE-а и файлов, в которые данные запросов будут сохранены. EXECUTE_PRE_SCRIPTS Нужно ли выполнять специально подготовленный *.sh скрипт в папке %ULURU_HOME%/preScripts/ перед тестом. (YES или NO). Название скрипта совпадает с названием теста. EXECUTE_POST_SCRIPTS Нужно ли выполнять специально подготовленный *.sh скрипт в папке %ULURU_HOME%/postScripts/ после теста. (YES или NO). Название скрипта совпадает с названием теста. HOSTS_TO_CHECK_GLASSFISH Cписок хостов, на которых автоматически проверять статус запуска гласс-фиша перед исполнением теста и при необходимости - стартовать его. SAR_HOSTS Cписок хостов, на которых мониторить утилизацию ресурсов SAR-ом в течении исполнения теста. В конце теста в папке отчета теста сохраняется файл sar.report.%host_name% с данными утилизации, полученными SAR-ом на удаленном хосте. SAR_OPTIONS Опции SAR-а MAIL_TO Список адресов для получения финального отчета. из файла /RESULT_DIR/Uluru.report SAR_REPORT_FILTER Фильтр для отбора статистки SAR-ом (какие именно столбцы для нас актуальны в отчете) JMETER_CONSOLE_OUTPUT Запуская Jmeter, нужно ли выводить в консоль инфомацию. YES или NO. 5.3. Пример. Содержание файла конфигурации 1. Путь к Jmeter ******************** path to jmeter**************************** #путь к JMeter-y JMETER_PATH=/mnt/JumpStart/perf/jmeter/bin 2. Список тестов для запуска ******************** tests to run options ******************************* #опция группы тестов, формируем очередь запусков BM_GROUPS=AIS AMS YOUR_GROUP #указываем список тестов, принадлежащих определенной группе, в данном случае AIS, #формируем очередь запусков AIS=checkAndSuggestLogin getAccounts getBallance getBssAccount getCard getDeviceInfo #указываем список тестов, принадлежащих определенной группе, в данном случае AMS, #формируем очередь запусков AMS=AMS_modifyDevices AMS_createAccount AMS_createBSSAccount AMS_updateAccount#пример определения группы YOUR_GROUP YOUR_GROUP=your_test1 your_test2 ... your_testN 3. Целевые сервера для нагрузочного тестирования ******************** target server run options ************************** # разрешение конфликтов при совместимости параметров # 1-ый приоритет название теста : TARGET_SERVER.testname=... # 2-ой приоритет название группы теста : TARGET_SERVER.group_name=... # по умолчанию берем общий : TARGET_SERVER=... # сервер, по которому будет стрелять нагрузочный сценарий (если для группы теста или #самого теста не определен ниже другой сервер) TARGET_SERVER=Moranbah.testik.com # сервер, по которому будет стрелять нагрузочный сценарий, для группы тестов AMS (если # для теста из группы не определен ниже другой сервер) TARGET_SERVER.AMS=Moranbah.testik.com # сервер, по которому будет стрелять нагрузочный сценарий, для группы тестов SC (если # для теста из группы не определен ниже другой сервер) TARGET_SERVER.SC=acc-my1.testik.com # сервер, по которому будет стрелять нагрузочный сценарий, для теста getBallance TARGET_SERVER.getBallance=sydney.testik.com 4. Время запуска тестов и кол-во пользователей для сценария, другие опции запуска ******************* duration and threads run options ******************* # время работы нагрузочного теста BM_RUN_TIME=1200 # папка для отчета по запуску RESULT_DIR=/users/perf/results/kir_results # кол-во потоков для нагрузочного теста (кол-во пользователей) BM_THREADS_NUM=5 # время в секундах, в течении которых все потоки нагрузочного теста будут запущены BM_RAMPUP_TIME=10 # время в секундах на паузу между запусками тестов PAUSE_BETWEEN_RUNS=10 # переменные теста, которые буду записаны в файл errors.log в случае, если ассерт не # пройдет. JMETER_SAMPLE_VARIABLES=message,code,UID,Login,Phone,ScratchCardNumber,IP,email # параметр, добавляемый к концу строки запуска JMetera JMETER_CL_SUFFIX= -Х 5. Индивидуальные опции запуска групп тестов или тестов ********************************* Benchmark specific props*********************** # в пункте 5 были описаны общие параметры, которые будут применятся ко всем тестам # без исключения в случае, если они не переопределены индивидуально для группы # тестов или конкретного теста из группе. # приоритеты установки параметра # 1-ый приоритет - название теста : ANY_PARAM.testname=... # 2-ой приоритет - название группы теста : ANY_PARAM.group_name=... # по умолчанию берем общий : ANY_PARAM=... # для группы тестов AIS кол-во потоков определено как 5 BM_THREADS_NUM.AIS=5 # для теста getRegions ставим индивидуальную настройку 7 BM_THREADS_NUM.getRegions=7 # для теста searchAccount_phone ставим индивидуальную настройку 9 BM_THREADS_NUM.searchAccount_phone=9 # для теста searchAccount_phone ставим индивидуальную настройку 9 BM_THREADS_NUM.AMS_createAccount=100 # для группы тестов JMETER_SAMPLE_VARIABLES.SC=Sc_sample_variables # переопределяем параметр для группы тестов SwitchDeviceProfile JMETER_CL_SUFFIX.SwitchDeviceProfile= -JOutputDataDir=/users/perf/Uluru/perfInputData/ # переопределяем параметр для группы тестов AMS JMETER_CL_SUFFIX.AMS= -JSSObase=prog122 6. Генерация тестовых данных *************************** Generate DATA properties ************************* # тестовые данные представляют собой результаты SQL запросов в БД (указанных в # DB_CONFIG_FILE), сохраненные в файл. Конфигурирование производится через файл # DB_CONFIG_FILE и SQL_INPUT_CONFIG_FILE # нужно ли генерировать тестовые данные GENERATE_NEW_INPUT_DATA=NO # куда генерировать тестовые данные INPUT_DATA_FOR_TEST_DIR=/users/perf/inputData/perfInputData # параметры подключения к БД, содержит списки коннекш пулов # по формату # MY_DB1=(DESCRIPTION=...) login1 password1 # MY_DB2=(DESCRIPTION=...) login2 password2 # ссылки на коннешн пулы используются в следующем файле DB_CONFIG_FILE=db.conf # тестовые данные представляют собой результаты SQL запросов в БД (указанных в # DB_CONFIG_FILE), сохраненные в файл. # параметры запросов в базы данных и куда их сохранять # пример содержания SQL_INPUT_CONFIG_FILE файла # MY_DB1 "select user_id from customer" _OUTPUT_DIR_/users.csv # MY_DB2 "select order_id from order_line" _OUTPUT_DIR_/id_order.csv SQL_INPUT_CONFIG_FILE=sqlInputData.conf 7. Выполнение специальных скриптов перед или после теста ***************************** Execute pre-postscript options ********************* # некоторые тесты могут требовать иногда выполнить определенные скрипты перед или # после запуска. как правило - это тесты на AMS. Cкрипты хранятся в папке # /Uluru/preScripts/ и /Uluru/postScripts/ # YES или NO - включаем или выключаем их исполнение фреймворкром. EXECUTE_PRE_SCRIPTS=YES EXECUTE_POST_SCRIPTS=NO 8. Снятие статистики Sar-ом и проверка запуска гласс-фиша *********************** Check glassfish, SAR,etc ****************************** # список хостов, на которых автоматически проверять статус запуска гласс-фиша перед # исполнением теста и при необходимости - стартовать его. HOSTS_TO_CHECK_GLASSFISH=Moranbah.testik.com # список хостов, на которых мониторить утилизацию ресурсов SAR-ом в течении # исполнения теста. # в конце теста в папке отчета теста сохраняется файл sar.report.%host_name% с данными # утилизации, полученными саром на удаленном хосте. # таким образом мы можем мониторить состояние хоста, который "обстреливаем" # нагрузочными тестами SAR_HOSTS=Moranbah.testik.com sydney.testik.com # опции SAR-а при запуске на удаленном хосте SAR_OPTIONS=-uw # какие именно колонки данных SAR-а оставляем в отчете SAR_REPORT_FILTER=Average\|CPU\|cswch/s # в Non-Gui режиме разрешить ли Jmeter печатать информацию в консоль JMETER_CONSOLE_OUTPUT=YES 9. Рассылка отчета на email ***********************MAILTO ****************************** #список рассылки итогово отчета Uluru.report из директория RESULT_DIR MAIL_TO=kkonoplev@yotateam.com vasya.pupkin@mm.com