Примеры сценариев для нагрузочного тестирования#

Далее будут рассмотрены примеры сценариев для протоколов/технологий: IBM MQ, Active MQ, Artemis MQ, REST, gRPC, Kafka с описанием настроек для каждого конкретного случая.

Генератор IBM MQ, заглушка IBM MQ. Асинхронный режим (роль Оператор)#

Генератор IBM MQ, заглушка IBM MQ

Диаграмма. Схема подачи нагрузки от генератора на заглушку IBM MQ через промежуточный тестируемый сервис/систему.

1) Клиент-генератор подключается к очереди запросов потребителя и эмулирует нагрузку.
2) Тестируемая система/сервис вычитывает сообщение из данной очереди и отправляет сообщение в конечную очередь запроса 
   поставщика.
3) Заглушка вычитывает данное сообщение из конечной очереди запроса поставщика, генерирует и отдает ответ в очередь ответа 
   (обычно в ответ копируется rquid и часть заголовков).
4) Тестируемая система вычитывает сообщение из очереди ответа поставщика и отправляет сообщение в конечную очередь ответа 
   потребителя.
5) Клиент-генератор получает данный ответ и коррелирует его со своим запросом
  1. Получить параметры подключения к IBM MQ со стороны клиента и заглушки

Например:

генератор

генератор

заглушка

заглушка

запрос

ответ

запрос

ответ

менеджер

SBERCLOUD.MQ

SBERCLOUD.MQ

SBERCLOUD.MQ

SBERCLOUD.MQ

канал

CLOUD.SYT

CLOUD.SYT

CLOUD.SYT

CLOUD.SYT

очередь

SYTESTER.IN, SYTESTER.IN.2

SYTESTER.OUT, SYTESTER.OUT.2

SYTESTER.IN, SYTESTER.IN.2

SYTESTER.OUT, SYTESTER.OUT.2

  1. Создать тестовый план под свой сценарий. Пример тестового плана:

mq-gen.json

mq-stub.json

Описание transport, testdata, testplan блоков:

1) В блоке transport указать подключения к менеджерам:
   Для генератора:
       queueManager – имя менеджера, применяется для протокола IBM MQ и Artemis MQ;
       host – адрес сервера, где "развернут" сервер Artemis MQ (например: 10.хх.хх.хх);
       port – порт подключения (например: 1414);
       request – очередь, куда должен отправлять сообщения генератор;
       response – очередь, откуда должен вычитывать ответные сообщения генератор;
       protocol – наименование протокола;
       channel – Для MQ указывается канал подключения (например: SC.ITECO), применяется для протокола IBM MQ, Artemis MQ, REST.
   Для заглушки:
       queueManager – имя менеджера, применяется для протокола IBM MQ и Artemis MQ;
       host – адрес сервера, где "развернут" сервер IBM MQ (например: 10.хх.хх.хх);
       port – порт подключения (например: 1414);
       request – очередь, откуда должна вычитывать сообщения заглушка;
       response – очередь, куда должна отправлять ответные сообщения заглушка;
       protocol – наименование протокола;
       channel – Для MQ указывается канал подключения (например: SC.ITECO), применяется для протокола IBM MQ, Artemis MQ, REST.
   Если требуется отправить сообщение в очередь, расположенную в другом менеджере, тогда не заполняем поле queueManager

2) В блоке testdata прописываем шаблоны сообщения для генератора и заглушки.
С помощью переменной ${rq_uid} управляем уникальным id сообщения;
С помощью переменной ${rnd_date|<format>} заполняем заголовки и тело сообщения случайными датами и временем заданного формата;
С помощью переменной ${rnd_number|<length>} заполняем заголовки и тело сообщения случайными числовыми строками фиксированной длины.

