Testplan Config Schema 6.8.1



Схема конфигурации тестового плана SyTester

Примеры:

name: nt-http-gen
type: GENERATOR
generator:
  tps:
    start: 1
    max: 50
  testdata:
  - data
  transportIn:
  - http
transport:
- name: http
  protocol: HTTP
  host: http://localhost:6100/endpoint
testdata:
- name: data
  body: <rq><request>resp</request><rquid>${rq_uid}</rquid></rq>
name: nt-http-stub
type: STUB
stub:
  type: RANDOM
  transportIn:
  - http
transport:
- name: http
  protocol: HTTP
  request: /endpoint

Версия схемы (version)

Тип: stringФормат: semver Значение по умолчанию: "1.0.0"

Версия схемы конфигурации тестового плана в формате SemVer 2.0.0. Если задана схема меньшая текущей (6.8.1-260928), то происходит автоматическое преобразование в текущую версию. Если версия больше, тестовый план отвергается


Пример:

1.0.0

Название тестового плана (name)

Тип: string

Произвольное название тестового плана


Пример:

my-testplan

Владелец (ownerUser)

Тип: string

Имя пользователя владеющего тестовым планом


Пример:

111

Описание тестового плана (description)

Тип: string
Длина строки должна быть не более 1000 символов
Пример:

MQ-ШЛЮЗ. Проверка взаимодействия GetPrivateLoanDetailsRq от UFS в UCP

Уровень логирования (logLevel)

Тип: enum (of string) Значение по умолчанию: "ERROR"

Уровень логирования при работе тестового плана

Возможные значения:

  • "DEBUG"
  • "INFO"
  • "WARN"
  • "ERROR"
  • "NONE"
Пример:

DEBUG

Длительность тестирования (testDuration)

Тип: string or integerФормат: 1d2h3m4s5ms Значение по умолчанию: "10m для type = GENERATOR|STUB"

Отсутствие значения означает неограниченное время выполнения теста (до выполнения всех шагов в type = STEPS)
Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Примеры:

1h
10m
1d12h
300

Тип тестирования (type)

Тип: enum (of string) Значение по умолчанию: "GENERATOR"

Поддерживаемые типы тестирования:
* GENERATOR - генерация нагрузки (генератор для Нагрузочного Тестирования)
* STUB - имитация ответов от стороннего сервиса
* STEPS - выполнение шагов тестирования

В зависимости от типа тестирования к атрибутам конфигурации назначаются дополнительные правила валидации:
* при type = GENERATOR обязательным становится блок generator
* при type = STUB обязательным становится блок stub
* при type = STEPS обязательным становится блок steps

Возможные значения:

  • "GENERATOR"
  • "STUB"
  • "STEPS"
  • "AUTO"
Пример:

GENERATOR

Конфигурация генератора (generator)

Тип: object

Блок специфических настроек тестового плана при type = GENERATOR

Пример:

tps:
  start: 10
  max: 100
  stepSize: 10
  stepTime: 1m
testdata:
- my-testdata
transportIn:
- http-transport

Настройки TPS (tps)

Тип: object Значение по умолчанию: {"start": 1.0, "max": 5.0, "stepTime": "1m", "stepSize": 1.0}

Блок конфигурации транзакций, выполняемых для генерации нагрузки

Начальный TPS (start)

Тип: number Значение по умолчанию: 1

Начальное количество транзакций в секунду

Пример:

1

Максимальный TPS (max)

Тип: number Значение по умолчанию: 5

Максимальное количество транзакций в секунду

Пример:

5

Интервал TPS (stepTime)

Тип: string or integerФормат: 1d2h3m4s5ms Значение по умолчанию: "1m"

Интервал увеличения нагрузки. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Пример:

5h35m10s

Шаг TPS (stepSize)

Тип: number Значение по умолчанию: 1

Шаг увеличения нагрузки

Пример:

1

Входные транспорты (transportIn)

Тип: array of string Значение по умолчанию: "transport_name"

Ссылка на транспорт из блока transport, задается как значение тега transport->name. Задает адрес (endpoint) на который генератор будет отсылать запросы

Массив должен содержать, как минимум 1 элементов

Тип элементов массива:

Тип: string
Примеры:

transport_name
[transport_name_1, transport_name_2]

Выходные транспорты (transportOut)

Тип: array of string Значение по умолчанию: "transport_name"

Ссылка на транспорт из блока transport, задается как значение тега transport->name. Используется для асинхронных протоколов (protocol=MQ|ARTEMIS|ACTIVE_MQ). Задает адрес (endpoint) на котором генератор будет ожидать ответы

Массив должен содержать, как минимум 1 элементов

Тип элементов массива:

Тип: string
Примеры:

transport_name
[transport_name_1, transport_name_2]

Тестовые данные (testdata)

Тип: array of string Значение по умолчанию: "testplan_data"

Ссылка на тестовые данные из блока testdata, задается как значение тега testdata->name

Массив должен содержать, как минимум 1 элементов

Тип элементов массива:

Тип: string
Пример:

testplan_data

Начальное значение индекса (startRequestIndex)

Тип: integer

Задает значение, которое будет подставлено вместо выражения ${rqIndex()} в тестовых данных, привязанных к тестовому плану. Является автоинкрементным счетчиком. Используется вместе с maxRequestIndex

Пример:

1

Максимальное значение индекса (maxRequestIndex)

Тип: integer

Задает значение счетчика запросов, по достижении которого работа тестового плана будет прекращена. Используется вместе с startRequestIndex. Пример использования: при startRequestIndex = 1 и maxRequestIndex = 100 будет выполнено 100 транзакций, после этого тестовый план будет остановлен

Пример:

10

Количество повторов (retryCount)

Тип: integer

Кол-во попыток совершить повторное подключение при разрыве соединения для protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS. Работает вместе с retryDelayTime

Пример:

1

Время между попытками (retryDelayTime)

Тип: string or integerФормат: 1d2h3m4s5ms

Время между попытками переподключения. Работает вместе с retryCount. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Пример:

5h35m10s

Таймаут запросов (messageTimeout)

Тип: string or integerФормат: 1d2h3m4s5ms

Таймаут, в течение которого ожидается ответ. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Пример:

5h35m10s

Количество допустимых ошибок (errorsToStop)

Тип: integer Значение по умолчанию: "100"

Число статусов подряд в ответных сообщениях, не указанных в списке успешных, после которых тестплан принудительно завершается. Успешные статусы - значения в диапазоне 0-399 и значения из expectedStatus

Пример:

100

Отсрочка остановки по количеству ошибок (ignoreErrorsDuringWarmup)

Тип: string or integerФормат: 1d2h3m4s5ms

Длительность, во время которой не учитываются ошибки способные остановить нагрузку (errorsToStop). Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Пример:

5h35m10s

Настройки корреляции (correlation)

Тип: object

Блок для настройки корреляции ответов с запросами. Применяется только для асинхронных протоколов (protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS) при синхронных сценариях"

Парсер сообщений (messageParser)

Тип: enum (of string) Значение по умолчанию: "NONE"

Задает формат сообщения для поиска значения внутренней переменной rq_uid и statuscode (код ответа). Применяется вместе с rqUIDTag и/или statusCodeTag
Значение rq_uid аналогично со значениями параметра:
NONE - парсинг отключен
XPATH - формат XML. Ожидается выражение в формате xpath 1.0
JSONPATH - формат json. Ожидается выражение в формате JsonPath https://github.com/json-path/JsonPath
HEADER - формат не важен, rq_uid/statusCode заданы в заголовке сообщения (testdatas[].headers)
XML
INJSON - используется в GRPC сообщениях для того, чтобы распарсить xml сообщение из тега body сообщения в формате JSON
JSON
INJSON - аналогично XMLIN_JSON только для JSON сообщений

Возможные значения:

  • "NONE"
  • "XPATH"
  • "JSONPATH"
  • "HEADER"
  • "XML_IN_JSON"
  • "JSON_IN_JSON"
Пример:

["XPATH"]

Тег идентификатора запросов (correlationTag)

Тип: string

Для type=GENERATOR/STEPS:
Задает выражение для извлечения значения корреляционной переменной (rq_uid или uuid) из сообщения-ответа.
Полученное значение используется для корреляции ответа с запросом.
В сообщении-запросе должна присутствовать переменная ${rq_uid} или ${uuid}.

Для type=STUB:
Задает выражение для извлечения значения корреляционной переменной (rq_uid или uuid) из сообщения-запроса.
Полученное значение подставляется в сообщение-ответ вместо переменной ${rq_uid} или ${uuid}.

Применяется вместе с messageParser=XPATH|JSONPATH|HEADER.
После извлечения значения автоматически определяется тип: rq_uid (формат 00[0-9a-f]{14}) или uuid (UUID v4 формат).
Если извлечённое значение содержит префикс/суффикс (например "prefix#${uuid}"), используйте correlationRegex для извлечения чистого значения.


Примеры:

$.contextId
//RQ2
X-Correlation-ID

Регулярное выражение для извлечения корреляционного значения (correlationRegex)

Тип: string

Опциональное регулярное выражение с одной capture group для извлечения чистого корреляционного значения из строки с префиксом/суффиксом.
Если значение поля, извлечённое по correlationTag, содержит дополнительные символы (например "id#${uuid}"),
используйте correlationRegex для извлечения чистого значения rq_uid или uuid.
Выражение должно содержать ровно одну capture group (в круглых скобках), которая будет использована как корреляционное значение.
Примеры:
- "PREFIX#(.+)" - извлекает ID после разделителя #
- "PREFIX_(.+)_SUFFIX" - извлекает значение между префиксом и суффиксом
- "(.+)" - извлекает всё значение (эквивалентно отсутствию regex)


Примеры:

id#(.+)
channel_agent#([^>]+)
(.*)#id

Тег идентификатора запросов (rq\_uid) (rqUIDTag)

Тип: string

[DEPRECATED] Используйте correlationTag вместо rqUIDTag.
Задает выражение для поиска значения внутренней переменной rq_uid.
Применяется вместе с messageParser=XPATH|JSONPATH|HEADER.
Сохраняется для обратной совместимости.


Пример:

/custom2/RQ2/@Attr1

Хранилище запросов (requestTimeStorage)

Тип: enum (of string) Значение по умолчанию: "LOCAL_CACHE"

