Thanks, Deepak. > -----Original Message----- > From: Deepak Shetty [mailto:[email protected]] > Sent: Tuesday, 29 July 2014 11:52 PM > To: JMeter Users List > Subject: Re: BeanShell PreProcessor doesn't seem to work as I expect > > >or just that it's run after the While controller > yes in your case > See the section on scoping rules - 4.10 > http://jmeter.apache.org/usermanual/test_plan.html > > > > On Mon, Jul 28, 2014 at 10:20 PM, Nigel Donaldson > <[email protected]> > wrote: > > > Thanks for responding 'sebb'. For completeness: in my case, does that > > mean that the While controller completely prevents the PreProc. from > > being run, or just that it's run after the While controller and is > > therefore ineffectual for loop control? Cheers. > > ----- Original Message ----- > > > > From: "sebb" <[email protected]> > > To: "JMeter Users List" <[email protected]> > > Sent: Tuesday, 29 July, 2014 2:35:29 PM > > Subject: Re: BeanShell PreProcessor doesn't seem to work as I expect > > > > A Pre-Processor is only run just before a sampler. > > > > On 29 July 2014 04:06, Nigel Donaldson <[email protected]> wrote: > > > I have the following arrangement in a Test Plan: > > > > > > Thread Group > > > - Module Controller > > > > > > where the module references/includes the following: > > > > > > Test Fragment > > > - Transaction Controller > > > -- BeanShell Sampler -or- BeanShell PreProcessor > > > -- While Controller > > > --- HTTP Request > > > --- BeanShell PostProcessor > > > ... > > > > > > The BeanShell Sampler (or PreProcessor) simply initialises a number > > > of > > variables: > > > > > > vars.put("MaxNofAttempts", String.valueOf(bsh.args[0])); > > vars.put("AttemptCount", "0"); vars.put("RC", "0"); > > > > > > The While test is: > > > > > > ${__javaScript("${RC}"!="200" && "${RC}"!="500" && > > "${MaxNofAttempts}">"${AttemptCount}")} > > > > > > The PostProcessor checks the response-code of the HTTP request > > > (which > > may be a meaningful 4xx, leading to an increment of the key variable): > > > > > > vars.put("RC", ctx.getPreviousResult().getResponseCode()); > > > if (vars.get("RC").substring(0, 1).equals("4")) { > > vars.put("AttemptCount", String.valueOf( > > Integer.parseInt(vars.get("AttemptCount"))+1 )); } > > > > > > > > > If I use a BeanShell Sampler the arrangement works as expected (ie. > > > up > > to a fixed number of retries upon 4xx response-codes, or flow-through > > upon > > 200 or 500). > > > > > > However, if I use a BeanShell PreProcessor instead, the While test > > > fails > > (leading to an infinite loop) because the value of the 'AttemptCount' > > variable appears unchanged. > > > > > > I don't understand this. I'd appreciate an explanation and/or > > suggestions. (For what it's worth, I originally had JSR223 elements, > > with the same result). > > > > > > Cheers, > > > Nige > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > > >
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