3) В блоке testplan описать сам сценарий тестирования, связывая его с сообщениями и подключениями по их именам:
    startTPS – начальный TPS в тесте;
    maxTPS – максимальный TPS в тесте;
    stepSize – шаг увеличения нагрузки;
    stepTimeMS – интервал увеличения нагрузки в миллисекундах;
    longTestMin – предельная длительность тестирования НТ в минутах, по завершению которой тест останавливается;
    sendMetricsToKafka – Параметр задает, требуется ли отправлять метрики в Kafka (для дальнейшего отображения в Grafana).
        Для генератора:
        Значение по умолчанию – true. Возможные значения:
            true – метрики отправляются.
            false – метрики не отправляются. Но если на генераторе requestTimeStorage = ignite, то генератор будет 
            отправлять метрики при получении ответов с ошибками или в случае таймаутов. Ошибками считаются ответы с тэгами:
            statusCode!=0, statusCode!=200 или expectedStatus !=0 (для HTTP смотри еще expectedStatus).
        Для заглушки:
        Значение по умолчанию – false. Возможные значение:
            true – метрики отправляются.
            false – метрики не отправляются
    requestTimeStorage:"ignite|header|local_cache|none" – 
        Для генератора. Значение по умолчанию – ignite. 
        Возможные значения:
            header – параметр не учитывается
            none – уникальный идентификатор и время отправки каждого запроса, нигде не сохраняются. При локальном запуске 
                   SyTester используется для тестирования 
            ignite – в in-memory кеш ignite записывается уникальный идентификатор и время отправки каждого запроса. 
                     При локальном или централизованном запуске SyTester используется для тестирования:
                     a) синхронных взаимодействий (ожидание ответа заданное время) для асинхронных протоколов (IBM MQ,
                        Artemis MQ, Active MQ, Kafka).
                     b) асинхронных взаимодействий или нотификации для любого протокола, когда метрики будут отсылаться 
                        с заглушки. Т.е. когда нужно вычислить время прохождения запроса от генератора до заглушки. Для 
                        этого случая также нужно выставить sendMetricsToKafka=true на заглушке.
            local_cache – уникальный идентификатор и время отправки каждого запроса сохраняются в локальном кеше. 
                          Используется при локальном запуске SyTester для тестирования:
                          a) синхронных взаимодействий (ожидание ответа заданное время) для асинхронных протоколов (IBM MQ, 
                             Kafka, Artemis MQ, Active MQ).
        Для заглушки параметр следует применять в случае формирования метрик на заглушке (путем выставления параметра 
        sendMetricsToKafka = true), например, когда используется сторонний генератор запросов совместно с заглушкой 
        SyTester или для асинхронных интеграционных сценариев (квитанция/нотификация). Значение по умолчанию – none. 
        Возможные значения:
            ignite – заглушка получает время запроса из in-memory кеша ignite
            header – время запроса берется из заголовка сообщения (requestTime)
            none – используется фиксированная константа 1 мс, кроме протокола IBM MQ (для IBM MQ время запроса берется 
                   из тэга PutTime структуры MQMD).
            local_cache – параметр не учитывается
    metricsServiceName – имя сервиса, соответствующего тестовому плану, при отсылке метрик. Другими словами, имя, 
                         по которому будут отображаться данные в Grafana;
    messageTimeout – таймаут в миллисекундах, в течении которого ожидается ответ для синхронных взаимодействий. 
                     По истечении этого времени в БД метрики отправляется отчет с кодом -105. Необязательный параметр. 
                     Применяется только на генераторе.

Более подробная информация по конфигурации представлена в разделе: Конфигурация тестового плана.

  1. Загрузить полученный тестовый план (подробнее см. раздел Загрузка тестового плана или его создание из GUI) ;

  2. Запустить тестовый план (подробнее см. раздел Вкладка «Доступные ТП») ;

  3. При необходимости управлять запущенными тестовыми планами (подробнее см. раздел Вкладка «Запущенные ТП»).

Генератор HTTP, заглушка HTTP (роль Оператор)#

Генератор HTTP заглушка HTTP

Диаграмма. Схема подачи нагрузки от генератора на заглушку HTTP через промежуточный тестируемый сервис/систему.

1) Клиент-генератор отправляет сообщения (xml/json) в тестируемый сервис/систему;
2) Тестируемый сервис/система получает сообщение от генератора и отправляет сообщение в заглушку.
    Есть два способа настроить заглушку: а) http Route напрямую в заглушку, б) https Route через Ingress;
3) Тестируемый сервис/система получает ответное сообщение от заглушки и отдает ответ в генератор.
  1. Получить координаты подключения к сервису host, port, endpoint (например, http://http-stub-XXX.ru:80/infoservices/XXX/);

  2. Создать тестовый план под свой сценарий. Примеры для отправки сообщений типа xml / json:

JSON: http_gen_json.json

JSON: http_stub_json.json

xml: http_gen_xml.json

xml: http_stub_xml.json

Описание transport, testdata, testplan блоков:

1) В блоке transport:
    для генератора указывается:
        host – адрес нагружаемого сервиса (например: sytester-http-stub-XXX.ru);
        port – порт нагружаемого сервиса (например: 80);
        request – path нагружаемого сервиса (например: /stub/json).
    для заглушки заполняется только request – path на котором поднять заглушку (например: /stub/json), 
    после запуска она будет доступна по адресу:
        а) http://sytester-http-stub-XXX.ru/stub/json (пример http Route напрямую в заглушку);
        б) https://sytester-http-ssl-XXX.ru/stub/json (пример https Route через Ingress).
    для соединения по https:
        host – адрес нагружаемого сервиса полностью (например: https://sytester-http-ssl-XXX.ru/stub/json)
        port – порт нагружаемого сервиса (например: 443);
        request – path нагружаемого сервиса (например: /stub/json);
        ssl – сертификаты, привязанные к Pod генератора.

2) В блоке testdata прописываем шаблоны сообщения для генератора и заглушки.
    С помощью переменной ${rq_uid} управляем уникальным id сообщения;
    С помощью переменной ${rnd_date|<format>} заполняем заголовки и тело сообщения случайными датами и временем заданного формата;
    С помощью переменной ${rnd_number|<length>} заполняем заголовки и тело сообщения случайными числовыми строками фиксированной длины.
    В блоке headers можно задать заголовки в формате ключ / значение.