Используется для корреляции ответов с запросами, описание механизма корреляции приведено ниже. Возможные значения:
1. MEMORY_DB – время отправки каждого запроса сохраняется в локальный кеш (LOCAL_CACHE) и внешний кеш (Ignite/Radish/etcd). Также можно использовать алиас IGNITE.
Рекомендуется использовать для SyTester EE для protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS
2. LOCAL_CACHE - время отправки каждого запроса сохраняется в локальный кеш.
Рекомендуется использовать:
1) для SyTester CE для всех сценариев
2) для SyTester EE:
2.1) для синхронных протоколов (protocol=HTTP|GRPC),
2.2) для асинхронных протоколов (protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS) когда тест работает на 1 поде генератора
2.3) во всех остальных случаях, когда не нужны метрики задержки и статусы транзакции (в этом случае поведение аналогично none)
3. NONE – время отправки каждого запроса не сохраняется.
Рекомендуется использовать для SyTester CE и EE, при необходимости отсылать запросы без ответов. Метрики не доступны

Возможные значения:

  • "IGNITE"
  • "MEMORY_DB"
  • "LOCAL_CACHE"
  • "NONE"
  • "HEADER"
  • "STORE_FULL_REQUEST"
Пример:

MEMORY_DB

Тег кода статуса (statusCodeTag)

Тип: string

Задает выражение для поиска значения status_code из ответа. Применяется вместе с messageParser.
Используется для:
1. Понимания статуса вызова: успешно/неуспешно (если не успешно, то увеличится errorsToStop)
2. Формирование метрики статуса транзакции
3. Установки http статуса ответного сообщения на http заглушке

Пример для messageParser=header: "statusCodeTag": "mystatus_code", при условии, что во входящем сообщении есть header c <mystatus_code>333</mystatus_code>, в этом случае statusCode = 333


Пример:

204

Настройки производительности генератора (performance)

Тип: object

Блок описания работы тестового плана в облаке. Задает характеристики, связанные с работой модулей SyTester в общем и для конкретных протоколов

Количество подов (podCount)

Тип: integer Значение по умолчанию: 0

Количество подов генераторов, на которых будет запущен тестовый план
Если параметр задан, то на поде (-ах) на которых запущен тест не будут запущены другие (следует применять для критичных тестов, для которых нужна полная изоляция)
Если параметр не задан (или задан 0), то на поде может быть запущено более одного теста с одинаковым значением protocol (но не более genMaxNT/max). genMaxNT определяется конкретным протоколом (задается в application.yml - см. Руководство по установке)

Пример:

2

Количество записывающих потоков (writeThreads)

Тип: integer Значение по умолчанию: 0

Количество потоков для отправки сообщений генератором.
Если значение не задано (или задан 0), то количество потоков рассчитывается как целая часть результата выражения: maxTPS/100

Пример:

10

Настройки периодической нагрузки (periodicLoad)

Тип: object

Блок описания режима периодической нагрузки.
В режиме периодической нагрузки генератор может находиться в режиме нагрузки или в режиме простоя.
Режим нагрузки, длительность конфигурируется параметром loadDuration:
- в режиме нагрузки генератор выдает нагрузку на тестируемый сервис в штатном режиме
- по истечению времени нагрузки, генератор переходит в режим простоя
Режим простоя, длительность конфигурируется параметром loadCooldown:
- в режиме простоя генератор не выполняет никаких действий. Тестплан переходит в статус paused
- по истечения времени простоя, генератор переходит в режим нагрузки. Тестплан переходит в статус, предшествующий статусу paused

Длительность нагрузки (loadDuration)

Тип: string or integerФормат: 1d2h3m4s5ms

Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Пример:

5h35m10s

Длительность простоя (loadCooldown)

Тип: string or integerФормат: 1d2h3m4s5ms

Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Пример:

5h35m10s

Начинать с нагрузки (startWithLoad)

Тип: boolean

Начальный режим работы.
Возможные значения:
- true - генератор запускается в режиме нагрузки и подает нагрузку сразу
- false - генератор запускается в режиме простоя и подает нагрузку спустя loadCooldown

Пример:

true

Настройки HTTP-транспорта генератора (http)

Тип: object

Блок специфических настроек тестового плана при protocol=HTTP

Максимальное число соединений (maxConnections)

Тип: integer Значение по умолчанию: "0"

Определяет максимальное количество одновременных исходящих соединений, которое может быть открыто к конкретному хосту. Когда все соединения заняты, новые запросы становятся в очередь и ожидают освобождения одного из них.

Пример:

100

Ожидаемые статусы (expectedStatus)

Тип: string

Список статусов, которые будут обозначены SyTester как успешные. Если значение не задано, то успешным считается 200 статус


Пример:

500

Настройки GRPC-транспорта генератора (grpc)

Тип: object

Блок специфических настроек тестового плана при protocol=GRPC

Максимальное число соединений (maxConnections)

Тип: integer Значение по умолчанию: "0"

Количество потоков для отправки сообщений генератором. Если значение не задано (или задан 0), то количество потоков рассчитывается как целая часть результата выражения: maxTPS/100

Пример:

100

Настройки MQ-транспорта генератора (mq)

Тип: object

Блок специфических настроек тестового плана при protocol=MQ

Фильтр сообщений (selectorFilter)

Тип: string

Обрабатывает только те сообщения, где в заголовке usr присутствует указанный тег со значением


Пример:

RQ

RateLimit потребителя (consumerRateLimit)

Тип: integer Значение по умолчанию: "0"

Максимальное число одновременных операций чтения из очереди входящих сообщений

Пример:

5

Декодирование из base64 (encode64)

Тип: boolean Значение по умолчанию: "false"

Необходимость декодирования тела полученного сообщения из base64

Пример:

true

Количество читающих потоков (readThreads)

Тип: integer Значение по умолчанию: "0"

Число подключений для очереди с ответами. Если значение не задано, то будет использоваться значение writeThreads

Пример:

10

Настройки транспорта Kafka-генератора (kafka)

Тип: object

Блок специфических настроек тестового плана при protocol=Kafka

Количество читающих потоков (readThreads)

Тип: integer Значение по умолчанию: "1"

Число потоков для чтения ответов из топика. Каждый поток создаёт отдельный KafkaConsumer, Kafka делит партиции топика между ними и читает параллельно. Значение не должно превышать количество партиций топика. Если значение не задано - будет использоваться значение writeThreads.

Пример:

10

Настройки Latency SLA (slaLatencyChecking)

Тип: object

Блок проверки задержки тестового плана на соблюдение целевого значения. Если проверка включена, то во время выполнения тестового плана будет производиться сравнение средней latency с целевым значением (latencyMs), При превышении, тестовый план будет остановлен. Время начала проверки регулируется параметром minRequests

Минимальное количество запросов (minRequests)

Тип: integer Значение по умолчанию: "0"

Минимальное количество запросов, после преодоления которых начинается проверка. Параметр необходим для настройки достоверности средней latency. При начале тестирования средняя latency может существенно отличаться от достоверного значения, в связи с малой выборкой. Если значение 0, проверка начинается при первом запросе

Пример:

10

Целевая задержка (latency)

Тип: string or integerФормат: 1d2h3m4s5ms Значение по умолчанию: "0"

Значение задержки, превышение которой приведет к остановке ТП. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Пример:

5h35m10s

(observers)

Тип: array

Список наблюдателей, выполняющих мониторинг, при работе генератора

Тип элементов массива:

Наблюдатель генератора (generatorObserver)

Тип: object

Наблюдатель описывает ожидаемое событие или состояние(условие) и соответствующую ему действие, которое инициируется при его наступлении.

Условие (condition)

Тип: string or integerФормат: expression

Наблюдаемое условие генератора

Пример:

_steps['tps'].tps.current > 15

Действие при выполнении условия (action)

Тип: enum (of string)

STOP — остановка тестового плана,
CONTINUE — переход на следующую итерацию текущего цикла,
BREAK — завершение выполнения текущего цикла.
Если поле не указано, то текущий шаг пошагового тестирования (type=STEPS) автоматически завершается.
Значения NONE и WARN устаревшие. При этих значениях поведение аналогично незаданному значению

Возможные значения:

  • "NONE"
  • "WARN"
  • "STOP"
  • "CONTINUE"
  • "BREAK"
Пример:

STOP

Конфигурация заглушки (stub)

Тип: object

Блок специфических настроек тестового плана при type = STUB

Пример:

type: RANDOM
transportIn:
- http

Тип заглушки (type)

Тип: enum (of string) Значение по умолчанию: "RANDOM"

Режим работы:
* Random - заглушка вернет любой из заданных ответов для сервиса, заданного в тестовом плане
* Script - ответ формирует в выражении
* XSLT - заглушка вернет ответ, для которого заданный XSLT шаблон будет соответствовать телу пришедшего запроса
* Sequence - метод возвращает несколько ответов в очереди в ответ на 1 входное сообщение (только для protocol=MQ)
* STORED_XML - deprecated

Возможные значения:

  • "RANDOM"
  • "SCRIPT"
  • "XSLT"
  • "SEQUENCE"
  • "STORED_XML"
Пример:

RANDOM

Входные транспорты (transportIn)

Тип: array of string Значение по умолчанию: "transport_name"

Ссылка на транспорт из блока transport, задается как значение тега transport->name. Задает адрес (endpoint) на котором будут ожидаться запросы

Массив должен содержать, как минимум 1 элементов

Тип элементов массива:

Тип: string
Пример:

transport_name

Выходные транспорты (transportOut)

Тип: array of string Значение по умолчанию: "transport_name"

Ссылка на транспорт из блока transport, задается как значение тега transport->name. Задает адрес (endpoint) на который будут отсылаться ответы

Тип элементов массива:

Тип: string
Пример:

transport_name

Тестовые данные (testdata)

Тип: array of string Значение по умолчанию: "testplan_data"

Ссылка на тестовые данные из блока testdata, задается как значение тега testdata->name. Если значение не задано, то заглушка будет работать в режиме echo-сервера (будет возвращать в ответе то, что пришло в запросе)

Тип элементов массива:

Тип: string
Пример:

testplan_data

Script-заглушка (script)

Тип: string

Script-заглушка формирует ответ в выражении, которое задается в атрибуте stub.script. Запись данных в формируемый ответ осуществляется с помощью переменной response.


Примеры:

"script": |
    const result = {
      name: "John"
    };
    response.body = json(result)
    response.headers = {
      "Content-Type": "application/json"
    }
    response.statusCode = 200
script: |-
    const result = {
        var: request.pathParams.var,
        query: request.queryParams.param,
        rawPath: request.path,
        rawQuery: request.query
    };
    response.body = json(result)
    response.headers = {
        "Content-Type": "application/json"
    }
    response.statusCode = 200

