Size: a a a

QA — Load & Performance

2020 March 24

KY

Kirill Yurkov in QA — Load & Performance
код респонса лежит тут
источник

KY

Kirill Yurkov in QA — Load & Performance
SampleResult.getResponseCode()
источник

KB

Kirill Borovko in QA — Load & Performance
lejng
А такой вопрос можно ли в джеметре остановить сценарий если допустим только 503 код респонза, вроде как есть возможность но там нельзя настроить при каких условиях?
Можно сделать так, в респонс асершене проставить на ожидание кода ответа 503, а все остальные игнорить, а в тестплане поставить останавливаться при возникновении ошибок
источник

MS

Mikhail Sedov in QA — Load & Performance
Добрый день!

Буду благодарен, если подскажите относительно тестирования apache kafka на jmeter.

Мне нужно отправить не только сообщение в топик, но и заголовки. Я посмотрел популярные плагины для jmeter такие как kafkametr, pepper-box и не нашел там возможности отправки заголовков вместе с сообщением.

Гугление, к сожалению, не дало простого решения данного вопроса.
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Mikhail Sedov
Добрый день!

Буду благодарен, если подскажите относительно тестирования apache kafka на jmeter.

Мне нужно отправить не только сообщение в топик, но и заголовки. Я посмотрел популярные плагины для jmeter такие как kafkametr, pepper-box и не нашел там возможности отправки заголовков вместе с сообщением.

Гугление, к сожалению, не дало простого решения данного вопроса.
Привет, Миша.

Как понял, ты хочешь, чтобы в строке 179 передавались ещё и заголовки
https://github.com/GSLabDev/pepper-box/blob/master/src/main/java/com/gslab/pepper/sampler/PepperBoxKafkaSampler.java#L179

Сейчас там используется простой конструктор
ProducerRecord​(java.lang.String topic, K key, V value)

Значит, чтобы в записи появились заголовки можно просто добавить заголовок перед отправкой.

Перед строкой 179 сделай так:
String kafkaHeader = JMeterContextService.getContext().getVariables().get("kafkaHeader");
if(kafkaHeader != null) {
 producerRecord.headers().add("HEADER_KEY", kafkaHeader.getBytes())
}

Где-то в коде теста определи переменную с именем kafkaHeader. Например, через User Parameters
https://jmeter.apache.org/usermanual/component_reference.html#User_Parameters

Тут показан пример хардкода, когда задаётся ровно один заголовок, имя которого HEADER_KEY.
Но это так, чтобы идею проверить.
Если сработает, сделать большее количество заголовков можно по аналогии. Или можно сделать более удобный метод. Передавать в sampler целую хеш-таблицу заголовков.
источник

MS

Mikhail Sedov in QA — Load & Performance
Вячеслав Смирнов
Привет, Миша.

Как понял, ты хочешь, чтобы в строке 179 передавались ещё и заголовки
https://github.com/GSLabDev/pepper-box/blob/master/src/main/java/com/gslab/pepper/sampler/PepperBoxKafkaSampler.java#L179

Сейчас там используется простой конструктор
ProducerRecord​(java.lang.String topic, K key, V value)

Значит, чтобы в записи появились заголовки можно просто добавить заголовок перед отправкой.

Перед строкой 179 сделай так:
String kafkaHeader = JMeterContextService.getContext().getVariables().get("kafkaHeader");
if(kafkaHeader != null) {
 producerRecord.headers().add("HEADER_KEY", kafkaHeader.getBytes())
}

Где-то в коде теста определи переменную с именем kafkaHeader. Например, через User Parameters
https://jmeter.apache.org/usermanual/component_reference.html#User_Parameters

Тут показан пример хардкода, когда задаётся ровно один заголовок, имя которого HEADER_KEY.
Но это так, чтобы идею проверить.
Если сработает, сделать большее количество заголовков можно по аналогии. Или можно сделать более удобный метод. Передавать в sampler целую хеш-таблицу заголовков.
Слава, привет!

Спасибо, это то что нужно.
Буду пробовать.
источник
2020 March 25

W

Wazicar in QA — Load & Performance
Viktor Ganeles
Владимир, а ты знаешь, почему такая хитрая структура у jmx-файлов?
Дочерние элементы не являются дочерними элементами в xml напрямую, а вместо этого являются дочерними элементами чего-то другого и вяжутся через хэши
А потому что весь тестплан из вот этих штук состоит https://jmeter.apache.org/api/org/apache/jorphan/collections/HashTree.html
источник

W

Wazicar in QA — Load & Performance
И в них внутри лежат всякие Контроллеры, Тредгруппы, Листенеры и т.д.
источник

VG

Viktor Ganeles in QA — Load & Performance
Да, но почему выбрали их а не обычную структуру xml ?
Ведь структура xml всё равно используется
источник

W

Wazicar in QA — Load & Performance
Там вообще вроде вот на этом всё основано https://refactoring.guru/ru/design-patterns/composite
источник

VG

Viktor Ganeles in QA — Load & Performance
Объекты вычленить проще?
источник

W

Wazicar in QA — Load & Performance
Viktor Ganeles
Да, но почему выбрали их а не обычную структуру xml ?
Ведь структура xml всё равно используется
Потому что эта xml десериализуется в структуру хештри, которую jmeterEngine умеет запускать
источник

W

Wazicar in QA — Load & Performance
источник

W

Wazicar in QA — Load & Performance
Тут метод есть контифигуре
источник

VG

Viktor Ganeles in QA — Load & Performance
Спасибо, я немного понял
источник

W

Wazicar in QA — Load & Performance
Viktor Ganeles
Да, но почему выбрали их а не обычную структуру xml ?
Ведь структура xml всё равно используется
Структура xml там вообще техническая вещь, её делали не чтобы глазами её читать, а чтобы в HashTree превращать
источник

VG

Viktor Ganeles in QA — Load & Performance
:)
источник

W

Wazicar in QA — Load & Performance
Компьютерно читаемо
источник

RY

Rafael Yumagulov in QA — Load & Performance
А ещё XML это, в первую очередь, язык разметки. Хранение данных в нем, всё-таки, издевательство, как над машинами, так и над людьми.
источник

VS

Vladimir Sitnikov in QA — Load & Performance
Wazicar
Потому что эта xml десериализуется в структуру хештри, которую jmeterEngine умеет запускать
Ну, это безусловно так.

Т.е. xml это не первоочередная структура, а jmx/xml это лишь второстепенный формат хранения.
JMX генерируется (и читается) библиотекой xstream из этого самого HashTree

Я так полагаю, записи в JMX идут в порядке <test_element></test_element><hashTree>его дети</hashTree>

Это может показаться нелогичным, но всё более-менее объясняется тем, что HashTree implements Map<Object, HashTree>

С точки зрения записи в xml, дерево JMeter компонент это просто Map (ключом является элемент, а значением список его дочерних элементов).
А сточки зрения библиотеки записи, самый простой способ записать Map это записать элементы последовательно в формате ключ, значение, ключ, значение, ключ, значение и так далее.

Поэтому и оказывается, что элемент и его дети оказываются в соседних xml узлах.
источник