2015-01-02 8 views
5

Korzystanie z Jmeter 2.12, co może spowodować, że pliki cookie nie zostaną zresetowane podczas kontrolera JMeter Loop? Próbowałem już wszystkiego, co przychodzi mi do głowy, ale za każdym razem, gdy przechodzę przez pętlę, nadal pozostaje jeden z plików cookie z poprzedniego logowania. Wygląda na to, że pliki cookie nie są usuwane.Pliki cookie nie są resetowane podczas iteracji w JMeter 'Loop Controller'?

Oto jak ułożyła mój pętlę:

Thread Group 1 
    -- Loop Controller (3x) 
    -- Simple Controller 
     -- HTTP Header Manager 
     -- HTTP Cookie Manger (with 'Clear cookies each iteration?' enabled) 
     -- BeanShell sampler - with code that tries to clear all cookies 
     -- HTTP /login (gets cookies and auth headers) 
     -- ... various HTTP Samplers ... 
     -- HTTP /logout 

Próbowałem dodanie sampler BeanShell z tego kodu (jak pokazano powyżej), ale nie wydaje się do niczego:

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

CookieManager cManager = sampler.getCookieManager(); 
cManager.clear(); 
HeaderManager hManager = sampler.getHeaderManager(); 
hManager.clear(); 

Odpowiedz

3
  1. Kontroler pętli nie zwiększa iteracji. Możesz go przetestować, oceniając linię kodu Beanshell vars.getIteration(). Iteracja jest zwiększana na poziomie grupy wątków. Aby to zmienić, możesz wywołać metodę vars.incIteration() w dowolnym elemencie testowym obsługującym komponent Beanshell (Sampler, procesor Pre/Post, Assertion, itp.)
  2. Twój kod Beanshell do usuwania plików cookie faktycznie nie działa jako instancja cManager. do samplera. Trzeba zmodyfikować kod w następujący sposób:

    CookieManager cManager = sampler.getCookieManager(); 
    cManager.clear(); 
    sampler.setCookieManager(cManager); 
    

    Więc sampler może mieć, że „cManager” wystąpienie z rozliczonych ciasteczek

Zobacz How to use BeanShell: JMeter's favorite built-in component instrukcji, aby uzyskać więcej informacji na temat BeanShell skryptów w Apache JMeter.

+0

Dzięki, nie wiedziałem o zmiennej iteracji. – djangofan

+0

Dla każdego, kto się na to zdecyduje, wszystko, czego powinieneś potrzebować, to: sampler.getCookieManager(). Clear(); – rpgFANATIC

+0

super, to zadziałało jak dla mnie urok !!! –

6

Ok, znalazłem problem. Chociaż "HTTP Cookie Manager" ma opcję o nazwie "Wyczyść ciasteczka w każdej iteracji", "iteracja", o której mówi, nie zawiera kontrolera pętli. To, do czego się odnosi, to tylko iteracje/pętle "Thread Group". Nie było to jasne i zmarnowałem pół dnia, dopóki nie zrozumiałem tego. Nie byłby mylący, gdyby w polu wyboru było napisane "Wyczyść pliki cookie dla każdej iteracji grupy wątków". Bardzo rozczarowujący.