The same behaviour occurred in JMeter 1.9.1.
That only had a single Post-Processor (the Regex Extractor) so the
order did not really matter.
I've not tried any earlier releases yet.
S.
On 26/09/06, sebb <[EMAIL PROTECTED]> wrote:
Very odd.
I can confirm the behaviour; Post-Processors are run in the opposite
order to what one expects.
Looking at the code in JMeterThread.runPostProcessors() it actually
traverses the list of post-processors in reverse order. I've no idea
why it does this - some further investigation is needed. Perhaps
originally the post-processors were added to the list in reverse
order?
I need to check back with earlier releases to see what they did.
S.
On 26/09/06, Philip Peake <[EMAIL PROTECTED]> wrote:
> Ok --- I found an answer. Not a particularly satisfactory one, but an
> answer.
> I became convinced that my "FOO" variable was just not getting set, and
> that there was essentially nothing wrong with what I was trying to do in
> the BeanShell - other than use an undefined variable.
>
> I added aUser Defined Variable config element, set FOO there and that
> worked. So the variable is not getting set by the regex extractor. I
> tried everything. Including reversing the order of the regex extractor
> and the BeanShell -- guess what? That works.
>
> So I now have:
>
> HTTP Request
> |
> -- BeanShell Postprocessor
> |
> -- Regular Expression Extractor
>
> And when the BeanShell runs, it has the value set by the regex extractor
> - reverse them again and it fails.
> Checking the testplan .jms file, the XML shows the elements in the order
> they are displayed in the GUI, so its not simply a display problem.
>
> Anyone any clue why I have to have the elemet using the variable appear
> before the element initializing that variable?
>
> Philip
>
> -------------------------------------------------------
>
> sebb wrote:
> > On 25/09/06, Philip Peake <[EMAIL PROTECTED]> wrote:
> >> Hmm... the variable is not defined ....
> >> But going back to my original e-mail, I said:
> >>
> >> > I have an HTTP Request sampler. Contained in the body of the page
> >> > returned by this is the word "Squirrel".
> >> > As a child of the HTTP Request I have a Regular Expression
> >> > Extractor (Post Processor) set up as follows:
> >> >
> >> > Response Field: <Body checked>
> >> > Reference Name: FOO
> >> > Regular Expression: (Squirrel)
> >> > Template: $1
> >
> > As mentioned in another e-mail, this should be $1$
> >
> >> > Default Value: "Missed"
> >> >
> >> > If I understand the documentation correctly, this should
> >> > initialize a variable called FOO, accessible as ${FOO} which will
> >> > contain "Squirrel" if that is present in the body of the response
> >> > processed by the HTTP Request sampler, or "Missed" as a value if
> >> > it is not.
> >>
> >> To which you replied:
> >>
> >> > > If I understand the documentation correctly, this should
> >> > initialize a
> >> > > variable called FOO, accessible as ${FOO} which will contain
> >> > "Squirrel"
> >> > > if that is present in the body of the response processed by the
> >> > HTTP
> >> > > Request sampler, or "Missed" as a value if it is not.
> >> >
> >> > Yes.
> >>
> >> So, which is it?
> >
> > The variable FOO will be set to the value of the template if the RE
> > matches, otherwise the variable FOO will be set to "Missed".
> >
> > In your case, the value of the template was "$1", not "Squirrel", but
> > the rules still apply.
> >
> >> Is it that variables defined in an imediately preceeding pos-processor
> >> is not available in the next?
> >
> > The variables are available as soon as they have been defined, i.e. as
> > soon as the post-processor has been run.
> >
> >> I am really trying to understand this....
> >>
> >> Philip
> >>
> >> -----------------------------------------------
> >>
> >>
> >>
> >> sebb wrote:
> >>
> >> > On 24/09/06, Philip Peake <[EMAIL PROTECTED]> wrote:
> >> >
> >> >> Thanks for pointing out that the ${VAR} variables are pre-processed.
> >> >> So I tried this:
> >> >>
> >> >> s=vars.get("FOO");
> >> >> print(s);
> >> >>
> >> >> It print out:
> >> >>
> >> >> null
> >> >
> >> >
> >> > i.e. FOO is not defined as a variable
> >> >
> >> >> I also tried:
> >> >>
> >> >> s=${FOO};
> >> >> print(s);
> >> >>
> >> >> Which gave:
> >> >>
> >> >> 2006/09/24 13:48:06 ERROR - jmeter.util.BeanShellInterpreter:
> >> Error
> >> >> invoking bsh method eval
> >> >> java.lang.reflect.InvocationTargetException
> >> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >> Method)
> >> >> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
> >> Source)
> >> >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
> >> >> Source)
> >> >> at java.lang.reflect.Method.invoke(Unknown Source)
> >> >> at
> >> >>
> >> >>
> >>
org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:150)
> >>
> >> >>
> >> >> at
> >> >>
> >> >>
> >>
org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:186)
> >>
> >> >>
> >> >> at
> >> >>
> >> >>
> >>
org.apache.jmeter.extractor.BeanShellPostProcessor.process(BeanShellPostProcessor.java:80)
> >>
> >> >>
> >> >> at
> >> >>
> >> >>
> >>
org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:428)
> >>
> >> >>
> >> >> at
> >> >> org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
> >> >> at java.lang.Thread.run(Unknown Source)
> >> >> Caused by: Sourced file: inline evaluation of: ``s=${FOO};
> >> print(s);
> >> >> ;'' : Attempt to access property on undefined variable or
> >> class name
> >> >> : at Line: 1 : in file: inline evaluation of: ``s=${FOO};
> >> print(s);
> >> >> ;'' : {
> >> >
> >> >
> >> > ditto
> >> >
> >> >> And finally, I tried:
> >> >>
> >> >> print("${FOO}");
> >> >>
> >> >> Which printed:
> >> >>
> >> >> ${FOO}
> >> >
> >> >
> >> > ditto
> >> >
> >> >> I still don't see how to do this ....
> >> >>
> >> >
> >> > The above is correct, but the variable is not defined.
> >> >
> >> > ---------------------------------------------------------------------
> >> > 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]
>
>
> ---------------------------------------------------------------------
> 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]