Задержка (delay)

Тип: string or integerФормат: expression

Пауза, которая будет применена после прочтения сообщения перед отправкой ответа. В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запросе

Пример:

10s

Начальное значение индекса (startRequestIndex)

Тип: integer Значение по умолчанию: "0"

Задает значение, которое будет подставлено вместо внутренней переменной ${rq_index} в тестовых данных, привязанных к тестовому плану

Пример:

10

Максимальное значение индекса (maxRequestIndex)

Тип: integer

Задает значение счетчика запросов, по достижении которого работа тестового плана будет прекращена

Пример:

10

Количество повторов (retryCount)

Тип: integer

Кол-во попыток совершить повторное подключение при разрыве соединения для protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS. Работает вместе с retryDelayTime

Пример:

10

Время между попытками (retryDelayTime)

Тип: string or integerФормат: 1d2h3m4s5ms

Время между попытками переподключения. Работает вместе с retryCount. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Пример:

5h35m10s

Настройки корреляции (correlation)

Тип: object

Блок для настройки корреляции ответов с запросами. Применяется только для асинхронных протоколов (protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS) при синхронных сценариях"

Парсер сообщений (messageParser)

Тип: enum (of string) Значение по умолчанию: "NONE"

Задает формат сообщения для поиска значения внутренней переменной rq_uid и statuscode (код ответа). Применяется вместе с rqUIDTag и/или statusCodeTag
Значение rq_uid аналогично со значениями параметра:
NONE - парсинг отключен
XPATH - формат XML. Ожидается выражение в формате xpath 1.0
JSONPATH - формат json. Ожидается выражение в формате JsonPath https://github.com/json-path/JsonPath
HEADER - формат не важен, rq_uid/statusCode заданы в заголовке сообщения (testdatas[].headers)
XML
INJSON - используется в GRPC сообщениях для того, чтобы распарсить xml сообщение из тега body сообщения в формате JSON
JSON
INJSON - аналогично XMLIN_JSON только для JSON сообщений

Возможные значения:

  • "NONE"
  • "XPATH"
  • "JSONPATH"
  • "HEADER"
  • "XML_IN_JSON"
  • "JSON_IN_JSON"
Пример:

["XPATH"]

Тег идентификатора запросов (correlationTag)

Тип: string

Для type=GENERATOR/STEPS:
Задает выражение для извлечения значения корреляционной переменной (rq_uid или uuid) из сообщения-ответа.
Полученное значение используется для корреляции ответа с запросом.
В сообщении-запросе должна присутствовать переменная ${rq_uid} или ${uuid}.

Для type=STUB:
Задает выражение для извлечения значения корреляционной переменной (rq_uid или uuid) из сообщения-запроса.
Полученное значение подставляется в сообщение-ответ вместо переменной ${rq_uid} или ${uuid}.

Применяется вместе с messageParser=XPATH|JSONPATH|HEADER.
После извлечения значения автоматически определяется тип: rq_uid (формат 00[0-9a-f]{14}) или uuid (UUID v4 формат).
Если извлечённое значение содержит префикс/суффикс (например "prefix#${uuid}"), используйте correlationRegex для извлечения чистого значения.


Примеры:

$.contextId
//RQ2
X-Correlation-ID

Регулярное выражение для извлечения корреляционного значения (correlationRegex)

Тип: string

Опциональное регулярное выражение с одной capture group для извлечения чистого корреляционного значения из строки с префиксом/суффиксом.
Если значение поля, извлечённое по correlationTag, содержит дополнительные символы (например "id#${uuid}"),
используйте correlationRegex для извлечения чистого значения rq_uid или uuid.
Выражение должно содержать ровно одну capture group (в круглых скобках), которая будет использована как корреляционное значение.
Примеры:
- "PREFIX#(.+)" - извлекает ID после разделителя #
- "PREFIX_(.+)_SUFFIX" - извлекает значение между префиксом и суффиксом
- "(.+)" - извлекает всё значение (эквивалентно отсутствию regex)


Примеры:

id#(.+)
channel_agent#([^>]+)
(.*)#id

Тег идентификатора запросов (rq\_uid) (rqUIDTag)

Тип: string

[DEPRECATED] Используйте correlationTag вместо rqUIDTag.
Задает выражение для поиска значения внутренней переменной rq_uid.
Применяется вместе с messageParser=XPATH|JSONPATH|HEADER.
Сохраняется для обратной совместимости.


Пример:

/custom2/RQ2/@Attr1

Хранилище запросов (requestTimeStorage)

Тип: enum (of string) Значение по умолчанию: "LOCAL_CACHE"

Используется для корреляции ответов с запросами, описание механизма корреляции приведено ниже. Возможные значения:
1. MEMORY_DB – время отправки каждого запроса сохраняется в локальный кеш (LOCAL_CACHE) и внешний кеш (Ignite/Radish/etcd). Также можно использовать алиас IGNITE.
Рекомендуется использовать для SyTester EE для protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS
2. LOCAL_CACHE - время отправки каждого запроса сохраняется в локальный кеш.
Рекомендуется использовать:
1) для SyTester CE для всех сценариев
2) для SyTester EE:
2.1) для синхронных протоколов (protocol=HTTP|GRPC),
2.2) для асинхронных протоколов (protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS) когда тест работает на 1 поде генератора
2.3) во всех остальных случаях, когда не нужны метрики задержки и статусы транзакции (в этом случае поведение аналогично none)
3. NONE – время отправки каждого запроса не сохраняется.
Рекомендуется использовать для SyTester CE и EE, при необходимости отсылать запросы без ответов. Метрики не доступны

Возможные значения:

  • "IGNITE"
  • "MEMORY_DB"
  • "LOCAL_CACHE"
  • "NONE"
  • "HEADER"
  • "STORE_FULL_REQUEST"
Пример:

MEMORY_DB

Тег кода статуса (statusCodeTag)

Тип: string

Задает выражение для поиска значения status_code из ответа. Применяется вместе с messageParser.
Используется для:
1. Понимания статуса вызова: успешно/неуспешно (если не успешно, то увеличится errorsToStop)
2. Формирование метрики статуса транзакции
3. Установки http статуса ответного сообщения на http заглушке

Пример для messageParser=header: "statusCodeTag": "mystatus_code", при условии, что во входящем сообщении есть header c <mystatus_code>333</mystatus_code>, в этом случае statusCode = 333


Пример:

204

Настройки производительности заглушки (performance)

Тип: object

Блок описания работы тестового плана в облаке. Задает характеристики, связанные с работой модулей SyTester в общем и для конкретных протоколов

Количество подов (podCount)

Тип: integer Значение по умолчанию: 0

Количество подов заглушек
Если protocol=HTTP|GRPC параметр не учитывается и заглушка будет запущена на всех работающих подах
Если параметр задан, то на поде (-ах) на которых запущен тест не будут запущены другие (следует применять для критичных тестов, для которых нужна полная изоляция)
Если параметр не задан (или задан 0), то на поде может быть запущено более одного теста с одинаковым значением protocol (но не более genMaxNT/max). genMaxNT определяется конкретным протоколом (задается в application.yml - см. Руководство по установке)

Пример:

2

Настройки MQ-транспорта заглушки (mq)

Тип: object

Блок, определяющий настройки работы с очередями

Очередь ответа (replyQueueAndMQManager)

Тип: enum (of string) Значение по умолчанию: "FROM_INCOMING_MESSAGE"

FROM_INCOMING_MESSAGE - заглушка отвечает по Reply, значения ReplyQ/ReplyQM берутся из запроса
FROM_TESTPLAN - заглушка отправляет ответ в очередь/менеджер по списку транспортов, указанных в теге transportOut

Возможные значения:

  • "FROM_INCOMING_MESSAGE"
  • "FROM_TESTPLAN"
Пример:

FROM_INCOMING_MESSAGE

Фильтр сообщений (selectorFilter)

Тип: string

Обрабатывает только те сообщения, где в заголовке usr присутствует указанный тег со значением


Пример:

selectorFilter

RateLimit потребителя (consumerRateLimit)

Тип: integer

Максимальное число одновременных операций чтения из очереди входящих сообщений

Пример:

5

Декодирование из base64 (encode64)

Тип: boolean Значение по умолчанию: false

Необходимость декодирования тела полученного сообщения из base64

Пример:

true

Количество читающих потоков (readThreads)

Тип: integer Значение по умолчанию: 0

Число подключений для очереди входящих запросов. Если значение не задано, то будет использоваться рассчитано исходя из соотношения: 1 поток - 20 тпс

Пример:

10

Настройки транспорта Kafka-заглушки (kafka)

Тип: object

Блок, определяющий настройки работы с Kafka

Количество читающих потоков (readThreads)

Тип: integer Значение по умолчанию: 1

Число потоков для чтения входящих сообщений из топика. Каждый поток создаёт отдельный KafkaConsumer, Kafka делит партиции топика между ними и читает параллельно. Значение не должно превышать количество партиций топика. Если значение не задано - используется 1 поток.

Пример:

10

Конфигурация пошагового сценария тестирования (steps)

Тип: object

Блок специфических настроек тестового плана при type = STEPS

Список переменных (vars)

Тип: array

Список переменных, которые будут инициализированы при запуске тестового плана

Тип элементов массива:

Переменная тестирования (testVar)

Тип: object

Для задания типа переменной необходимо задать значение в определенный атрибут (для целочисленного - intValue и т.п.). Используется значение в порядке приоритета int > float > boolean > string

Примеры:

intValue: 12
name: intVar
stringValue: Hello world!
name: stringVar

Название переменной (name)

Тип: string
Пример:

countCm

Целочисленное значение (intValue)

Тип: integer
Пример:

10

Вещественное значение (doubleValue)

Тип: number
Пример:

1.0

Логическое значение (booleanValue)

Тип: boolean
Пример:

True

Строковое значение (stringValue)

Тип: string
Пример:

abc

(value)

Тип: object

Первый запускаемый шаг (entry)

Тип: string

Название шага, который будет выполнен при запуске тестового плана


Пример:

rest-step

Шаги (steps)

Тип: array

Список шагов тестирования. Их порядок не важен

Массив должен содержать, как минимум 1 элементов

Тип элементов массива:

Конфигурация шага тестирования (testplanStep)

Тип: object

Название шага (name)

Тип: string
Пример:

step_1

Описание шага (description)

Тип: string
Пример:

Описание шага

Тип шага тестирования (type)

Тип: enum (of string) Значение по умолчанию: "PUT"

