==================== Конфигурация Firebat ==================== fire.yaml ========= Главный конфигурационный файл в котором описывается всё необходимое для исполнения одного теста, тест может содердать в себе несколько стрельб. Прочитать про микроформат YAML: `link1 `_ `link2 `_ `link3 `_ Пример ------ .. code-block:: yaml title: # <Словарь>, Раздел содержащий общие сведенья о тесте task: 'SOMEPROJ-123' # <Строка>, номер таска из issue tracker(Jira, Redmine, etc) test_name: 'new version; load test; check cpu la' # <Строка>, Имя теста test_dsc: 'The new version of index builder' # <Строка>, краткое описание теста fire: # <Список>, содержит словари, каждый из которых - стрельба. - name: 'app1' # <Строка>, имя стрельбы tag: ['SOMEPROJ', 'base-search', 'regression'] # <Список>, теги для последующей навигации. # scheme network_proto: 'ipv4' # <Строка>, протокол сетевого уровня. На данный момент или ipv4 или ipv6. transport_proto: 'tcp' # <Строка>, протокол траспортного уровня или уровня представления. На данный момент или TCP или SSL. addr: '8.8.8.8' # <Строка>, доменное имя или ip адрес целевого хоста. time_periods: [10, 45, 50, 100, 150, 300, 500, '1s', 1500, '2s', '3s', '10s'] # <Список>, периоды времени по которым будут агрегироваться результаты load: [['line', 1000, 5000, '10m'], ['const', 5000, '30m'], ['step', 1, 51, 5, '2m']] # <Список>, последовательно перечисленные схемы нагрузки, определяют длительность и интенсивность. offset: 133 # <Целое число>, номер миллисекунды от начала теста в которую будет подан первый запрос из схемы. input_file: '/Users/gkomissarov/docs/vcs/my-github/firebat-console/test.ammo' # <Строка>, Абсолютный путь до файлы с запросами(ammo file). input_format: 'plain' # <Строка>, формат файла с запросами. На данный момент, только, 'plain'. loop_ammo: 1 # <Булевое значение>, Если запросов в ammo файле недостаточно для покрытия схемы нагруки, использоваться ли в бесконечном цикле те же запросы. instances: 1000 # <Целое число>, Кол-во обработчиков(воркеров) приложения Phantom. Читай `документацию фантома `_ # logs writelog: 1 # <Булевое значение>, пока не используется savelog: 0 # <Булевое значение>, пока не используется saveammo: 0 # <Булевое значение>, пока не используется - name: 'app2' tags: ['SOMEPROJ', 'base-search', 'regression'] # scheme network_proto: 'ipv4' transport_proto: 'tcp' addr: 'www.google.com:8080' #addr: 'www.ya.ru:8080' #addr = b.g.f.c.d:8080 time_periods: [10, 45, 50, 100, 150, 300, 500, '1s', 1500, '2s', '3s', '10s'] load: ['line(1,10,2m)', 'const(10,90m)'] input_file: 'simple_get1.ammo' input_format: 'plain' instances: 1000 # logs writelog: 1 savelog: 0 saveammo: 0 Сводная таблица --------------- ================ ================= ============= ============ ============ ======================================================================================================================== Имя параметр Тип Используется Обязательный По умолчанию Толкование ================ ================= ============= ============ ============ ======================================================================================================================== title Словарь Да Да ``-`` Раздел содержащий общие сведенья о тесте. task Строка Да Да ``-`` номер задачи из issue tracker(Jira, Redmine, Basecamp, etc). test_name Строка Да Да ``-`` Имя теста. test_dsc Строка Да Нет 'Fix Me' Краткое описание теста. fire Список словарей Да Да ``-`` Список содержащий словари, каждый из которых - стрельба. name Строка Да Да ``-`` Имя стрельбы. tag Список строк Нет Нет ``-`` Теги для более удобной работы с результатами. network_proto Строка Да Нет 'ipv4' Протокол сетевого уровня модели OSI. transport_proto Строка Да Нет 'tcp' Протокол транспортного уровня модели OSI. addr Строка Да Да ``-`` Арес тестируемого хоста. time_periods Список Да Да ``-`` Периоды времени по которым будут агрегироваться результаты. load Список списков Да Да ``-`` Последовательно перечисленные схемы нагрузки, определяют длительность и интенсивность. offset Целове число Да Нет 0 Номер миллисекунды от начала теста в которую будет подан первый запрос из схемы. input_file Строка Да Нет ``-`` Абсолютный путь до файлы с запросами(ammo file). input_format Строка Нет Нет 'plain' Формат файла с запросами. loop_ammo Булевое значение Да Нет 1 Если запросов в ammo файле недостаточно для покрытия схемы нагруки, использоваться ли в бесконечном цикле те же запросы. instances Целове число Да Нет 1000 Кол-во обработчиков(воркеров) приложения Phantom. writelog Булевое значение Нет Нет 1 ``-`` savelog Булевое значение Нет Нет 1 ``-`` saveammo Булевое значение Нет Нет 1 ``-`` ================ ================= ============= ============ ============ ======================================================================================================================== Логика работы ------------- ``network_proto`` - может принимать значения ``ipv4`` или ``ipv6`` ``transport_proto`` - может принимать значения ``tcp`` или ``ssl`` ``addr`` - может быть доменным именем, если его можно разрезольвить в ipv4 адрес или соотвествующим сетевому протоклу адресом. Порт по умолчанию 80. Схемы нагрузки: ``duration`` - длительность схемы в секундах. Пример ``30`` - длительность схемы 30 секунд. ``20m`` - 20 минут. ``2h`` - 2 часа. ``['line', , , '']`` Линейно возрастающая нагрузка. ``rps_from`` - стартовое, ``rps_to`` - конечное значения нагрузки в rps(кол-во запросов в секунду). ``['const', , '']`` Постоянная нагрузка, ``rps_value`` - величина нагрузки в rps. ``['step', , , , '']`` Ступенчатая нагрука - последовательность постоянных нагрузок разной интенсивности. ``rps_from`` - стартовое, ``rps_to`` - конечно значения нагрузки в rps. ``step_val`` - величина шага в rps c которым мы будим двигаться, ``step_dur`` - длительность каждой ступени в секундах. Если разность rps_to - rps_from меньше размера ступени, будет отстрелена только первая ступень. ``input_file`` - перекрывается аргументом ``-a AMMO_FILE, --ammo AMMO_FILE`` скрипта `fire` при запуске.