3) В блоке testplan описываем сам сценарий тестирования, связывая его с сообщениями и подключениями по их именам:
    startTPS – начальный TPS в тесте;
    maxTPS – максимальный TPS в тесте;
    stepSize – шаг увеличения нагрузки;
    stepTimeMS – интервал увеличения нагрузки в миллисекундах;
    longTestMin – предельная длительность тестирования НТ в минутах, по завершению которой тест останавливается;
    sendMetricsToKafka – Параметр задает, требуется ли отправлять метрики в Kafka (для дальнейшего отображения в Grafana).
        Для генератора:
        Значение по умолчанию – true. Возможные значения:
            true – метрики отправляются.
            false – метрики не отправляются. Но если на генераторе requestTimeStorage = ignite, то генератор будет 
            отправлять метрики при получении ответов с ошибками или в случае таймаутов. Ошибками считаются ответы с тэгами:
            statusCode!=0, statusCode!=200 или expectedStatus !=0 (для HTTP смотри еще expectedStatus).
        Для заглушки:
        Значение по умолчанию – false. Возможные значение:
            true – метрики отправляются.
            false – метрики не отправляются
    requestTimeStorage:"ignite|header|local_cache|none" – 
        Для генератора. Значение по умолчанию – ignite. 
        Возможные значения:
            header – параметр не учитывается
            none – уникальный идентификатор и время отправки каждого запроса, нигде не сохраняются. При локальном запуске 
                   SyTester используется для тестирования 
            ignite – в in-memory кеш ignite записывается уникальный идентификатор и время отправки каждого запроса. 
                     При локальном или централизованном запуске SyTester используется для тестирования:
                     a) синхронных взаимодействий (ожидание ответа заданное время) для асинхронных протоколов (IBM MQ,
                        Artemis MQ, Active MQ, Kafka).
                     b) асинхронных взаимодействий или нотификации для любого протокола, когда метрики будут отсылаться 
                        с заглушки. Т.е. когда нужно вычислить время прохождения запроса от генератора до заглушки. Для 
                        этого случая также нужно выставить sendMetricsToKafka=true на заглушке.
            local_cache – уникальный идентификатор и время отправки каждого запроса сохраняются в локальном кеше. 
                          Используется при локальном запуске SyTester для тестирования:
                          a) синхронных взаимодействий (ожидание ответа заданное время) для асинхронных протоколов (IBM MQ, 
                             Kafka, Artemis MQ, Active MQ).
        Для заглушки параметр следует применять в случае формирования метрик на заглушке (путем выставления параметра 
        sendMetricsToKafka = true), например, когда используется сторонний генератор запросов совместно с заглушкой 
        SyTester или для асинхронных интеграционных сценариев (квитанция/нотификация). Значение по умолчанию – none. 
        Возможные значения:
            ignite – заглушка получает время запроса из in-memory кеша ignite
            header – время запроса берется из заголовка сообщения (requestTime)
            none – используется фиксированная константа 1 мс, кроме протокола IBM MQ (для IBM MQ время запроса берется 
                   из тэга PutTime структуры MQMD).
            local_cache – параметр не учитывается
    metricsServiceName – имя сервиса, соответствующего тестовому плану, при отсылке метрик. Другими словами, имя, 
                         по которому будут отображаться данные в Grafana;
    messageTimeout – таймаут в миллисекундах, в течении которого ожидается ответ для синхронных взаимодействий. 
                     По истечении этого времени в БД метрики отправляется отчет с кодом -105. Необязательный параметр. 
                     Применяется только на генераторе.

Более подробная информация по конфигурации представлена в разделе: Конфигурация тестового плана.

  1. Загрузить полученный тестовый план (подробнее см. раздел Загрузка тестового плана или его создание из GUI);

  2. Запустить тестовый план (подробнее см. раздел Вкладка «Доступные ТП»);

  3. При необходимости управлять запущенными тестовыми планами (подробнее см. раздел Вкладка «Запущенные ТП»).

Генератор gRPC (HTTP/2), заглушка gRPC (HTTP/2). Синхронный режим (роль Оператор)#

Синхронный режим

Диаграмма. Схема подачи нагрузки от генератора на заглушку GRPC через промежуточный тестируемый сервис/систему.

