2015-01-02 13 views
5

Utilizzando Jmeter 2.12, cosa potrebbe impedire il reset dei cookie durante un controller loop JMeter? Ho provato tutto quello che riesco a pensare, ma ogni volta, attraverso il loop, rimane uno dei cookie di un login precedente. Non sembra in realtà cancellare i cookie.I cookie non si resetteranno all'iterazione in JMeter 'Loop Controller'?

Ecco come ho messo insieme il mio ciclo:

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 

Ho provato ad aggiungere un campionatore Beanshell con questo codice (come mostrato sopra), ma non sembra di fare nulla:

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(); 

risposta

3
  1. Il controller di loop non incrementa l'iterazione. Puoi testarlo valutando la riga di codice Beanshell vars.getIteration(). L'iterazione viene incrementata a livello di gruppo di thread. Per ignorare questa si può chiamare vars.incIteration() metodo in qualsiasi elemento di prova Beanshell-enabled (Sampler, pre/post processore, Asserzione, ecc) Codice
  2. È Beanshell per cancellare i cookie in realtà non fa nulla come cManager esempio, non viene passato indietro al campionatore. È necessario modificare il codice come segue:

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

    Così sampler potrebbe avere tale istanza "cManager" con biscotti eliminato

Vedere How to use BeanShell: JMeter's favorite built-in component guida per ulteriori informazioni su Beanshell script in jmeter.

+0

Grazie, non sapevo della variabile di iterazione. – djangofan

+0

Per chi si trova in questa situazione, tutto ciò che serve è il sampler.getCookieManager(). Clear(); – rpgFANATIC

+0

super, che ha funzionato come un fascino per me !!! –

6

Ok, ho capito il problema. Anche se 'HTTP Cookie Manager' ha un'opzione chiamata 'Cancella cookie ogni iterazione', l''iterazione' di cui parla non include un controller di loop. Ciò a cui si riferisce è solo iterazioni/cicli del "Gruppo thread". Questo non era chiaro e ho perso mezza giornata fino a quando ho capito. Non sarebbe stato di confusione se la casella di controllo diceva "Cancella cookie ogni thread di iterazione del gruppo". Molto deludente.

Problemi correlati