Как использовать плагин MQTT в JMeter
Как мы упомянутый ранееJMeter имеет встроенные протоколы HTTP/HTTPS, TCP и другие протоколы, а также имеет подключаемый механизм расширения.
MQTT является основным протоколом в мире IoT. Хотя это не тип протокола, который поставляется с JMeter, он чрезвычайно распространен в сценариях тестирования IoT. Для поддержки масштабного тестирования протокола MQTT компания EMQ разработала подключаемый модуль тестирования с открытым исходным кодом на основе JMeter для протокола MQTT.
После нескольких итераций последней версией подключаемого модуля JMeter MQTT в настоящее время является 2.0.2, которая поддерживает различные семплеры, такие как подключение, публикация сообщений и подписка на сообщения, и может быть объединена для создания более сложных тестовых сценариев.
В этой статье будет специально рассказано, как использовать подключаемый модуль MQTT в JMeter.
Установка плагина
Установка плагина MQTT аналогична другим сторонним плагинам JMeter:
- Загрузите последнюю версию подключаемого модуля mqtt-xmeter-2.0.2-jar-with-dependencies.jar с Гитхаб. Плагин поддерживает JMeter 3.2 и выше.
- Скопируйте пакет jar подключаемого модуля в каталог подключаемого модуля JMeter: $JMETER_HOME/lib/ext.
- Перезапустите JMeter.
Основные компоненты в плагине
Образец подключения MQTT
Пробник Connect имитирует устройство IoT и инициирует соединение MQTT.
Имя сервера или IP: Адрес тестируемого сервера MQTT.
Номер порта: В качестве примера для брокера EMQX используются порты по умолчанию: 1883 для TCP-соединений и 8883 для SSL-соединений. Пожалуйста, обратитесь к конкретной конфигурации сервера для конкретного порта.
MQTT-версия: в настоящее время поддерживает версии MQTT 3.1 и 3.1.1.
Время ожидания: Настройка времени ожидания соединения в секундах.
Протоколы: Поддерживает соединения TCP, SSL, WS и WSS с серверами MQTT. При выборе соединения с зашифрованным каналом SSL или WSS можно выбрать одностороннюю или двустороннюю аутентификацию (двойную). Если требуется двусторонняя аутентификация, укажите соответствующий сертификат клиента (сертификат p12) и соответствующий пароль защиты файла (Secret).
Аутентификация пользователя: Если сервер MQTT настроен для аутентификации пользователя, укажите соответствующие имя пользователя и пароль.
ID клиента: Личность виртуального пользователя. Если установлен флажок «Добавить случайный суффикс для ClientId», строка uuid будет добавлена в качестве суффикса к каждому ClientId и всему идентификатору виртуального пользователя.
Оставить в живых(ах): Интервал отправки сигналов сердцебиения. Например, 300 означает, что клиент отправляет ping-запросы на сервер каждые 300 секунд, чтобы поддерживать активное соединение.
Максимальное количество попыток подключения: Максимальное количество попыток переподключения при первом подключении. Если это число превышено, соединение считается неудачным. Если пользователь хочет продолжать попытки повторного подключения, установите для этого параметра значение -1.
Максимальное количество попыток повторного подключения: Максимальное количество попыток переподключения при последующих подключениях. Если это число превышено, соединение считается неудачным. Если пользователь хочет продолжать попытки повторного подключения, установите для этого параметра значение -1.
Чистая сессия: установите для этого параметра значение false, если пользователь хочет сохранить состояние сеанса между подключениями, или значение true, если пользователь не хочет сохранять состояние сеанса при новых подключениях.
Сэмплер публикации сообщений MQTT (MQTT Pub Sampler)
Образец публикации сообщений повторно использует соединение MQTT, установленное в образце соединения, для публикации сообщений на целевом сервере MQTT.
Уровень качества обслуживания: Качество обслуживания со значениями 0, 1 и 2, представляющими AT_MOST_ONCE, AT_LEAST_ONCE и EXACTLY_ONCE, соответственно, в спецификации протокола MQTT.
Сохраненные сообщения: если пользователь хочет использовать сохраненные сообщения, установите для этого параметра значение true, и сервер MQTT будет хранить сохраненные сообщения, опубликованные подключаемым модулем, с заданным QoS. Когда подписка происходит на соответствующую тему, последнее сохраненное сообщение будет доставлено непосредственно подписчику. Поэтому подписчику не нужно ждать, чтобы получить последнее значение статуса издателя.
Название темы: Тема публикуемого сообщения.
Добавьте метку времени в полезную нагрузку: Если этот флажок установлен, текущая временная метка будет присоединена к началу тела опубликованного сообщения. Вместе с опцией «Полезная нагрузка включает отметку времени» сэмплера подписки на сообщение это может рассчитать время задержки, достигнутое сообщением на стороне приема сообщения. Если флажок не установлен, будет отправлено только фактическое тело сообщения.
Полезная нагрузка Тип сообщения: В настоящее время поддерживаются три типа сообщений
- Строка: обычная строка.
- Hex String: Строка представлена в виде шестнадцатеричного значения, например Hello, которое может быть представлено как 48656C6C6F (где 48 соответствует букве H в таблице ASCII и т. д.). Как правило, шестнадцатеричные строки используются для создания нетекстовых тел сообщений, таких как описание определенных взаимодействий частного протокола, управляющая информация и т. д.
- Случайная строка фиксированной длины: в качестве тела сообщения создается случайная строка заданной длины (в байтах).
Сэмплер подписки на сообщения MQTT (Sub Sampler MQTT)
Message Pub Sampler повторно использует соединение MQTT, установленное в Connection Sampler, для подписки на сообщения с целевого сервера MQTT.
Уровень качества обслуживания: Качество обслуживания, значение такое же, как и для Message Pub Sampler.
Название(я) темы: Тема, которой принадлежит подписанное сообщение. Сэмплер подписки на одно сообщение может подписаться на несколько тем, разделенных запятыми.
Полезная нагрузка включает метку времени: Если флажок установлен, временная метка отправки будет анализироваться с начала тела сообщения, что можно использовать для расчета задержки получения сообщения с помощью параметра Добавить временную метку в полезные данные пробоотборника доставки сообщений. Если флажок не установлен, будет проанализировано только фактическое тело сообщения.
Образец на: для метода выборки по умолчанию используется «указанное прошедшее время (мс)», например выборка каждую миллисекунду. Также можно выбрать «количество полученных сообщений», например однократную выборку для каждого заданного количества полученных сообщений.
Отладочный ответ: Если флажок установлен, содержимое сообщения будет напечатано в ответе JMeter. Этот параметр в основном используется для целей отладки. Не рекомендуется формально запускать тест при проверке, чтобы не повлиять на эффективность теста.
Сэмплер отключения MQTT (отключение MQTT)
Разрывает соединение MQTT, установленное в сэмплере соединений.
Для гибкости значения свойств в приведенном выше сэмплере могут ссылаться на системные или пользовательские переменные JMeter.
В этой статье представлены различные тестовые компоненты подключаемого модуля JMeter MQTT. В следующей статье будет подробно рассмотрено создание тестовых сценариев с помощью подключаемого модуля MQTT для различных тестовых сценариев.
Первоначально опубликовано на https://www.emqx.com.