Выполняемое действие для шага:
PUT - отправка сообщения,
GET - получение сообщения (применимо для protocol=MQ|KAFKA и для HTTP с steps->ignite),
PUT_GET - синхронная работа по асинхронным протоколам
SLEEP - задержка,
K8S_APPLY - загрузка Kubernetes-ресурсов,
K8S_DELETE - удаление Kubernetes-ресурсов,
K8S_CHECK - проверка Kubernetes-ресурсов,
K8S_RESTART_PODS - перезагрузка подов,
K8S_AWAIT_CONDITION - ожидание условия для Kubernetes-ресурсов,
LOOP - итерации по заданной переменной с последовательным выполнением тела цикла,
SET_VAR - объявить переменную или изменить значение уже существующей переменной,
SERIAL - последовательно выполнить указанные шаги,
PARALLEL - параллельно выполнить указанные шаги,
TPS_LOADER - выполнение действия с заданным TPS,
EXPRESSION - выполнение выражения

Возможные значения:

  • "PUT"
  • "GET"
  • "SLEEP"
  • "PUT_GET"
  • "K8S_APPLY"
  • "K8S_DELETE"
  • "K8S_CHECK"
  • "K8S_CHANGE"
  • "K8S_RESTART_PODS"
  • "K8S_AWAIT_CONDITION"
  • "LOOP"
  • "SET_VAR"
  • "SERIAL"
  • "PARALLEL"
  • "TPS_LOADER"
  • "EXPRESSION"
Пример:

GET

Уровень логирования (logLevel)

Тип: enum (of string) Значение по умолчанию: "ERROR"

Уровень логирования при работе тестового плана

Возможные значения:

  • "DEBUG"
  • "INFO"
  • "WARN"
  • "ERROR"
  • "NONE"
Пример:

DEBUG

Транспорт (transport)

Тип: string

Ссылка на транспорт из блока transport, задается как значение тега transport->name


Пример:

transport

Тестовые данные (testdata)

Тип: string

Ссылка на тестовые данные из блока testdata, задается как значение тега testdata->name. При stepType=K8S_APPLY в качестве тестовых данных должен быть задан шаблон ресурсов


Пример:

testdata

Таймаут ожидания (timeout)

Тип: string

Таймаут, в течение которого ожидается ответ.


Пример:

5s

Формирование переменных (vars)

Тип: array

Блок списка переменных, которые будут сформированы по результату получения ответа на данном шаге. Используются для шагов stepType=GET|PUT. Их можно использовать на последующих шагах в заголовках или теле сообщения. Пример использования: ${varName}

Тип элементов массива:

Формирование переменной (varFormationConfig)

Тип: object

Формирование переменной на основе полученного ответа

Путь (path)

Тип: string

Задает выражение для поиска значения varName в сообщении. Может содержать как простые строковые значения (type: header, const), так и xpath и jsonpath пути (type: xpath, jsonpath, jsonInJson, xmlInJson)


Пример:

first_var

Имя переменной (varName)

Тип: string

Имя переменной, в которую будет помещено значение после исполнения выражения path


Пример:

var1

Тип формирования переменной (type)

Тип: enum (of string)

Задает формат сообщения для поиска переменной:
* XPATH - формат xml. Ожидается выражение в формате xpath 1.0
* JSONPATH - формат JSON. Ожидается выражение в формате JsonPath https://github.com/json-path/JsonPath
* XML_IN_JSON - используется в GRPC сообщениях для того, чтобы распарсить xml сообщение из тега body сообщения в формате JSON
* JSON_IN_JSON - аналогично XML_IN_JSON только для JSON сообщений
* HEADER - используется для того, чтобы извлечь значение заголовка, имя тега задается в "path"
* CONST - используется для задания константного значения. Значение задается в "path"

Возможные значения:

  • "XPATH"
  • "JSONPATH"
  • "JSON_IN_JSON"
  • "XML_IN_JSON"
  • "HEADER"
  • "CONST"
Пример:

JSONPATH

Настройки GET шага (get)

Тип: object

Блок специфических настроек шагов тестирования для stepType = GET

Задержка (delay)

Тип: string or integerФормат: expression Значение по умолчанию: "5s"

Пауза, которая будет применена после выполнения шага. Используется для имитации задержки перед следующим шагом. В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запуске шага

Пример:

10s

Настройки PUT шага (put)

Тип: object

Блок специфических настроек шагов тестирования для stepType = PUT

Ожидаемый статус (expectedStatus)

Тип: integer
Пример:

204

Настройки HTTP-транспорта шага PUT (http)

Тип: object

Блок специфических настроек шага PUT при protocol=HTTP (не влияет на работу других протоколов)

Максимальное число соединений (maxConnections)

Тип: string Значение по умолчанию: "100"

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


Пример:

500

Использовать ли Ignite (ignite)

Тип: boolean Значение по умолчанию: false

Используется для поддержки синхронного сценария для асинхронных вызовов HTTP путем получения ответа через Ignite
Логика работы:
1. Выполняется запрос в тестируемую АС по HTTP
2. Тестируемая АС отвечает (асинхронный ответ по HTTP) в заглушку
3. Заглушка помещает ответ в Ignite
4. Ответ читается из Ignite
Для настройки нужно:
1. В тестовом плане с type=STUB и protocol=HTTP установить requestTimeStorage=storefullrequest и задать rqUIDTag
2. На любом шаге c stepType=PUT в тело сообщения добавить внутреннюю переменную $rq_uid
3. На следующем шаге установить ignite=true иh
3.1 Если stepType=GET, можно настроить steps.timeoutMs.
Также на этом шаге появляется возможность работы с переменными (см. steps.vars) и/или валидации сообщения (см. testdatas[].messageCompare->compareHeaders/compareBody)
3.2 Если stepType=PUT, отправить сообщение (которое заданно в тестовом плане)

Пример:

true

Настройки корреляции (correlation)

Тип: object

Блок для настройки корреляции ответов с запросами. Применяется только для асинхронных протоколов (protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS) при синхронных сценариях"

Парсер сообщений (messageParser)

Тип: enum (of string) Значение по умолчанию: "NONE"

Задает формат сообщения для поиска значения внутренней переменной rq_uid и statuscode (код ответа). Применяется вместе с rqUIDTag и/или statusCodeTag
Значение rq_uid аналогично со значениями параметра:
NONE - парсинг отключен
XPATH - формат XML. Ожидается выражение в формате xpath 1.0
JSONPATH - формат json. Ожидается выражение в формате JsonPath https://github.com/json-path/JsonPath
HEADER - формат не важен, rq_uid/statusCode заданы в заголовке сообщения (testdatas[].headers)
XML
INJSON - используется в GRPC сообщениях для того, чтобы распарсить xml сообщение из тега body сообщения в формате JSON
JSON
INJSON - аналогично XMLIN_JSON только для JSON сообщений

Возможные значения:

  • "NONE"
  • "XPATH"
  • "JSONPATH"
  • "HEADER"
  • "XML_IN_JSON"
  • "JSON_IN_JSON"
Пример:

["XPATH"]

Тег идентификатора запросов (correlationTag)

Тип: string

Для type=GENERATOR/STEPS:
Задает выражение для извлечения значения корреляционной переменной (rq_uid или uuid) из сообщения-ответа.
Полученное значение используется для корреляции ответа с запросом.
В сообщении-запросе должна присутствовать переменная ${rq_uid} или ${uuid}.

Для type=STUB:
Задает выражение для извлечения значения корреляционной переменной (rq_uid или uuid) из сообщения-запроса.
Полученное значение подставляется в сообщение-ответ вместо переменной ${rq_uid} или ${uuid}.

Применяется вместе с messageParser=XPATH|JSONPATH|HEADER.
После извлечения значения автоматически определяется тип: rq_uid (формат 00[0-9a-f]{14}) или uuid (UUID v4 формат).
Если извлечённое значение содержит префикс/суффикс (например "prefix#${uuid}"), используйте correlationRegex для извлечения чистого значения.


Примеры:

$.contextId
//RQ2
X-Correlation-ID

Регулярное выражение для извлечения корреляционного значения (correlationRegex)

Тип: string

Опциональное регулярное выражение с одной capture group для извлечения чистого корреляционного значения из строки с префиксом/суффиксом.
Если значение поля, извлечённое по correlationTag, содержит дополнительные символы (например "id#${uuid}"),
используйте correlationRegex для извлечения чистого значения rq_uid или uuid.
Выражение должно содержать ровно одну capture group (в круглых скобках), которая будет использована как корреляционное значение.
Примеры:
- "PREFIX#(.+)" - извлекает ID после разделителя #
- "PREFIX_(.+)_SUFFIX" - извлекает значение между префиксом и суффиксом
- "(.+)" - извлекает всё значение (эквивалентно отсутствию regex)


Примеры:

id#(.+)
channel_agent#([^>]+)
(.*)#id

Тег идентификатора запросов (rq\_uid) (rqUIDTag)

Тип: string

[DEPRECATED] Используйте correlationTag вместо rqUIDTag.
Задает выражение для поиска значения внутренней переменной rq_uid.
Применяется вместе с messageParser=XPATH|JSONPATH|HEADER.
Сохраняется для обратной совместимости.


Пример:

/custom2/RQ2/@Attr1

Хранилище запросов (requestTimeStorage)

Тип: enum (of string) Значение по умолчанию: "LOCAL_CACHE"

Используется для корреляции ответов с запросами, описание механизма корреляции приведено ниже. Возможные значения:
1. MEMORY_DB – время отправки каждого запроса сохраняется в локальный кеш (LOCAL_CACHE) и внешний кеш (Ignite/Radish/etcd). Также можно использовать алиас IGNITE.
Рекомендуется использовать для SyTester EE для protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS
2. LOCAL_CACHE - время отправки каждого запроса сохраняется в локальный кеш.
Рекомендуется использовать:
1) для SyTester CE для всех сценариев
2) для SyTester EE:
2.1) для синхронных протоколов (protocol=HTTP|GRPC),
2.2) для асинхронных протоколов (protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS) когда тест работает на 1 поде генератора
2.3) во всех остальных случаях, когда не нужны метрики задержки и статусы транзакции (в этом случае поведение аналогично none)
3. NONE – время отправки каждого запроса не сохраняется.
Рекомендуется использовать для SyTester CE и EE, при необходимости отсылать запросы без ответов. Метрики не доступны

Возможные значения:

  • "IGNITE"
  • "MEMORY_DB"
  • "LOCAL_CACHE"
  • "NONE"
  • "HEADER"
  • "STORE_FULL_REQUEST"