1) Клиент-генератор отправляет сообщения в тестируемый сервис/систему;
2) Тестируемый сервис/система получает сообщение от генератора и отправляет сообщение в заглушку;
3) Тестируемый сервис/система получает ответное сообщение от заглушки и отдает ответ в генератор.
  1. Получить координаты подключения к сервису host, port, endpoint (например http://http-stub-XXX.ru:80/infoservices/getAccHistoryFullExtract/);

  2. Загрузить все proto файлы, которые будут использоваться при тестировании, и задать название получаемой схемы данных на странице «Загрузка proto файлов» (подробнее см. раздел Вкладка «Загрузка Proto»);

  3. Создать тестовый план под свой сценарий. Примеры proto сообщения и тестового плана:

hw.proto

grpc_gen.json

grpc_stub.json

Описание transport, testdata, testplan блоков:

1) В блоке transport
  для генератора указывается, port, request – это адрес
      host – адрес нагружаемого сервиса (например: sytester-http-stub-XXX.ru);
      port – порт нагружаемого сервиса (например: 80);
      request – <полный путь до пакета>.<имя grpc сервиса>.<имя метода> (например io.github.helloworld.grpc.HelloService.SayHello);
      ssl.ssl_certfile – путь до клиентского сертификата;
      ssl.ssl_keyfile – путь до клиентского ключа.
  для заглушки заполняется только response – <полный путь до пакета>.<имя grpc сервиса>.<имя метода> 
  (например io.github.helloworld.grpc.HelloService.SayHello).

2) В блоке testdata прописываем шаблоны сообщения для генератора и заглушки в формате json (они автоматически будут преобразованы к proto формату).
    С помощью переменной ${rq_uid} управляем уникальным id сообщения;
    С помощью переменной ${rnd_date|<format>} заполняем заголовки и тело сообщения случайными датами и временем заданного формата;
    С помощью переменной ${rnd_number|<length>} заполняем заголовки и тело сообщения случайными числовыми строками фиксированной длины.
    В блоке headers можно задать заголовки в формате ключ/значение.

3) В блоке testplan описываем сам сценарий тестирования, связывая его с сообщениями и подключениями по их именам:
    startTPS – начальный TPS в тесте
    maxTPS – максимальный TPS в тесте
    stepSize – шаг увеличения нагрузки
    stepTimeMS – время в миллисекундах, после которого увеличивать нагрузку на stepSize
    retryCount – Кол-во переподключений заглушки по протоколам: MQ (IBM, Active, Artemis) и Kafka или кол-во перезапусков 
                 всех шагов интеграционных тестов (action: ONERUN/NT). По-умолчанию равен 0. Работает вместе с retryDelayTime
    retryDelayTime – Время в миллисекундах между попытками переподключения (для заглушек) или попытками перезапуска всех 
                     шагов интеграционного теста (action: ONERUN/NT). По-умолчанию равен 30000 (30 секунд). Работает вместе с retryCount

Более подробная информация по конфигурации представлена в разделе: Конфигурация тестового плана.

  1. Загрузить proto сообщение (подробнее см. раздел Вкладка «Загрузка Proto»);

  2. Загрузить полученный тестовый план (подробнее см. раздел Загрузка тестового плана или его создание из GUI);

  3. Запустить тестовый план (подробнее см. раздел Вкладка «Доступные ТП»);

  4. При необходимости управлять запущенными тестовыми планами (подробнее см. раздел Вкладка «Запущенные ТП»).

Генератор gRPC (HTTP/2), заглушка MQ. Асинхронный режим (роль Оператор)#

Генератор gRPC (HTTP/2), заглушка MQ

Диаграмма. Схема подачи нагрузки от генератора gRPC на заглушку MQ через промежуточный тестируемый сервис/систему.

