как очистить JSESSIONID каждого потока (пользователя) в Jmeter по запросу

Я хочу очистить переменную Jmeter JsessionID в любое время (по моему запросу).

Я знаю, что в Jmeter CookieManager есть флажок с именем «Очистить файл cookie на каждой итерации».
Но он очищает сеанс на каждой итерации, а я хочу очистить его в любое время в итерации. .

Как я могу это сделать в Jmeter?


person AsadYarKhan    schedule 03.10.2012    source источник


Ответы (3)


В настоящее время вы не можете просто, особенно если вы хотите очистить один конкретный файл cookie.

Вам следует подать запрос на улучшение в JMeter Bugzilla, чтобы точно указать, что вы хотите сделать.

Я думаю, что настраиваемая функция была бы хорошей функцией, см.

person UBIK LOAD PACK    schedule 03.10.2012

Вы можете просто добавить beanShell для обработки пост / предварительной обработки и с помощью этого кода

import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;
CookieManager manager = sampler.getCookieManager();
for (int i=0;i<manager.getCookieCount();i++){
    Cookie cookie = manager.get(i);
    //remove a cookie 
    if (cookie.getName().equals("BAD_COOKIE")){
        sampler.getCookieManager().remove(i);
    }
}
person Alaa Murad    schedule 20.05.2014

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

JSESSIONID - это один из токенов (первый или несколько последующих), поэтому для удаления всех токенов, включая JSESSIONID, я бы предложил использовать следующий Java-скрипт в JSR223 Pre- и / или PostProcessor, где вам нужно:

import org.apache.jmeter.protocol.http.control.CookieManager;

CookieManager cManager = sampler.getCookieManager();
    int count = cManager.getCookieCount();
    for (int index = 0; index < count; index++) {
        cManager.remove(0);
        }

Пример добавления скрипта в PostProcessor в jMeter

Обратите внимание: внутри цикла for здесь стоит (0), а не (индекс), что помогает избежать исключения OutOfBoundary, поскольку размер экземпляра CookieManager уменьшается после каждой итерации.

person Max Fesenko    schedule 22.11.2016