Пример:

MEMORY_DB

Тег кода статуса (statusCodeTag)

Тип: string

Задает выражение для поиска значения status_code из ответа. Применяется вместе с messageParser.
Используется для:
1. Понимания статуса вызова: успешно/неуспешно (если не успешно, то увеличится errorsToStop)
2. Формирование метрики статуса транзакции
3. Установки http статуса ответного сообщения на http заглушке

Пример для messageParser=header: "statusCodeTag": "mystatus_code", при условии, что во входящем сообщении есть header c <mystatus_code>333</mystatus_code>, в этом случае statusCode = 333


Пример:

204

Длительность бездействия (sleep)

Тип: string or integerФормат: expression

Длительность бездействия. Обязательный параметр шага SLEEP. В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запуске шага

Пример:

10s

Конфигурация k8s-шагов (k8s)

Тип: object

Блок специфических настроек шагов тестирования для stepType = K8S_*

Количество загрузок (applyCount)

Тип: string or integerФормат: expression

Количество выполнений загрузки ресурсов шага K8S_APPLY

Пример:

countCm

Размер пакета (packageSize)

Тип: integer Значение по умолчанию: "10"

Размер пакета постепенной работы с ресурсами. Используется для шага action=K8S_APPLY|K8S_DELETE|K8S_CHECK|K8S_AWAIT_CONDITION|K8S_CHANGE. Пример: если необходимо создать 25 ресурсов, то сначала будет создано 10, потом еще 10 и потом оставшиеся 5. При указании packageSize = 1 загрузка будет производиться строго по одному элементу, обеспечивая максимальную контролируемость процесса. Внутри одного пакета ресурсы обрабатываются последовательно.

Пример:

10

Таймаут пакета (packageTimeout)

Тип: string or integerФормат: expression Значение по умолчанию: "10s"

Таймаут на обработку пакета. В случае если время обработки пакета будет превышено, оставшиеся ресурсы в пакете обработаны не будут. Используется для шага action=K8SAPPLY|K8SDELETE|K8SCHECK|K8SAWAITCONDITION|K8SCHANGE. В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запуске шага

Пример:

10s

Типы ресурсов (resourceTypes)

Тип: array

Типы ресурсов для шагов K8S_DELETE, K8S_CHECK, K8S_CHANGE, K8S_AWAIT_CONDITION

Тип элементов массива:

Тип ресурса (resourceType)

Тип: object

Тип k8s-ресурса

ApiVersion ресурса (apiVersion)

Тип: string
Пример:

apps/v1

Kind ресурса (kind)

Тип: string
Пример:

ConfigMap

Селектор по меткам (labelSelector)

Тип: object

Селектор по меткам для шагов K8S_DELETE, K8S_CHECK, K8S_CHANGE, K8S_AWAIT_CONDITION, K8S_RESTART_PODS. Селектор меток состоит из нескольких пар key-value, ресурс должен обладать всеми указанными метками

Пример:

app.kubernetes.io/managed-by: sytester

Все дополнительные атрибуты должны соответствовать следующей схеме

Тип: string

Селектор по имени (nameSelector)

Тип: string

Селектор имени выполняет выборку строго по заданном имени ресурса


Пример:

sleep-http-stub

Ограничение количества выгружаемых ресурсов (limit)

Тип: integer Значение по умолчанию: "10"

С помощью атрибута limit можно ограничить количество выгружаемых ресурсов.

Пример:

10

Конфигурации проверок (checks)

Тип: array

Конфигурации проверок шага K8S_CHECK

Тип элементов массива:

Конфигурация проверки ресурсов (k8sCheckConfig)

Тип: object

Проверяется соответствие значения полученного по Jsonpath ожидаемому

Псевдоним проверки (alias)

Тип: string

Псевдоним проверки, под котором она идентифицируется в отчете


Пример:

CPU

Jsonpath (jsonpath)

Тип: string

JsonPath, по которому выполняется поиск проверяемого свойства ресурса


Пример:

$.status.phase

Ожидаемое значение (expectedResult)

Тип: string

Ожидаемый результат применения JsonPath


Пример:

Running

Действие (failAction)

Тип: enum (of string)

Действие при невыполнении условия. STOP — остановка тестового плана,
CONTINUE — переход на следующую итерацию текущего цикла,
BREAK — завершение выполнения текущего цикла.
Если поле не указано, то текущий шаг пошагового тестирования (type=STEPS) автоматически завершается.
Значения NONE и WARN устаревшие. При этих значениях поведение аналогично незаданному значению

Возможные значения:

  • "NONE"
  • "WARN"
  • "STOP"
  • "CONTINUE"
  • "BREAK"
Пример:

STOP

Конфигурации условий (conditions)

Тип: array

Конфигурации условий шага K8S_AWAIT_CONDITION

Тип элементов массива:

Ожидаемое условие (k8sConditionConfig)

Тип: object

Проверяется соответствие значения полученного по Jsonpath ожидаемому в течение заданного таймаута

Псевдоним условия (alias)

Тип: string

Псевдоним условие, под котором оно идентифицируется в отчете


Пример:

CPU

Jsonpath (jsonpath)

Тип: string

JsonPath, по которому выполняется поиск проверяемого свойства ресурса


Пример:

$.status.phase

Ожидаемое значение (expectedResult)

Тип: string

Ожидаемый результат применения JsonPath


Пример:

Running

Таймаут ожидания (timeout)

Тип: string or integerФормат: expression

Таймаут на ожидание выполнения условия. По умолчания ожидание происходит бесконечно. В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запуске шага

Пример:

10s

Действие при таймауте (timeoutAction)

Тип: enum (of string)

STOP — остановка тестового плана,
CONTINUE — переход на следующую итерацию текущего цикла,
BREAK — завершение выполнения текущего цикла.
Если поле не указано, то текущий шаг пошагового тестирования (type=STEPS) автоматически завершается.
Значения NONE и WARN устаревшие. При этих значениях поведение аналогично незаданному значению

Возможные значения:

  • "NONE"
  • "WARN"
  • "STOP"
  • "CONTINUE"
  • "BREAK"
Пример:

STOP

Конфигурации изменений (changes)

Тип: array

Конфигурации изменений шага K8S_CHANGE

Тип элементов массива:

Изменение (k8sChangeConfig)

Тип: object

Изменение по jsonpath на заданное значение

Псевдоним изменения (alias)

Тип: string

Псевдоним изменения, под котором оно идентифицируется в отчете


Пример:

CPU

Jsonpath (jsonpath)

Тип: string

JsonPath, по которому выполняется поиск изменяемого свойства ресурса


Пример:

$.status.phase

Значение (value)

Тип: string

Новое значение свойства


Пример:

${newValue}

Конфигурация ожидания удаления (awaitDeleted)

Тип: object

Ожидание отсутствия удаленных ресурсов в Kubernetes-кластере шага K8S_DELETE

Таймаут ожидания (timeout)

Тип: string or integerФормат: expression

Таймаут ожидания отсуствие ресурсов. По умолчания ожидание происходит бесконечно. В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запуске шага

Пример:

10s

Действие при таймауте (timeoutAction)

Тип: enum (of string)

STOP — остановка тестового плана,
CONTINUE — переход на следующую итерацию текущего цикла,
BREAK — завершение выполнения текущего цикла.
Если поле не указано, то текущий шаг пошагового тестирования (type=STEPS) автоматически завершается.
Значения NONE и WARN устаревшие. При этих значениях поведение аналогично незаданному значению

Возможные значения:

  • "NONE"
  • "WARN"
  • "STOP"
  • "CONTINUE"
  • "BREAK"
Пример:

STOP

Конфигурация перезапуска подов (podRestart)

Тип: object

Конфигурация перезапуска подов шага K8SRESTARTPODS

Процент (percentage)

Тип: number

Процент подов, которых необходимо перезапустить

Пример:

10.0

Таймаут ожидания удаления (awaitDeletedTimeout)

Тип: string or integerФормат: expression

Таймаут ожидания удаления пода перед его созданием при рестарте. В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запуске шага

Пример:

10s

Флаг автоматической очистки (cleaningAfter)

Тип: boolean

Необходимость удаления созданных ресурсов шага K8S_APPLY после завершения тестового плана. По умолчанию очистка выключена

Пример:

true

Настройки цикла (loop)

Тип: object

Настройки шага цикла. Обязательный параметр шага LOOP. Шаг LOOP выполняет итерации по заданной переменной (loop.var) и последовательно выполняет действия тела цикла (loop.body)

Настройки переменной цикла (var)

Тип: object

Настройки переменной цикла

Имя переменной (name)

Тип: string
Пример:

var

Начальное значение (start)

Тип: string or integerФормат: expression

Выражение

Пример:

startIndex

Конечное значение (finish)

Тип: string or integerФормат: expression

Выражение

Пример:

finishIndex

Шаг изменения переменной (step)

Тип: string or integerФормат: expression Значение по умолчанию: "1"

Число, на которое будет увеличиваться переменной после каждого шага

Пример:

1

Тело цикла (body)

Тип: array of string

Перечисление названий последовательно выполняющихся шагов

Массив должен содержать, как минимум 1 элементов

Тип элементов массива:

Тип: string
Пример:

sleep

Установка значения переменной (setVar)

Тип: object

Установка значения переменной. Обязательный параметр шага SET_VAR. Для задания типа переменной необходимо задать значение в определенный атрибут (для целочисленного - intValue и т.п.). Используется значение в порядке приоритета int > float > boolean > string

Примеры:

intValue: 12
name: intVar
stringValue: Hello world!
name: stringVar

Название переменной (name)

Тип: string
Пример:

countCm

Целочисленное значение (intValue)

Тип: integer
Пример:

10

Вещественное значение (doubleValue)

Тип: number
Пример:

1.0

Логическое значение (booleanValue)

Тип: boolean
Пример:

True

Строковое значение (stringValue)

Тип: string
Пример:

abc

(value)

Тип: object

Подчиненные шаги (children)

Тип: array of string

Список названий шагов, которые будут вызываться последовательно. Обязательный параметр шага SERIAL

Массив должен содержать, как минимум 1 элементов

Тип элементов массива:

Тип: string
Пример:

post-step

Настройки MQ-транспорта (mq)

Тип: object

Блок специфических настроек шагов тестирования для protocol=MQ шагов PUT | GET

Очередь (queue)

Тип: string