1) Клиент-генератор отправляет сообщения в тестируемый сервис/систему по протоколу gRPC;
2) Тестируемый сервис/система получает сообщение от генератора, на его основе формирует MQ запрос и отправляет его в заглушку;
3) Тестируемый сервис/система получает ответное сообщение от MQ заглушки, на его основе обратно формирует ответное gRPC 
   сообщение и отправляет его в заглушку gRPC.
  1. Получить координаты подключения к сервису host, port, endpoint (например http://http-stub-XXX.ru:80/infoservices/getAccHistoryFullExtract/);

  2. Загрузить все proto файлы, которые будут использоваться при тестировании, и задать название получаемой схемы данных на странице «Загрузка proto файлов»(подробнее см. раздел Вкладка «Загрузка Proto»);

  3. Создать тестовый план под свой сценарий. Примеры proto сообщения и тестового плана:

grpc_gen-mq_stub.json

proto.zip

Описание transport, testdata, testplan блоков:

Из особенностей:
    messageFormat – xmlInJson, данный параметр позволяет достать для анализа (например, для извлечения rquid) xml сообщение 
    из тега body json сообщения, т.к в шлюзе MQ xml сообщение передается внутри тега body grpc сообщения
    sendMetricsToKafka – true, данный параметр установлен на заглушке, которая получает асинхронный ответ
  1. Загрузить полученный тестовый план (подробнее см. раздел Загрузка тестового плана или его создание из GUI);

  2. Запустить тестовый план (подробнее см. раздел Вкладка «Доступные ТП»);

  3. При необходимости управлять запущенными тестовыми планами (подробнее см. раздел Вкладка «Запущенные ТП»).

Генератор Kafka, заглушка Kafka (роль Оператор)#

Генератор Kafka, заглушка Kafka

Диаграмма. Схема подачи нагрузки от генератора на заглушку Kafka через промежуточный тестируемый сервис/систему.

1) Клиент-генератор подключается к топику запросов потребителя и эмулирует нагрузку;
2) Тестируемая система/сервис вычитывает сообщение из данного топика и отправляет сообщение в конечный топик запроса поставщика;
3) Заглушка вычитывает данное сообщение из конечного топика запроса поставщика, генерирует и отдает ответ в топик ответа;
4) Тестируемая система вычитывает сообщение из топика ответа поставщика и отправляет сообщение в конечный топик ответа потребителя;
5) Клиент-генератор получает данный ответ и коррелирует его со своим запросом.
  1. Получить параметры подключения к Kafka со стороны клиента и заглушки, например:

генератор

генератор

заглушка

заглушка

запрос

ответ

запрос

ответ

брокер Kafka

localhost:9092

localhost:9092

localhost:9092

localhost:9092

топик Kafka

SytesterTest.Rq

SytesterTest.Rs

SytesterTest.Rq

SytesterTest.Rs

  1. Создать тестовый план под свой сценарий. Пример тестового плана:

kafka_gen.json.

kafka_stub.json.

Пример с ssl подключением к Kafka:

callParams_demo_kafka_ssl.json.

Описание transport, testdata, testplan блоков:

1) В блоке transport указываем подключения к брокерам:
    protocol: "KAFKA";
    host/port брокеров Kafka;
    request - топик, в который будет писать генератор (или топик, из которого будет читать заглушка);
    response - топик, из которого будет читать генератор (или топик, в который будет отвечать заглушка);

2) В блоке testdata прописываем шаблоны сообщения для генератора и заглушки
    С помощью переменной ${rq_uid} управляем уникальным id сообщения;
    С помощью переменной ${rnd_date|<format>} заполняем заголовки и тело сообщения случайными датами и временем заданного формата;
    С помощью переменной ${rnd_number|<length>} заполняем заголовки и тело сообщения случайными числовыми строками фиксированной длины.

3) В блоке testplan описываем сам сценарий тестирования, связывая его с сообщениями и подключениями по их именам:
    startTPS – начальный TPS в тесте;
    maxTPS – максимальный TPS в тесте;
    stepSize – шаг увеличения нагрузки;
    stepTimeMS – время в миллисекундах, после которого увеличивать нагрузку на stepSize.

Более подробная информация по конфигурации представлена в разделе: Конфигурация тестового плана.

Далее необходимо:

  1. Загрузить полученный тестовый план (подробнее см. раздел Загрузка тестового плана или его создание из GUI);

  2. Запустить тестовый план (подробнее см. раздел Вкладка «Доступные ТП»);

  3. При необходимости управлять запущенными тестовыми планами (подробнее см. раздел Вкладка «Запущенные ТП»).

Генератор Active MQ, заглушка Active MQ. Асинхронный режим (роль Оператор)#

Генератор Active MQ, заглушка Active MQ

Диаграмма. Схема подачи нагрузки от генератора на заглушку Active MQ через промежуточный тестируемый сервис/систему.

1) Клиент-генератор подключается к очереди запросов потребителя и эмулирует нагрузку;
2) Тестируемая система/сервис вычитывает сообщение из данной очереди и отправляет сообщение в конечную очередь запроса
   поставщика;
3) Заглушка вычитывает данное сообщение из конечной очереди запроса поставщика, генерирует и отдает ответ в очередь
   ответа (обычно в ответ копируется rquid и часть заголовком);
4) Тестируемая система вычитывает сообщение из очереди ответа поставщика и отправляет сообщение в конечную очередь
   ответа потребителя;
5) Клиент-генератор получает данный ответ и коррелирует его со своим запросом.
  1. Получить параметры подключения к IBM MQ со стороны клиента и заглушки

Например:

генератор

генератор

заглушка

заглушка

запрос

ответ

запрос

ответ

cервер

tcp://active-mq:61616

tcp://active-mq:61616

tcp://active-mq:61616

