Конфигурация Firebat

fire.yaml

Главный конфигурационный файл в котором описывается всё необходимое для исполнения одного теста, тест может содердать в себе несколько стрельб.

Прочитать про микроформат YAML: link1 link2 link3

Пример

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. Читай `документацию фантома <http://phantom-doc-ru.readthedocs.org/en/latest/writing-a-phantom-conf.html#phantom-conf>`_
        # 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>, '<duration>']
Линейно возрастающая нагрузка. rps_from - стартовое, rps_to - конечное значения нагрузки в rps(кол-во запросов в секунду).
['const', <rps_value>, '<duration>']
Постоянная нагрузка, rps_value - величина нагрузки в rps.
['step', <rps_from>, <rps_to>, <step_val>, '<step_dur>']
Ступенчатая нагрука - последовательность постоянных нагрузок разной интенсивности. rps_from - стартовое, rps_to - конечно значения нагрузки в rps. step_val - величина шага в rps c которым мы будим двигаться, step_dur - длительность каждой ступени в секундах. Если разность rps_to - rps_from меньше размера ступени, будет отстрелена только первая ступень.

input_file - перекрывается аргументом -a AMMO_FILE, --ammo AMMO_FILE скрипта fire при запуске.

Project Versions

Table Of Contents

Previous topic

Быстрый старт

Next topic

Анализ выходных данных

This Page