Имя очереди для выполнения шага.
Может содержать следующие имена через разделительный символ @:
1. Очередь для отправки
2. Очередь для ответов (ReplyTOQ, будет записано в MQMD заголовок сообщения)
3. Менеджер для ответа (ReplyToQManager, будет записано в MQMD заголовок сообщения)
Если значение явно не задано и шаг PUT, то используется очередь request блока transport, если шаг GET - очередь response блока transport


Примеры:

SYTESTER.STEPS
SYTESTER.STEPS@ReplyTOQ@ReplyTOQManager

Настройки транспорта Kafka (kafka)

Тип: object

Блок специфических настроек шагов тестирования для protocol=Kafka шагов PUT | GET | PUT_GET

Количество читающих потоков (readThreads)

Тип: integer Значение по умолчанию: "1"

Число потоков для чтения ответов из топика. Каждый поток создаёт отдельный KafkaConsumer, Kafka делит партиции топика между ними и читает параллельно. Значение не должно превышать количество партиций топика. Если значение не задано - будет использоваться значение writeThreads.

Пример:

10

Настройки TPS-нагрузки (tpsLoader)

Тип: object

Настройки шага TPS-нагрузки. Обязательный параметр шага TPS_LOADER. В шаге с заданной длительностью выполняется другой шаг с частотой контролируемой настройкой TPS

Пример:

tps:
  start: 1
  finish: 10
  increment:
    value: 1
    rate: 3s
duration: 30s
workload: http-put
threadCount: '10'
asyncMode: true

Настройки TPS (tps)

Тип: object

Настройки интервала TPS

Начальный TPS (start)

Тип: string or integerФормат: expression

Начальное количество запросов в секунду

Пример:

100

Конечный TPS (max)

Тип: string or integerФормат: expression

Максимальное количество запросов в секунду

Пример:

100

Значение инкремента (stepSize)

Тип: string or integerФормат: expression Значение по умолчанию: "1"

Шаг увеличения нагрузки

Пример:

100

Темп (stepTime)

Тип: string or integerФормат: expression Значение по умолчанию: "1s"

Темп выполнения инкремента TPS. В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запуске шага

Пример:

10s

Длительность (duration)

Тип: string or integerФормат: expression

Длительность выполнения TPS-нагрузки. В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запуске шага

Пример:

10s

Рабочая нагрузка (workload)

Тип: string

Название выполняемого шага


Пример:

step

Количество потоков (threadCount)

Тип: string or integerФормат: expression Значение по умолчанию: "1"

Количество потоков выполняющих нагрузку. По умолчанию нагрузка выполняется в 1 потоке. Влияет только на шаги с asyncMode = false.

Пример:

10

(frameSize)

Тип: string
Пример:

5s

Переключатель модели подачи нагрузки (asyncMode)

Тип: string or integerФормат: expression Значение по умолчанию: "true"

Параметр влияет на принцип генерации запросов. При значении параметра, равным true, запросы отправляются с заданной скоростью, независимо от того, получены ли ответы на предыдущие запросы (неблокирующий вызов). Иначе - каждый поток-генератор отправляет следующий запрос только после получения ответа на предыдущий (блокирующий вызов). По умолчанию true.

Пример:

false

Количество ошибок (errorsToStop)

Тип: integer Значение по умолчанию: 100

Максимальное количество ошибок при выполнении нагрузки, после которых шаг завершается.

Пример:

100

Отсрочка остановки по количеству ошибок (ignoreErrorsDuringWarmup)

Тип: string or integerФормат: expression

Длительность, во время которой не учитываются ошибки способные остановить нагрузку (errorsToStop). В качестве значения можно задать как статичное, так и вычисляемое в выражении значение. Статичное значение или результат выражения должен удовлетворять формату: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Значение вычисляется при каждом запуске шага

Пример:

10s

Действие при ошибке выполнения шага (onError)

Тип: enum (of string)

Опциональное действие при ошибке. Выполняемый шаг прерывается в любом случае.
STOP — остановка тестового плана,
CONTINUE — переход на следующую итерацию текущего цикла,
BREAK — завершение выполнения текущего цикла.
Если поле не указано, то текущий шаг пошагового тестирования (type=STEPS) автоматически завершается.
Значения NONE и WARN устаревшие. При этих значениях поведение аналогично незаданному значению

Возможные значения:

  • "NONE"
  • "WARN"
  • "STOP"
  • "CONTINUE"
  • "BREAK"

Наблюдатели (observers)

Тип: array

Список наблюдателей, выполняющих мониторинг, при работе шага

Тип элементов массива:

Наблюдатель шага (stepObserver)

Тип: object

Наблюдатель, которые выполняет мониторинг определенного условия при работе шага тестирования

Условие (condition)

Тип: string or integerФормат: expression

Наблюдаемое условие шага

Пример:

"_steps['tps'].tps.current > 1000"

Действие при выполнении условия (action)

Тип: enum (of string)

STOP — остановка тестового плана,
CONTINUE — переход на следующую итерацию текущего цикла,
BREAK — завершение выполнения текущего цикла.
Если поле не указано, то текущий шаг пошагового тестирования (type=STEPS) автоматически завершается.
Значения NONE и WARN устаревшие. При этих значениях поведение аналогично незаданному значению

Возможные значения:

  • "NONE"
  • "WARN"
  • "STOP"
  • "CONTINUE"
  • "BREAK"
Пример:

STOP

(updaters)

Тип: array

Тип элементов массива:

(stepUpdater)

Тип: object

(output)

Тип: string

(type)

Тип: enum (of string)

Возможные значения:

  • "MAX"
  • "MIN"
  • "AVG"
  • "LAST"

(expression)

Тип: string

Выражение (expression)

Тип: string or integerФормат: expression

Выражение выполняемое в шаге EXPRESSION

Пример:

clean('http-request')

(interrupt)

Тип: boolean

(timer)

Тип: object

(output)

Тип: string

(catchError)

Тип: object

(expression)

Тип: string

(finallySteps)

Тип: string

Метаданные, пользовательские атрибуты (metadata)

Тип: object

Объект для хранения пар ключ-значение клиента.
Содержимое объекта полностью контролируется пользователем и не влияет на работу тестового плана

Пример:

metadata:
  firstProperty: 10
  secondProperty: string

Все дополнительные атрибуты должны соответствовать следующей схеме

(object)

Тип: object

Количество подов (podCount)

Тип: integer Значение по умолчанию: 0

Количество генераторов для распределенной работы тестового плана

Пример:

1

Конфигурации транспортов (transports)

Тип: array

Тип элементов массива:

Конфигурация транспорта (transport)

Тип: object

Блок транспорта, описывающий параметры подключения для тестовых планов

Пример:

name: transport1
protocol: HTTP
host: localhost
port: 8080
request: /endpoint
http:
  method: GET

Название транспорта (name)

Тип: string Значение по умолчанию: "transport_name"

Произвольное имя транспорта


Пример:

http-transport

Протокол транспорта (protocol)

Тип: enum (of string)

Возможные значения:

  • "HTTP"
  • "GRPC"
  • "MQ"
  • "KAFKA"
  • "ACTIVE_MQ"
  • "POSTGRES"
  • "ARTEMIS"
  • "KUBEAPI"
Пример:

HTTP

Хост транспорта (host)

Тип: string

IP адрес или доменное имя хоста для подключения. Для протокола HTTP может быть полным url. Обязательный параметр, кроме type=STUB


Примеры:

127.0.0.1
sytester-https-stub
http://sytester-https-stub:8080/endpoint
https://sytester-https-stub/endpoint

Порт подключения (port)

Тип: integer

Для type=STUB и protocol=HTTP порт задается через тэг ConfigMap stubHttpDefaultServerPort, см. Руководство по установке

Пример:

6101

Запрос (request)

Тип: string

Варианты использования:
1. Для protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS - имя очереди
2. Для protocol=GRPC - имя метода
3. Для protocol=HTTP - конечная точка
Обязательный параметр для type=GENERATOR (кроме HTTP протокола)
Для type=STUB с protocol=HTTP можно задавать шаблонные конечные точки с переменными в path и query params


Примеры:

topic_rq
/request
/request/${var}?param=${param}

Ответ (response)

Тип: string

Для type=GENERATOR/STEPS - это необязательный параметр, очередь/топик для ответа, указывается когда нужна корреляция ответов с запросами для protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS (для синхронных сценариев). В других случаях не заполняется.
Для type=STUB - это обязательный параметр, очередь/топик для ответа.


Пример:

topic_rs

Логин (login)

Тип: string

Логин, при необходимости авторизации для подключения к серверу


Пример:

login

Пароль (password)

Тип: string

Пароль, при необходимости авторизации для подключения к серверу


Пример:

password

Настройки SSL (ssl)

Тип: object

Блок настройка SSL-подключения

Файл CA (caFile)

Тип: string

Путь до файла корневого сертификата (для JKS)


Пример:

path

Пароль CA (caPass)

Тип: string

Пароль к файлу доверенных ключей (для JKS)


Пример:

password

Файл клиентского хранилища (keyFile)

Тип: string

Путь до файла с клиентским хранилищем (для JKS и сертификатов)


Пример:

path

Пароль клиентского хранилища (keyPass)

Тип: string

Пароль к клиентскому хранилищу (для JKS)


Пример:

password

Пароль к файлу ключей шифрования (keyFilePass)

Тип: string

Пароль к файлу ключей шифрования (для JKS и одиночного сертификата)


Пример:

password

Файл клиентского сертификата (certFile)

Тип: string

Файл клиентского сертификата (для одиночного сертификата)


Пример:

path

Файл цепочки сертификатов (chainFile)

Тип: string

Файл с цепочкой промежуточных CA сертификатов, подписавших клиентский/серверный сертификат (для CRT/PEM). Вместо цепочки может использоваться файл корневого сертификата.


Пример:

path

Идентификатор канала (peerName)

Тип: string

Идентификатор канала при подключении по SSL (для protocol=MQ)


Пример:

MQ_CHANNEL

Настройки HTTP (http)

Тип: object

Блок специфических настроек тестового плана при protocol=HTTP

HTTP-метод (method)

Тип: string Значение по умолчанию: "POST"

Пример:

GET

Настройки MQ (mq)

Тип: object

Блок специфических настроек тестового плана при protocol=MQ|ACTIVE_MQ|ARTEMIS

Менеджер очереди (queueManager)

Тип: string

Название менеджера очереди


Пример:

MQ_MANAGER

Канал (channel)

Тип: string

Канал подключения


Пример:

MQ_CHANNEL

Настройки KAFKA (kafka)

Тип: object

Блок специфических настроек тестового плана при protocol=KAFKA