tcp://active-mq:61616

очередь

regress_rq

regress_rs

regress_rq

regress_rs

  1. Создать тестовый план под свой сценарий. Пример тестового плана:

генератор: active-mq-gen-async.json;

заглушка: active-mq-stub-async.json.

Описание transport, testdata, testplan блоков:

1) В блоке transport указываем подключения к серверам:
    Для генератора:
        host – адрес сервера, где "развернут" сервер Active MQ (например: tcp://active-mq:61616);
        port – порт для тестовых планов по протоколу Active MQ указывать не требуется. Можно указать значение "0";
        request – очередь, куда должен отправлять сообщения генератор;
        response – очередь, откуда должен вычитывать ответные сообщения генератор;
        login – если требуется авторизация при подключении к серверу, в данное поле укажите логин, применяется для протокола Active MQ;
        password – если требуется авторизация при подключении к серверу, в данное поле укажите пароль, применяется для протокола Active MQ.
   Для заглушки:
        host – адрес сервера, где "развернут" сервер Active MQ (например: tcp://active-mq:61616);
        port – порт для тестовых планов по протоколу Active MQ указывать не требуется. Можно указать значение "0";
        request – очередь, откуда должна вычитывать заглушка;
        response – очередь, куда должна отправлять ответные сообщения заглушка;
        login – если требуется авторизация при подключении к серверу, в данное поле укажите логин, применяется для протокола Active MQ;
        password – если требуется авторизация при подключении к серверу, в данное поле укажите пароль, применяется для протокола Active MQ.

2) В блоке testdata прописываем шаблоны сообщения для генератора и заглушки.
    С помощью переменной ${rq_uid} управляем уникальным id сообщения;
    С помощью переменной ${rnd_date|<format>} заполняем заголовки и тело сообщения случайными датами и временем заданного формата;
    С помощью переменной ${rnd_number|<length>} заполняем заголовки и тело сообщения случайными числовыми строками фиксированной длины.

3) В блоке testplan описываем сам сценарий тестирования, связывая его с сообщениями и подключениями по их именам:
    startTPS – начальный TPS в тесте;
    maxTPS – максимальный TPS в тесте;
    stepSize – шаг увеличения нагрузки;
    stepTimeMS – интервал увеличения нагрузки в миллисекундах;
    longTestMin – предельная длительность тестирования НТ в минутах, по завершению которой тест останавливается;
    sendMetricsToKafka – Параметр задает, требуется ли отправлять метрики в Kafka (для дальнейшего отображения в Grafana).
        Для генератора:
        Значение по умолчанию – true. Возможные значения:
            true – метрики отправляются.
            false – метрики не отправляются. Но если на генераторе requestTimeStorage = ignite, то генератор будет 
            отправлять метрики при получении ответов с ошибками или в случае таймаутов. Ошибками считаются ответы с тэгами:
            statusCode!=0, statusCode!=200 или expectedStatus !=0 (для HTTP смотри еще expectedStatus).
        Для заглушки:
        Значение по умолчанию – false. Возможные значение:
            true – метрики отправляются.
            false – метрики не отправляются
    requestTimeStorage:"ignite|header|local_cache|none" – 
        Для генератора. Значение по умолчанию – ignite. 
        Возможные значения:
            header – параметр не учитывается
            none – уникальный идентификатор и время отправки каждого запроса, нигде не сохраняются. При локальном запуске 
                   SyTester используется для тестирования 
            ignite – в in-memory кеш ignite записывается уникальный идентификатор и время отправки каждого запроса. 
                     При локальном или централизованном запуске SyTester используется для тестирования:
                     a) синхронных взаимодействий (ожидание ответа заданное время) для асинхронных протоколов (IBM MQ,
                        Artemis MQ, Active MQ, Kafka).
                     b) асинхронных взаимодействий или нотификации для любого протокола, когда метрики будут отсылаться 
                        с заглушки. Т.е. когда нужно вычислить время прохождения запроса от генератора до заглушки. Для 
                        этого случая также нужно выставить sendMetricsToKafka=true на заглушке.
            local_cache – уникальный идентификатор и время отправки каждого запроса сохраняются в локальном кеше. 
                          Используется при локальном запуске SyTester для тестирования:
                          a) синхронных взаимодействий (ожидание ответа заданное время) для асинхронных протоколов (IBM MQ, 
                             Kafka, Artemis MQ, Active MQ).
        Для заглушки параметр следует применять в случае формирования метрик на заглушке (путем выставления параметра 
        sendMetricsToKafka = true), например, когда используется сторонний генератор запросов совместно с заглушкой 
        SyTester или для асинхронных интеграционных сценариев (квитанция/нотификация). Значение по умолчанию – none. 
        Возможные значения:
            ignite – заглушка получает время запроса из in-memory кеша ignite
            header – время запроса берется из заголовка сообщения (requestTime)
            none – используется фиксированная константа 1 мс, кроме протокола IBM MQ (для IBM MQ время запроса берется 
                   из тэга PutTime структуры MQMD).
            local_cache – параметр не учитывается
    metricsServiceName – имя сервиса, соответствующего тестовому плану, при отсылке метрик. Другими словами, имя, 
                         по которому будут отображаться данные в Grafana;
    messageTimeout – таймаут в миллисекундах, в течении которого ожидается ответ для синхронных взаимодействий. 
                     По истечении этого времени в БД метрики отправляется отчет с кодом -105. Необязательный параметр. 
                     Применяется только на генераторе.

