Most likely one of the vars is not being resolved and so you are
getting NPE when using them.

Try adding checks that the vars exist.

On 3 September 2013 12:08, Richard Gaywood <[email protected]> wrote:
> Hmm. So with that script below (tucked into a .bsh file now), it works fine
> with 1 thread. When I move to 3 threads in the test, it appears to run
> fine, but my jmeter.log fills up with
>
> 2013/09/03 12:04:20 ERROR - jmeter.util.BeanShellInterpreter: Error
> invoking bsh method: source Sourced file: D:\jmeter\tests\script.bsh
> 2013/09/03 12:04:20 WARN  - jmeter.extractor.BeanShellPostProcessor:
> Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error
> invoking bsh method: source Sourced file: D:\jmeter\tests\script.bsh
>
> I see similar errors if I pull the script back inline
>
> 2013/09/03 12:06:47 ERROR - jmeter.util.BeanShellInterpreter: Error
> invoking bsh method: eval Sourced file: inline evaluation of: ``String
> subject = vars.get("subjects_2"); if (subject.contains("SubmitXmlOnSessio .
> . . ''
> 2013/09/03 12:06:47 WARN  - jmeter.extractor.BeanShellPostProcessor:
> Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error
> invoking bsh method: eval Sourced file: inline evaluation of: ``String
> subject = vars.get("subjects_2"); if (subject.contains("SubmitXmlOnSessio .
> . . ''
>
> What's that all about? As I said, I see no errors if I just run with one
> thread. I've tried "reset interpreter" set to both "true" and "false", it
> doesn't change anything.
>
>
>
> On Tue, Sep 3, 2013 at 11:53 AM, Richard Gaywood
> <[email protected]>wrote:
>
>> 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]
>>>
>>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to