Свойства запроса (requestProperties)

Тип: object

Параметры продюсера Kafka. Название параметров и их описание доступно по ссылке: https://docs.confluent.io/platform/current/installation/configuration/producer-configs.html

Все дополнительные атрибуты должны соответствовать следующей схеме

Тип: string

Свойства ответа (responseProperties)

Тип: object

Параметры консьюмера Kafka. Название параметров и их описание доступно по ссылке: https://docs.confluent.io/platform/current/installation/configuration/producer-configs.html

Все дополнительные атрибуты должны соответствовать следующей схеме

Тип: string

Настройки KUBEAPI (k8s)

Тип: object

Блок специфических настроек тестового плана при protocol=KUBEAPI

Токен аутентификации для доступа к Kubernetes API (token)

Тип: string

Параметр определяет токен, используемый для выполнения аутентифицированных запросов к Kubernetes API (kube-apiserver).
Поддерживаются следующие способы задания:
1. Значение JWT-токена в кодировке Base64URL (например: eyJhb...).
2. Путь к файлу с токеном в файловой системе пода (например, при использовании Secman).
3. Имя ключа, содержащего токен, в секрете Kubernetes.
4. Если параметр не задан, используется токен Service Account Kubernetes.


Примеры:

eyJhb...
/k8s/token
token

Неймспейс (namespace)

Тип: string Значение по умолчанию: "default"

Название пространства имен в кластере Kubernetes


Пример:

default

Таймаут соединения (connectionTimeout)

Тип: string or integerФормат: 1d2h3m4s5ms

Таймаут на подключение к Kubernetes. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Если не задавать, используется значение HTTP-клиента Fabric8 (10 секунд)

Пример:

5h35m10s

Таймаут запросов (requestTimeout)

Тип: string or integerФормат: 1d2h3m4s5ms

Таймаут запросов чтения ресурсов Kubernetes. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Если не задавать, используется значение HTTP-клиента Fabric8 (10 секунд)

Пример:

5h35m10s

Таймаут запросов загрузки (uploadRequestTimeout)

Тип: string or integerФормат: 1d2h3m4s5ms

Таймаут запросов загрузки ресурсов Kubernetes. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. Если не задавать, используется значение HTTP-клиента Fabric8 (120 секунд)

Пример:

5h35m10s

Сертификаты (certs)

Тип: object

Сертификаты используемые для подключения к k8s

Корневой сертификат (caCert)

Тип: string

Путь до файла корневого сертификата


Пример:

path_to_cert

Клиентский сертификат (clientCertFile)

Тип: string

Путь до файла клиентского сертификата


Пример:

path_to_cert

Клиентский приватный ключ (clientKeyFile)

Тип: string

Путь до файла c приватным ключом


Пример:

path_to_key

Настройки POSTGRES (postgres)

Тип: object

Блок специфических настроек тестового плана при protocol=POSTGRES

Максимальное количество подключений (maximumPoolSize)

Тип: integer

Максимальное количество подключений в пуле базы данных

Пример:

10

Минимальное количество простоя соединений (minimumIdle)

Тип: integer

Минимальное количество простоя соединений, которое поддерживает пул базы данных

Пример:

5

Время ожидания (connectionTimeout)

Тип: integer

Время ожидания в пуле базы данных в мс

Пример:

30000

Максимальное время жизни (maxLifetime)

Тип: integer

Максимальное время жизни подключения в пуле в мс

Пример:

1800000

Время жизни подключения (idleTimeout)

Тип: integer

Время жизни подключения в пуле базы данных в мс

Пример:

600000

Ограничение количества возвращаемых строк (limit)

Тип: integer

Ограничение количества возвращаемых строк

Пример:

100

Конфигурация шифрования данных (encryption)

Тип: object

Блок конфигурации шифрования/дешифрования данных для транспорта
publicKeyPath - путь до сертификата, которым будет проведено шифрование
privateKeyPath - путь до приватного ключа, которым будет проведено дешифрование (также используется для подписи сообщения в функции jwtSignRS256)
keyId - идентификатор ключа, который будет добавлен в публичную часть шифрованного сообщения

Включить шифрование (enabled)

Тип: boolean Значение по умолчанию: false

Флаг включения шифрования данных при отправке и дешифрования при получении

Путь к публичному ключу (publicKeyPath)

Тип: string

Путь к файлу с публичным ключом (сертификатом) для шифрования данных


Пример:

certs/crt.pem

Путь к приватному ключу (privateKeyPath)

Тип: string

Путь к файлу с приватным ключом для дешифрования данных


Пример:

certs/key.pem

ID ключа (keyId)

Тип: string

Уникальный идентификатор ключа (опционально)


Пример:

key-123

Фильтр потребителя (filter)

Тип: string

Фильтр определяет какие сообщения будет прочитаны потребителем (для синхронного генератора из топика response, для заглушки — request). Поддерживается только протокол KAFKA


Примеры:

request.headers["recipientAgentName"] == "sber.support_platform.channel_agent"
jsonpath(request.body, "$.result.status.state") == "completed"

Конфигурации тестовых данных (testdatas)

Тип: array

Тип элементов массива:

Конфигурация тестовых данных (testdata)

Тип: object

Блок тестовых данных, описывающий содержимое тестовых сообщений. Может содержать несколько тестовых данных, ключом для которых является тег name

Пример:

name: testdata1
body: '{ "text": "Hello world" }'
headers:
  Content-Type: application/json
  Accept: application/json

Имя тестовых данных (name)

Тип: string Значение по умолчанию: "testdata_name"

Произвольное имя тестовых данных


Пример:

testdata_name

Тело сообщения (body)

Тип: string

Для protocol=MQ в качестве тела сообщения можно задать IBM MQ message, включающее MQMD и MQRFH2 заголовки.
В теле сообщения в значении тегов можно использовать переменные.
Обязательный параметр при type=GENERATOR.
Необязательный параметр при type=STUB, по умолчанию ответом будет полученный запрос.


Пример:

"{'request': '${rq_uid}'}"

Заголовки тестовых данных (headers)

Тип: object

Блок, описывающий заголовки сообщения, задаются в виде key:value (key - название тега, value - значение)

Пример:

application/json

Все дополнительные атрибуты должны соответствовать следующей схеме

Тип: string

Разделитель (splitter)

Тип: string

Особенность grpc streaming, разделитель для пакета сообщений


Пример:

";" 

Конфигурация сравнения сообщений (messageCompare)

Тип: object

Применяется для type = STEPS.
В данном блоке задается эталон заголовка и тела сообщения для их сравнения с полученными после выполнения шага.
Проверка может быть настроена в следующих вариантах:
1. steps[].type=GET (получение сообщения на шаге) при protocol=MQ|KAFKA|ACTIVE_MQ|ARTEMIS|HTTP
2. steps[].type=PUT (отправка сообщения на шаге) при protocol=HTTP|GRPC

Эталоны заголовков (compareHeaders)

Тип: object

Задается эталон заголовка в формате key:value. Допустима проверка множества заголовков, каждый задается отдельным выражением key:value. Если эталон задан, то отсутствие какого-либо из перечисленных эталонных заголовков в полученном сообщении или обнаружение расхождения приведет к остановке тестового плана

Пример:

some-value

Все дополнительные атрибуты должны соответствовать следующей схеме

Тип: string

Эталон сообщения (compareBody)

Тип: string

Расхождение с полученным сообщением приведет к остановке тестового плана


Пример:

<messageResponse><RqUID>${rq_uid}</RqUID></messageResponse>

Игнорируемые теги (ignoreBodyTags)

Тип: string

Перечисление тегов полученного сообщения для которых не будет производиться сравнение с эталоном тела сообщения. Применяется для сообщений в формате XML или JSON.


Пример:

['RqUID']

Конфигурация метрик (metrics)

Тип: object

Настройки отправки метрик (sendMetrics)

Тип: object

Блок настройки метрик для push модели. Используется для отправки метрик в kafka либо на любой outputs, который поддерживается fluent-bit (для построения расширенных отчетов, например в Grafana)

Название сервиса метрик (metricsServiceName)

Тип: string

Возможность задать имя метрики. Применяется при type=GENERATOR|STUB. Значение по умолчанию testplan-name.


Пример:

your_service

Тип метрик (type)

Тип: array of enum (of string)

Тип метрик с которыми будет работать тестовый план - Pull метрики (формат Prometheus) или Push метрики (формат Kafka).

Тип элементов массива:

Тип: enum (of string)

Возможные значения:

  • "PUSH"
  • "PULL"
Пример:

PUSH

Настройки мониторинга (getMetrics)

Тип: object

Настройки мониторинга метрик во время выполнения тестового плана

Метрики мониторинга (values)

Тип: array

Массив должен содержать, как минимум 1 элементов

Тип элементов массива:

Метрика мониторинга (metric)

Тип: object

Тип метрики (type)

Тип: enum (of string)

PROMETHEUS - метрика из Prometheus
K8S - метрика Kubernetes-приложения (RAM, CPU)

Возможные значения:

  • "PROMETHEUS"
  • "K8S"

Название метрики (alias)

Тип: string
Пример:

CPU

Запрос PROMETHEUS-метрики (query)

Тип: string

PromQL-запрос для получения PROMETHEUS-метрики.
Поддерживаются только запросы с типом результата vector, если возвращается несколько значений, то используется первый элемент


Пример:

rate(process_cpu_seconds_total[1m])

Периодичность запроса метрики (period)

Тип: string or integerФормат: 1d2h3m4s5ms Значение по умолчанию: "10s"

Периодичность запроса метрики. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд

Пример:

5h35m10s

Имя K8S-deployment (deployment)

Тип: string

Имя контейнера (container)

Тип: string

Имя контейнера K8S-pod, по которому собирается метрика. Если не задано, метрика суммируется по всем контейнерам


Тип K8S-метрики (k8sMetricType)

Тип: enum (of string)

Возможные значения:

  • "CPU"
  • "MEMORY"

(source)

Тип: string

Правила проверки метрик (conditionRules)

Тип: array

Тип элементов массива:

Правило проверки метрик (conditionRule)

Тип: object

Правило проверки метрик

Условие (condition)

Тип: string

Условие срабатывания (использует alias метрики с математическим выражением)


Пример:

CPU > 0.9 && RAM > 200

Действие (action)

Тип: enum (of string)