Более подробная информация по конфигурации представлена в разделе: Конфигурация тестового плана.

Далее необходимо:

  1. Загрузить полученный тестовый план (подробнее см. раздел Загрузка тестового плана или его создание из GUI);

  2. Запустить тестовый план (подробнее см. раздел Вкладка «Доступные ТП»);

  3. При необходимости управлять запущенными тестовыми планами (подробнее см. раздел Вкладка «Запущенные ТП»).

Генератор Artemis MQ, заглушка Artemis MQ. Асинхронный режим (роль Оператор)#

Генератор Artemis MQ, заглушка Artemis MQ

Диаграмма. Схема подачи нагрузки от генератора на заглушку Artemis MQ через промежуточный тестируемый сервис/систему.

1) Клиент-генератор подключается к очереди запросов потребителя и эмулирует нагрузку;
2) Тестируемая система/сервис вычитывает сообщение из данной очереди и отправляет сообщение в конечную очередь запроса
   поставщика;
3) Заглушка вычитывает данное сообщение из конечной очереди запроса поставщика, генерирует и отдает ответ в очередь
   ответа (обычно в ответ копируется rquid и часть заголовком);
4) Тестируемая система вычитывает сообщение из очереди ответа поставщика и отправляет сообщение в конечную очередь
   ответа потребителя;
5) Клиент-генератор получает данный ответ и коррелирует его со своим запросом.
  1. Получить параметры подключения к Artemis MQ со стороны клиента и заглушки

Например:

генератор

генератор

заглушка

заглушка

запрос

ответ

запрос

ответ

менеджер

SBERCLOUD.MQ

SBERCLOUD.MQ

SBERCLOUD.MQ

SBERCLOUD.MQ

канал

CLOUD.SYT

CLOUD.SYT

CLOUD.SYT

CLOUD.SYT

очередь

SYTESTER.IN, SYTESTER.IN.2

SYTESTER.OUT, SYTESTER.OUT.2

SYTESTER.IN, SYTESTER.IN.2

SYTESTER.OUT, SYTESTER.OUT.2

  1. Создать тестовый план под свой сценарий. Пример тестового плана:

генератор: artemis-mq-gen-async.json;

заглушка: artemis-mq-stub-async.json.

Описание transport, testdata, testplan блоков:

1) В блоке transport для генератора указывается port, request – это адрес:
   Для генератора:
      queueManager – имя менеджера, применяется для протокола IBM MQ и Artemis MQ;
      host – адрес сервера, где "развернут" сервер Artemis MQ (например: 10.хх.хх.хх);
      port – порт подключения (например: 1414);
      request – очередь, куда должен отправлять сообщения генератор;
      response – очередь, откуда должен вычитывать ответные сообщения генератор;
      protocol – протокол доставки сообщений, одно значение из списка (HTTP, MQ, Kafka, gRPC, Active MQ, Artemis MQ);
      channel – Для MQ указывается канал подключения (например: SC.ITECO), применяется для протокола IBM MQ, Artemis MQ, REST
                возможные значения: GET – для GET вызова, PUT – для PUT вызова (Если не указано значение, будет выполнен post запрос).
   Для заглушки:
      queueManager – имя менеджера, применяется для протокола IBM MQ и Artemis MQ;
      host – адрес сервера, где "развернут" сервер Artemis MQ (например: 10.хх.хх.хх);
      port – порт подключения (например: 1414);
      request – очередь, откуда должна вычитывать сообщения заглушка;
      response – очередь, куда должна отправлять ответные сообщения заглушка;
      protocol – наименование протокола;
      channel – Для MQ указывается канал подключения (например: SC.ITECO), применяется для протокола IBM MQ, Artemis MQ, REST.
                возможные значения: GET – для GET вызова, PUT – для PUT вызова (Если не указано значение, будет выполнен post запрос).
  
   Настройка ssl подключения, сертификаты из примера уже доступны из коробки, их будет достаточно для большинства случаев.
   Настройки SSL:
      ssl.ssl_cafile – файл доверенных ключей SSL;
      ssl.ssl_capass – пароль к файлу доверенных ключей;
      ssl.ssl_keyfile – файл SSL ключей шифрования;
      ssl.ssl_keypass – пароль к ключу шифрования;
      ssl.ssl_keyfilepass – Пароль к файлу ключей шифрования;
      ssl.sslPeerName – Для MQ – идентификатор канала при подключении по SSL;
      ssl.ssl_certfile – файл сертификат.

