как очистить JSESSIONID каждого потока (пользователя) в Jmeter по требованию
Я хочу очистить переменную JMeter JsessionID в любое время (по моему требованию).
Я знаю, что в JMeter CookieManager есть опция флажка с именем"очистить Cookie на каждой итерации".
Но он очищает сеанс на каждой итерации, в то время как я хочу очистить его в любое время на итерации.
Как я могу это сделать в Jmeter?
3 ответов
в настоящее время не просто , особенно если вы хотите удалить один конкретный файл.
вы должны поднять запрос на улучшение в JMeter Bugzilla, давая точность того, что вы хотите сделать.
Я думаю, что пользовательская функция будет хорошей функцией, см.:
вы можете просто добавить post / pre процесс 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);
}
}
мой путь недалеко от вышеуказанного (который не работал для меня, извините), но он короче, содержит важное обновление индекса внутри цикла и некоторую дополнительную демонстрацию для очистки использования скрипта (я надеюсь ;) )
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);
}
пример добавления скрипта в постпроцессор в jMeter
обратить внимание: внутри на loop здесь (0), а не (index), что помогает избежать исключения OutOfBoundary, потому что размер экземпляра CookieManager уменьшается после каждой итерации.