Действие при выполнении условия:
STOP — остановка тестового плана,
CONTINUE — переход на следующую итерацию текущего цикла,
BREAK — завершение выполнения текущего цикла.
Если поле не указано, то текущий шаг пошагового тестирования (type=STEPS) автоматически завершается.
Значения NONE и WARN устаревшие. При этих значениях поведение аналогично незаданному значению

Возможные значения:

  • "NONE"
  • "WARN"
  • "STOP"
  • "CONTINUE"
  • "BREAK"
Пример:

STOP

Период ожидания (pendingPeriod)

Тип: string or integerФормат: 1d2h3m4s5ms

Время, в течение которого условие должно выполняться, чтобы сработало action. Поддерживаются только статичные значения. Формат: d — дни, h — часы, m — минуты по умолчанию, s — секунды, ms — миллисекунды. Целое число трактуется как количество секунд. По умолчанию фиксируется первое выполнение условия

Пример:

5h35m10s

Источник метрик (source)

Тип: object

Транспорт мониторинга (transport)

Тип: string

Ссылка на транспорт, где сконфигурирован источник метрик


Пример:

prometheus-transport

Конфигурация формирования автоматического отчета (reports)

Тип: object

Блок настройки формирования автоматических отчетов по результатам тестирования. Отчет будет доступен в zip архиве по кнопке скачать на странице отчета тестового плана

Флаг формирования (create)

Тип: boolean

true - запустить создание отчета после завершение тестового плана, false - не запускать

Пример:

true

Конфигурация Git (git)

Тип: object

Url для выкладки отчета в git

Пример:

url

URL Git (url)

Тип: string

Конфигурация Grafana (grafana)

Тип: object

Блок настроек интеграции с grafana для добавления дашбордов в отчеты

Дашборды (dashboards)

Тип: array

Список дашбордов, которые необходимо добавить в отчет

Тип элементов массива:

Конфигурация дашборда (dashboardConfig)

Тип: object

Конфигурация дашборда, который необходимо добавить в шаблон

Имя дашборда (name)

Тип: string

Имя дашборда, под которым он будет отображаться в отчете


Grafana URL (url)

Тип: string

URL адрес дашборда, который необходимо выгрузить в отчет.
Доступны следующие переменные:
* ${startTimeStamp} - начальное время исполнения тестового плана. Обязательный параметр для автоматического формирования промежутка времени, когда выполнялось тестирование
* ${endTimeStamp} - конечное время исполнения тестового плана. Обязательный параметр для автоматического формирования промежутка времени, когда выполнялось тестирование
* ${metricsServiceName} - metricsServiceName, указанный в тестовом плане в блоке metrics. Необязательный параметр
* ${podNames} - список подов, по которым выгружать графики. Для каждого пода, указанного в списке подов podNames, будет выгружен отдельный график
Используется для скачивания нескольких отдельных графиков для одного дашборда, но с разными значения podName


Примеры:

http://vm-ssm-sy-dapp-253.vdc04.sy.dev.sbt:30763/d/sHE-zNzWz/sytester?orgId=1&from=${startTimeStamp}&to=${endTimeStamp}&var-service=${metricsServiceName}&width=3000&height=4000&autofitpanels
http://vm-ssm-sy-dapp-253.vdc04.sy.dev.sbt:30763/d/pod/kubernetes-compute-resources-pod?orgId=1&var-datasource=prometheus-gatm&var-cluster=http:%2F%2Fvm-ssm-sy-dapp-252.vdc04.sy.dev.sbt%2F%2F&var-namespace=syte-nt&var-pod=${podNames}&var-displayPodLimitRequest=and&var-setMemoryPercentage=None&var-setCPUPercentage=None&from=${startTimeStamp}&to=${endTimeStamp}&width=3000&height=4000&autofitpanels

Тип дашборда (type)

Тип: enum (of string)
  • SYTESTER - стандартный дашборд sytester с графиком подачи нагрузки (tps) и latency
  • UTILIZATION - дашборд утилизации
    Если указан без параметра podNames, то будет выгружена утилизация по подам sytester, на которых исполнялся тестовый план.
    Если указан с параметром podNames, то будет выгружена утилизация по подам, которые указаны в списке podNames

Возможные значения:

  • "SYTESTER"
  • "UTILIZATION"

Список подов (podNames)

Тип: array of string

Список подов, для каждого из которых будет выгружен график grafana при type=UTILIZATION. По умолчанию sytester сам определяет список подов, на которых исполнялся тестовый план. Поддерживаются регулярные выражения

Тип элементов массива:

Тип: string

Список k8s-конфигураций (k8s)

Тип: array

Список выгружаемых ресурсов (Pod, Deployment, ConfigMap, ...)

Тип элементов массива:

Конфигурация k8s (reportK8sConfig)

Тип: object

Конфигурация выгрузки k8s-ресурсов

Список ресурсов (resources)

Тип: array

Тип элементов массива:

Выгружаемый ресурс (resourceConfig)

Тип: object

Конфигурация выгрузки k8s-ресурса. Доступна выгрузка либо по имени (блок name), либо по меткам (блок labelSelector)

Имя ресурса (name)

Тип: string

Селектор по меткам (labelSelector)

Тип: object

Все дополнительные атрибуты должны соответствовать следующей схеме

Тип: string

Тип ресурса (resourceType)

Тип: object

Тип k8s-ресурса

ApiVersion ресурса (apiVersion)

Тип: string
Пример:

apps/v1

Kind ресурса (kind)

Тип: string
Пример:

ConfigMap

Транспорт (transport)

Тип: string

Имя транспорта k8s, который использовать для доступа к кластеру k8s для скачивания yaml артефактов


Дополнительная информация (info)

Тип: object

Блок определения дополнительной информации о тесте

Пример:

component: polm
release: '5.4'
type: max

Компонент (component)

Тип: string

Идентификатор тестируемого компонента


Релиз (release)

Тип: string

Номер релиза


Тип тестирования (type)

Тип: string

Тип теста, например max - поиск максимума


Сравниваемые релизы (comparedReleases)

Тип: array of string

Список релизов для сравнительного отчета. Если в блоке k8s указаны Pod'ы, то будет построена сравнительная таблица по ресурсам контейнеров

Тип элементов массива:

Тип: string

Конфигурация тестируемого сервиса (service)

Тип: object

Конфигурация K8S-сервиса (k8s)

Тип: object

(service)

Тип: string

(namespace)

Тип: string

OpenAPI-схема тестируемого сервиса (openapi)

Тип: object

OpenAPI-endpoint тестируемого сервиса (openapiEndpoint)

Тип: string

Порт тестируемого сервиса (port)

Тип: integer

Конфигурация стратегий (strategies)

Тип: object

Конфигурация стратегии измерения длительности запуска (startupTime)

Тип: object

Таймаут запуска (timeout)

Тип: string Значение по умолчанию: "1m"

Таймаут запуска тестируемого сервиса


Конфигурация стратегии поиска максимума (searchMax)

Тип: object

Конфигурация потребляемых ресурсов (resourcesProps)

Тип: object

Процент потребления CPU (cpuPercentage)

Тип: number Значение по умолчанию: 0.9

Процент потребления RAM (ramPercentage)

Тип: number Значение по умолчанию: 0.9

Средняя latency (avgLatency)

Тип: string Значение по умолчанию: "3s"

Ограничение средней latency тестируемого сервиса


Конфигурация нагрузки (tps)

Тип: object

Начальная нагрузка (start)

Тип: number Значение по умолчанию: 1.0

Конечная нагрузка (finish)

Тип: number Значение по умолчанию: 100.0

Шаг нагрузки (stepSize)

Тип: number Значение по умолчанию: 1.0

Длительность шага нагрузка (stepTime)

Тип: string Значение по умолчанию: "10s"

Длительность (duration)

Тип: string Значение по умолчанию: "20m"

Длительность стратегии поиска максимума


Процент ошибки (errorPercentage)

Тип: number

Ограничение на процент ошибок ответов тестируемого сервиса

Конфигурация стратегии изменения количества реплик (changeReplicas)

Тип: object

Минимальное количество реплик (minReplicas)

Тип: integer Значение по умолчанию: 1

Максимальное количество реплик (maxReplicas)

Тип: integer Значение по умолчанию: 10

Шаг изменения количества реплик (replicasIncrement)

Тип: integer Значение по умолчанию: 1

Нагрузка (tps)

Тип: string Значение по умолчанию: "searchMax.tps * 0.8 * changeReplicas.currentReplicas"

Размер TPS-нагрузки на тестируемый сервис


Конфигурация стратегии изменения размера сообщений (changeMessageSize)

Тип: object

Минимальное количество символов (min)

Тип: integer Значение по умолчанию: 0

Максимальное количество символов (max)

Тип: integer Значение по умолчанию: 1000000

Количество итераций (iterations)

Тип: integer Значение по умолчанию: 10

Нагрузка (tps)

Тип: string Значение по умолчанию: "searchMax.tps * 0.2"

Размер TPS-нагрузки на тестируемый сервис


Конфигурация стратегии изменения потребляемых ресурсов (changeLimits)

Тип: object

Конфигурация изменения CPU (cpu)

Тип: object

Минимальное значение CPU (min)

Тип: string Значение по умолчанию: "baseCpu"

Максимальное значение CPU (max)

Тип: string Значение по умолчанию: "baseCpu * 5"

Конфигурация изменения RAM (ram)

Тип: object

Минимальное значение RAM (min)

Тип: string Значение по умолчанию: "baseRam"

Максимальное значение RAM (max)

Тип: string Значение по умолчанию: "baseRam * 5"

Количество итераций (iterations)

Тип: integer Значение по умолчанию: 10

Нагрузка (tps)

Тип: string Значение по умолчанию: "searchMax.tps * 0.2"

Размер TPS-нагрузки на тестируемый сервис


Таймаут запуска (timeout)

Тип: string Значение по умолчанию: "10m"

Таймаут запуска тестируемого сервиса


Конфигурация стратегии теста стабильности (stability)

Тип: object

Нагрузка (tps)

Тип: string Значение по умолчанию: "searchMax.tps * 0.8"

Размер TPS-нагрузки на тестируемый сервис


Длительность (duration)

Тип: string Значение по умолчанию: "1d"

Длительность стратегии теста стабильности


Метаданные, пользовательские атрибуты (metadata)

Тип: object

Объект для хранения пар ключ-значение клиента.
Содержимое объекта полностью контролируется пользователем и не влияет на работу тестового плана

Пример:

metadata:
  firstProperty: 10
  secondProperty: string

Все дополнительные атрибуты должны соответствовать следующей схеме

(object)

Тип: object Same definition as steps_steps_items_metadata_additionalProperties