2) В блоке testdata прописываем шаблоны сообщения для генератора и заглушки.
  С помощью переменной ${rq_uid} управляем уникальным id сообщения;
  С помощью переменной ${rnd_date|<format>} заполняем заголовки и тело сообщения случайными датами и временем заданного формата;
  С помощью переменной ${rnd_number|<length>} заполняем заголовки и тело сообщения случайными числовыми строками фиксированной длины.

3) В блоке testplan описываем сам сценарий тестирования, связывая его с сообщениями и подключениями по их именам:
    startTPS – начальный TPS в тесте;
    maxTPS – максимальный TPS в тесте;
    stepSize – шаг увеличения нагрузки;
    stepTimeMS – интервал увеличения нагрузки в миллисекундах;
    longTestMin – предельная длительность тестирования НТ в минутах, по завершению которой тест останавливается;
    sendMetricsToKafka – Параметр задает, требуется ли отправлять метрики в Kafka (для дальнейшего отображения в Grafana).
        Для генератора:
        Значение по умолчанию – true. Возможные значения:
            true – метрики отправляются.
            false – метрики не отправляются. Но если на генераторе requestTimeStorage = ignite, то генератор будет 
            отправлять метрики при получении ответов с ошибками или в случае таймаутов. Ошибками считаются ответы с тэгами:
            statusCode!=0, statusCode!=200 или expectedStatus !=0 (для HTTP смотри еще expectedStatus).
        Для заглушки:
        Значение по умолчанию – false. Возможные значение:
            true – метрики отправляются.
            false – метрики не отправляются
    requestTimeStorage:"ignite|header|local_cache|none" – 
        Для генератора. Значение по умолчанию – ignite. 
        Возможные значения:
            header – параметр не учитывается
            none – уникальный идентификатор и время отправки каждого запроса, нигде не сохраняются. При локальном запуске 
                   SyTester используется для тестирования 
            ignite – в in-memory кеш ignite записывается уникальный идентификатор и время отправки каждого запроса. 
                     При локальном или централизованном запуске SyTester используется для тестирования:
                     a) синхронных взаимодействий (ожидание ответа заданное время) для асинхронных протоколов (IBM MQ,
                        Artemis MQ, Active MQ, Kafka).
                     b) асинхронных взаимодействий или нотификации для любого протокола, когда метрики будут отсылаться 
                        с заглушки. Т.е. когда нужно вычислить время прохождения запроса от генератора до заглушки. Для 
                        этого случая также нужно выставить sendMetricsToKafka=true на заглушке.
            local_cache – уникальный идентификатор и время отправки каждого запроса сохраняются в локальном кеше. 
                          Используется при локальном запуске SyTester для тестирования:
                          a) синхронных взаимодействий (ожидание ответа заданное время) для асинхронных протоколов (IBM MQ, 
                             Kafka, Artemis MQ, Active MQ).
        Для заглушки параметр следует применять в случае формирования метрик на заглушке (путем выставления параметра 
        sendMetricsToKafka = true), например, когда используется сторонний генератор запросов совместно с заглушкой 
        SyTester или для асинхронных интеграционных сценариев (квитанция/нотификация). Значение по умолчанию – none. 
        Возможные значения:
            ignite – заглушка получает время запроса из in-memory кеша ignite
            header – время запроса берется из заголовка сообщения (requestTime)
            none – используется фиксированная константа 1 мс, кроме протокола IBM MQ (для IBM MQ время запроса берется 
                   из тэга PutTime структуры MQMD).
            local_cache – параметр не учитывается
    metricsServiceName – имя сервиса, соответствующего тестовому плану, при отсылке метрик. Другими словами, имя, 
                         по которому будут отображаться данные в Grafana;
    messageTimeout – таймаут в миллисекундах, в течении которого ожидается ответ для синхронных взаимодействий. 
                     По истечении этого времени в БД метрики отправляется отчет с кодом -105. Необязательный параметр. 
                     Применяется только на генераторе.

Более подробная информация по конфигурации представлена в разделе: Конфигурация тестового плана.

Далее необходимо:

  1. Загрузить полученный тестовый план (подробнее см. раздел Загрузка тестового плана или его создание из GUI);

  2. Запустить тестовый план (подробнее см. раздел Вкладка «Доступные ТП»);

  3. При необходимости управлять запущенными тестовыми планами (подробнее см. раздел Вкладка «Запущенные ТП»).