I've already tried the building up thing -- it was only the addition of the
last line, the string.contains() one, that provoked the error.
I've come up with a (rather ugly) workaround now -- no idea why this works
when the do...while version didn't, though.
String subject = vars.get("subjects_3");
> if (subject.contains("SubmitXmlOnSession")) {
> vars.put("subject", subject );
> vars.put("guid", vars.get("pair_guids_3" ));
> }
> subject = vars.get("subjects_4");
> if (subject.contains("SubmitXmlOnSession")) {
> vars.put("subject", subject );
> vars.put("guid", vars.get("pair_guids_4" ));
> }
> subject = vars.get("subjects_5");
> if (subject.contains("SubmitXmlOnSession")) {
> vars.put("subject", subject );
> vars.put("guid", vars.get("pair_guids_5" ));
> }
> subject = vars.get("subjects_6");
> if (subject.contains("SubmitXmlOnSession")) {
> vars.put("subject", subject );
> vars.put("guid", vars.get("pair_guids_6" ));
> }
On Tue, Sep 3, 2013 at 11:23 AM, sebb <[email protected]> wrote:
> On 3 September 2013 11:03, Richard Gaywood <[email protected]>
> wrote:
> > Further to the below, I've written the below script which I've run
> through
> > the beanshell interpreter myself with java bsh.Interpreter test.bsh, and
> it
> > works.
> >
> > Script:
> >
> > String foo = "foo";
> >> String bar = "bar";
> >> if (foo.contains("o")) {
> >> System.out.println(foo);
> >> }
> >> if (bar.contains("o")) {
> >> System.out.println(bar);
> >> }
> >>
> >> int i=0;
> >> String subject;
> >> String guid;
> >> do {
> >> subject = "foo DESIREDTEXT"+Integer.toString(i);
> >> guid = "guid"+Integer.toString(i);
> >> i++;
> >> } while (! subject.contains("DESIREDTEXT3"));
> >> System.out.println(guid);
> >
> >
> >
> > Output:
> >
> > foo
> >> guid3
> >
> >
> >
> > So the BSH itself looks OK to me, can't figure out why JMeter doesn't
> like
> > it...
>
> Most likely cause is an unexpected quoting or variable replacement
> issue so BSH does not get passed what you expect.
>
> Try putting the script in a file.
>
> And/or try the problematic statement on its own, and gradually build
> up the rest of the script.
> You can do that by selective commenting of lines with //
>
> >
> >
> > On Tue, Sep 3, 2013 at 9:33 AM, Richard Gaywood <
> [email protected]>wrote:
> >
> >> Hi list.
> >>
> >> I have a slightly complex test I'm working on where I process a JSON
> >> response. I loop through looking at each value of one particular field,
> >> where the nth value is some string I know I need. Then I want to choose
> the
> >> nth value of a second field to reuse in the test.
> >>
> >> So I have two regex extractors set to match number -1, each grabbing one
> >> of the two fields, then this in a BSH post-processor:
> >>
> >>
> >> int i=0;
> >> String subject;
> >> String guid;
> >> do {
> >> subject = vars.get("subjects_"+Integer.toString(i));
> >> guid = vars.get("pair_guids_"+Integer.toString(i));
> >> i++;
> >> } while (i<5);
> >> //} while (! subject.contains("DESIREDSTRING"));
> >>
> >> vars.put("subject", subject );
> >> vars.put("guid", guid );
> >>
> >>
> >> With the i<5 check (debugging code), it works fine, but obviously
> doesn't
> >> always grab the correct element. But with the alternative while clause
> >> using String.contains, I get the following error:
> >>
> >> 2013/09/03 09:30:17 ERROR - jmeter.util.BeanShellInterpreter: Error
> >> invoking bsh method: eval Sourced file: inline evaluation of: `` int
> i=0;
> >> String subject; String guid; do { subject = vars.get("subjects_"+Inte .
> .
> >> . ''
> >> 2013/09/03 09:30:17 WARN - jmeter.extractor.BeanShellPostProcessor:
> >> Problem in BeanShell script org.apache.jorphan.util.JMeterException:
> Error
> >> invoking bsh method: eval Sourced file: inline evaluation of: `` int
> i=0;
> >> String subject; String guid; do { subject = vars.get("subjects_"+Inte .
> .
> >> . ''
> >>
> >> I get similar errors on method calls like String.startsWith() too. Can
> >> anyone shed any light on why?
> >>
> >> Thanks in advance,
> >>
> >> Richard
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>