Поддерживаемые плагины и элементы JMX-скриптов¶
Поддерживаемые плагины¶
BlazeMeter – HLS Plugin
Custom Thread Groups
Random CSV Data Set
WebSocket Samplers by Peter Doornbosch
WebSocket Samplers by Maciej Zaleski
Custom JMeter Functions
Работа с файлами¶
Загрузка¶
Для работы JMX могут требоваться типы файлов:
файл скрипта;
файлы, которые отправляются в запросе из скрипта;
CSV-файлы с параметрами.
Пути в JMX менять не нужно.
Подробнее см. раздел Импорт скрипта.
Результаты теста¶
После завершения работы JMX можно выгрузить логи JMeter. Подробнее см. раздел Просмотр подробных данных о запросах и ответах.
Группы¶
jp@gc - Ultimate Thread Group – рекомендуемый тип групп для JMX-скриптов, импортируемых в Boomq.
Для jp@gc - Ultimate Thread Group поддерживается:
отображение профиля нагрузки:
Start Threads Count;
Initial Delay;
Startup Time;
Hold Load For;
Shutdown Time;
изменение профиля нагрузки пользователем;
отображение активности группы:
Enabled;
Disabled;
изменение активности группы пользователей.
Если профиль нагрузки задан параметрами:
значения параметров меняются на значения по умолчанию:
Start Threads Count = 10;
Initial Delay = 0;
Startup Time = 300;
Hold Load For = 600;
Shutdown Time = 300;
Step помечается как измененный: isChanged = true.
Группы, которые поддерживаются и работают, но их нельзя изменить в интерфейсе Boomq:
bzm - Arrivals Thread Group;
bzm - Concurrency Thread Group;
bzm - Free-Form Arrivals Thread Group;
jp@gc - Stepping Thread Group (deprecated);
setUp Thread Group;
tearDown Thread Group;
Thread Group.
Samplers¶
Для HTTP Request поддерживается:
отображение подробностей запроса:
URL;
протокол;
параметры;
headers;
body;
таймеры, которые влияют на этот запрос:
тип таймеров;
нижняя и верхняя граница задержек для таймеров, которые генерируют случайные задержки;
продолжительность для таймеров с константным временем задержки;
включение и отключение таймеров;
редактирование таймеров, влияющих на этот HTTP-запрос.
Samplers, которые поддерживаются и работают, но их нельзя изменить в интерфейсе Boomq:
Flow Control Action;
Debug Sampler;
JSR223 Sampler;
AJP/1.3 Sampler;
Access Log Sampler;
BeanShell Sampler;
Bolt Request;
FTP Request;
GraphQL HTTP Request;
JDBC Request;
JMS Point-to-Point;
JMS Publisher;
JMS Subscriber;
JUnit Request;
Java Request;
LDAP Extended Request;
LDAP Request;
Mail Reader Sampler;
OS Process Sampler;
SMTP Sampler;
TCP Sampler;
bzm – Streaming Sampler;
WebSocket Close Connection;
WebSocket Open Connection;
WebSocket Ping/Pong;
WebSocket Sampler;
WebSocket Single Read Sampler;
WebSocket Single Write Sampler;
WebSocket request-response Sampler.
Config element¶
HTTP Header Manager:
определяется область видимости;
headers добавляются к отображению в HTTP Request. JMX не изменяется.
HTTP Request Defaults:
определяется область видимости;
настройки добавляются к отображению в HTTP Request. Их приоритет работает по принципу чем «ближе» по уровню вложенности элемент конфигурации, тем он приоритетнее. Самая приоритетная конфигурация в самом HTTP Request.
Config elements, которые поддерживаются и работают, но их нельзя изменить в интерфейсе Boomq:
CSV Data Set Config;
bzm - Random CSV Data Set Config. Подробнее см. разделы Добавление и использование параметров и Создание набора настроек;
HTTP Cookie Manager;
HTTP Cache Manager;
Bolt Connection Configuration;
Counter;
DNS Cache Manager;
FTP Request Defaults;
HTTP Authorization Manager;
JDBC Connection Configuration;
Java Request Defaults;
Keystore Configuration;
LDAP Extended Request Defaults;
LDAP Request Defaults;
Login Config Element;
Random Variable;
Simple Config Element;
TCP Sampler Config;
User Defined Variables.
Listeners¶
После импорта JMX-скрипта Listeners отключаются в Boomq.
Logic controllers¶
Logic controllers, которые поддерживаются и работают, но их нельзя изменить в интерфейсе Boomq:
If Controller;
Transaction Controller;
Loop Controller;
While Controller;
Critical Section Controller;
ForEach Controller;
Include Controller;
Interleave Controller;
Once Only Controller;
Random Controller;
Random Order Controller;
Recording Controller;
Runtime Controller;
Simple Controller;
Throughput Controller;
Module Controller;
Switch Controller.
Pre-Processors¶
Pre-Processors, которые поддерживаются и работают, но их нельзя изменить в интерфейсе Boomq:
JSR223 PreProcessor;
User Parameters;
HTML Link Parser;
HTTP URL Re-writing Modifier;
JDBC PreProcessor;
RegEx User Parameters;
Sample Timeout;
BeanShell PreProcessor.
Post-Processors¶
Post-Processors, которые поддерживаются и работают, но их нельзя изменить в интерфейсе Boomq:
CSS Selector Extractor;
JSON Extractor;
JSON JMESPath Extractor;
Boundary Extractor;
Regular Expression Extractor;
JSR223 PostProcessor;
Debug PostProcessor;
JDBC PostProcessor;
Result Status Action Handler;
XPath Extractor;
XPath2 Extractor;
BeanShell PostProcessor.
Assertions¶
Assertions, которые поддерживаются и работают, но их нельзя изменить в интерфейсе Boomq:
Response Assertion;
JSON Assertion;
Size Assertion;
JSR223 Assertion;
XPath2 Assertion;
Compare Assertion;
Duration Assertion;
HTML Assertion;
JSON JMESPath Assertion;
MD5Hex Assertion;
SMIME Assertion;
XML Assertion;
XML Schema Assertion;
XPath Assertion;
BeanShell Assertion.
Test Fragments¶
Test Fragments, которые поддерживаются и работают, но их нельзя изменить в интерфейсе Boomq:
Test Fragment.
Timers¶
Таймеры, которые поддерживаются во всех типах тестов:
Constant Timer;
Gaussian Random timer;
Poisson Random timer;
Uniform Random timer.
В загруженных JMX эти таймеры отображаются со всеми параметрами.
Для этих таймеров поддерживается:
включение и отключение;
изменение значений;
умножение на коэффициент в настройках таймеров на уровне теста вместе со всеми остальными таймерами;
добавление в любой запрос;
удаление таймера, добавленного в Boomq. При старте теста создается новый JMX, поэтому чтобы добавить или удалить таймер, установленный на стороне frontend, измените YAML-файл.
Таймеры, которые отображаются в интерфейсе платформы во всех запросах, на которые влияют:
Precise Throughput Timer;
Constant Throughput Timer;
Synchronizing Timer.
Когда один таймер действует на несколько запросов, то он отображается в интерфейсе платформы в каждом из запросов с одинаковым ID. Если изменить таймер в одном из запросов, то изменение повлияет на все запросы в скоупе.
Таймеры, которые поддерживаются и работают, но их нельзя изменить в интерфейсе Boomq:
JSR223 Timer;
BeanShell Timer.
Поддерживаемые настройки JMeter¶
XML Parser:
xpath2query.parser.cache.size
SSL Configuration:
https.sessioncontext.shared
https.default.protocol
https.socket.protocols
https.use.cached.ssl.context
httpclient.reset_state_on_thread_group_iteration
https.keyStoreStartIndex
https.keyStoreEndIndex
Apache HttpClient common properties:
post_add_content_type_if_missing
httpclient.timeout
httpclient.version
httpclient.socket.http.cps
httpclient.socket.https.cps
httpclient.loopback
httpclient.localaddress
HTTP Java Configuration:
http.java.sampler.retries
Apache HttpComponents HTTPClient configuration (HTTPClient4):
httpclient4.default_user_agent_disabled
httpclient4.auth.preemptive
httpclient4.retrycount
httpclient4.request_sent_retry_enabled
httpclient4.idletimeout
httpclient4.validate_after_inactivity
httpclient4.time_to_live
httpclient4.gzip_relax_mode
httpclient4.deflate_relax_mode
HTTP Cache Manager configuration:
cacheable_methods
cache_manager.cached_resource_mode
RETURN_200_CACHE.message
RETURN_CUSTOM_STATUS.code
RETURN_CUSTOM_STATUS.message
CSVDataSet configuration:
csvdataset.eofstring
csvdataset.file.encoding_list
Miscellaneous configuration:
cssselector.parser.cache.size
oro.patterncache.size
propertyEditorSearchPath
jmeter.expertMode
httpsampler.max_bytes_to_store_per_request
httpsampler.max_buffer_size
httpsampler.max_redirects
httpsampler.max_frame_depth
httpsampler.separate.container
httpsampler.ignore_failed_embedded_resources
httpsampler.embedded_resources_use_md5
httpsampler.parallel_download_thread_keepalive_inseconds
httpsampler.user_defined_methods
sampleresult.default.encoding
CookieManager.delete_null_cookies
CookieManager.allow_variable_cookies
CookieManager.save.cookies
CookieManager.name.prefix
CookieManager.check.cookies
javascript.use_rhino
jmeter.regex.engine
jmeter.regex.patterncache.size
jmeterengine.threadstop.wait
jmeterengine.stopfail.system.exit
jmeterengine.force.system.exit
jmeter.exit.check.pause
jmeterthread.rampup.granularity
document.max_size
text.kerning.max_document_size
JMSSampler.useSecurity.properties
jsr223.compiled_scripts_cache_size
httpJettyClient.maxBufferSize
Особенности режима отладки для тестов с типом OWN_JMX¶
Поддерживаются те же виды thread group, что и для обычного теста. В них параметры меняются следующим образом:
ArrivalsThreadGroup:
Target Rate (arrivals/min) = 30. Ограничение пропускной способности, так как нельзя ограничить количество итераций;
Ramp Up Time (min) = 0;
Ramp-Up Steps Count = 0;
Hold Target Rate Timer (min) = 5. Длительность 5 минут;
Log Threads Status into File = «». Отсутствие log-файлов;
Thread Iterations Limit = «». Количество итераций для треда, после выполнения которых он уничтожается и создается заново;
Concurrency Limit = 1;
Time Unit = minutes. Единица измерения времени. Рекомендуется использовать минуты, так как в target rate нельзя установить дробное число, и минимальная пропускная способность 1/sec – это слишком много;
ConcurrencyThreadGroup:
Target Concurrency = 1;
Ramp Up Timer (sec) = «»;
Ramp-Up Steps Count = «»;
Hold Target Rate Time (sec) = 300. Длительность – 5 минут;
Time Unit = seconds. Единица измерения времени;
Thread Iterations Limit = «». Количество итераций для треда, после выполнения которых он уничтожается и создается заново;
Log Threads Status into File = «». Отсутствие log-файлов;
FreeFormArrivalsThreadGroup:
Time Unit = seconds. Единица измерения времени;
Thread Iterations Limit = «». Количество итераций для треда, после выполнения которых он уничтожается и создается заново;
Log Threads Status into File = «». Отсутствие log-файлов;
Concurrency Limit = 1;
Steps:
First step:
Start Value = 1. В начале теста запускается 1 виртуальный пользователь;
End Value = 1. В конце теста останавливается 1 виртуальный пользователь;
Duration = 300. Длительность выполнения итераций – 5 минут;
Second step - Last step:
Start Value = 0;
End Value = 0;
Duration = 0;
SetupThreadGroup:
Number of threads (users) = 1;
Ramp-Up Period (in seconds) = 0;
Loop Count = 10. Количество итераций, после выполнения которых группа прекращает работу. Если у пользователя было значение меньше 10, то используется значение пользователя;
Forever = false. Итерации не повторяются бесконечно;
Scheduler = true. Если 10 итераций не успевают выполниться, то их выполнение заканчивается через указанное время в параметре Duration (seconds);
Duration (seconds) = 300. Длительность выполнения итераций. Если у пользователя было значение меньше 300, то используется значение пользователя;
Startup delay (seconds) = «»;
SteppingThreadGroup:
This group will start = 1;
First, wait for = 0;
Then start = 0;
Next, add = 0;
threads every = 0;
using ramp-up = 0;
Then hold load for = 300. Длительность – 5 минут.
Finally, stop = 1;
threads every = 0;
TearDownThreadGroup:
Number of threads (users) = 1;
Ramp-Up Period (in seconds) = 0;
Loop Count = 10. Количество итераций, после выполнения которых группа прекращает работу. Если у пользователя было значение меньше 10, то используется значение пользователя;
Forever = false. Итерации не повторяются бесконечно;
Scheduler = true. Если 10 итераций не успевают выполниться, то их выполнение через указанное время в параметре Duration (seconds);
Duration (seconds) = 300. Длительность выполнения итераций. Если у пользователя было значение меньше 300, то используется значение пользователя;
Startup delay (seconds) = «»;
ThreadGroup:
Number of threads (users) = 1;
Ramp-Up Period (in seconds) = 0;
Loop Count = 10. Количество итераций, после выполнения которых группа прекращает работу. Если у пользователя было значение меньше 10, то используется значение пользователя;
Forever = false. Итерации не повторяются бесконечно;
Scheduler = true. Если 10 итераций не успевают выполниться, то их выполнение через указанное время в параметре Duration (seconds);
Duration (seconds) = 300. Длительность выполнения итераций. Если у пользователя было значение меньше 300, то используется значение пользователя;
Startup delay (seconds) = «»;
UltimateThreadGroup:
Steps:
First step:
Start Threads Count = 1. В начале теста запускается 1 thread.
Initial Delay (sec) = 0;
Startup Time (sec) = 0;
Hold Load For (sec) = 300. Длительность – 5 минут.
Shutdown Timer = 0;
Second step - Last step:
Start Threads Count = 0;
Initial Delay (sec) = 0;
Startup Time (sec) = 0;
Hold Load For (sec) = 0;
Shutdown Timer = 0.