You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by David Schulberg <Da...@objectconsulting.com.au> on 2007/08/14 07:58:49 UTC

Beanshell pre-processor

Hi,
 
Have added a beanshell preprocessor to a sampler for the purpose of setting variables to be used in the sampler request.
 
It doesn't work - get error in jmeter log:
 
jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``vars.put("") = vars.get("4"); vars.put("${Person}") = vars.get("220780625"); if  . . . '' : Can't assign to prefix. 
 
My preprocessor script is attempting to set user variables Relation and Person:
 
vars.put("${Relation}") = vars.get("${Relation2}");
vars.put("${Person}") = vars.get("${Person2}");
if (vars.get("${Relation2}")) >= 6
{
    vars.put("${Relation}") = vars.get("${Relation2}");
    vars.put("${Person}") = vars.get("${Person2}");
}
else if (vars.get("${Relation3}")) >= 6
{
    vars.put("${Relation}") = vars.get("${Relation3}");
    vars.put("${Person}") = vars.get("${Person3}");
}
else if (vars.get("${Relation4}")) >= 6
{
    vars.put("${Relation}") = vars.get("${Relation4}");
    vars.put("${Person}") = vars.get("${Person4}");
}
else if (vars.get("${Relation5}")) >= 6
{
    vars.put("${Relation}") = vars.get("${Relation5}");
    vars.put("${Person}") = vars.get("${Person5}");
}
else if (vars.get("${Relation6}")) >= 6
{
    vars.put("${Relation}") = vars.get("${Relation6}");
    vars.put("${Person}") = vars.get("${Person6}");
}

 
David Schulberg

Object Consulting | Senior Consultant
email: david.schulberg@objectconsulting.com.au
----------------------------------------------------------------
consulting | development | training | support
our experience makes the difference 

 


Re: Beanshell pre-processor

Posted by Ronan Klyne <ro...@groupbc.com>.
David Schulberg wrote:
> Hi,
>  
> This issue is driving me nuts!
>  
> The use of 
> vars.put("Relation") = vars.get("Relation2");
>  
> definitely does not work.

That's true, it doesn't work. The method 'put' takes two arguments, the
key and the value, like so:

vars.put("Relation", vars.get("Relation2"));

	# r

-- 
Ronan Klyne
Business Collaborator Developer
Tel: +44 (0)870 163 2555
ronan.klyne@groupbc.com
www.groupbc.com

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


RE: Beanshell pre-processor

Posted by David Schulberg <Da...@objectconsulting.com.au>.
Hi,
 
This issue is driving me nuts!
 
The use of 
vars.put("Relation") = vars.get("Relation2");
 
definitely does not work.
 
ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``vars.put("Relation") = vars.get("Relation2"); vars.put("Person") = vars.get("Per . . . '' : Can't assign to prefix.
 
Now 'Relation' has been defined as a user variable and 'Relation2' is a CVS Data Config variable name.
 
When I use ${Relation2} in a script statement the value of the variable is at least displayed in the jmeter.log
 
Regards,
David Schulberg

Object Consulting | Senior Consultant
email: david.schulberg@objectconsulting.com.au
----------------------------------------------------------------
consulting | development | training | support
our experience makes the difference 

________________________________

From: sebb [mailto:sebbaz@gmail.com]
Sent: Wed 15/08/2007 5:05 PM
To: jmeter-user@jakarta.apache.org
Subject: Re: Beanshell pre-processor



[Try again - last attempt failed with DNS error]

On 15/08/07, David Schulberg <Da...@objectconsulting.com.au> wrote:
> Hi,
>
> I changed my beanshell script as per the suggestion to
>
> vars.put("Relation") = vars.get("Relation2");
> vars.put("Person") = vars.get("Person2");
> if (vars.get("Relation2")) >= 6

That should be

 if (vars.get("Relation2") >= 6)

> {
>    vars.put("Relation") = vars.get("Relation2");
>    vars.put("Person") = vars.get("Person2");
> }
> else if (vars.get("Relation3")) >= 6
> {
>    vars.put("Relation") = vars.get("Relation3");
>    vars.put("Person") = vars.get("Person3");
> }
> else if (vars.get("Relation4")) >= 6
> {
>    vars.put("Relation") = vars.get("Relation4");
>    vars.put("Person") = vars.get("Person4");
> }
> else if (vars.get("Relation5")) >= 6
> {
>    vars.put("Relation") = vars.get("Relation5");
>    vars.put("Person") = vars.get("Person5");
> }
> else if (vars.get("Relation6")) >= 6
> {
>    vars.put("Relation") = vars.get("Relation6");
>    vars.put("Person") = vars.get("Person6");
> }
>
> but that made no difference - same error.

That's not possible. There may be an error, but it cannot possibly be:

jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval
Sourced file: inline evaluation of: ``vars.put("") = vars.get("4");
vars.put("${Person}") = vars.get("220780625"); if  . . . '' : Can't
assign to prefix.

... apart from the last part about the if.

See above.

> Regards,
> David Schulberg
>
> Object Consulting | Senior Consultant
> email: david.schulberg@objectconsulting.com.au
> ----------------------------------------------------------------
> consulting | development | training | support
> our experience makes the difference
>
> ________________________________
>
> From: sebb [mailto:sebbaz@gmail.com]
> Sent: Tue 14/08/2007 6:54 PM
> To: JMeter Users List
> Subject: Re: Beanshell pre-processor
>
>
>
> On 14/08/07, David Schulberg <Da...@objectconsulting.com.au> wrote:
> > Hi,
> >
> > Have added a beanshell preprocessor to a sampler for the purpose of setting variables to be used in the sampler request.
> >
> > It doesn't work - get error in jmeter log:
>
> Because you are doing double evaluation of the variables.
>
> > jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``vars.put("") = vars.get("4"); vars.put("${Person}") = vars.get("220780625"); if  . . . '' : Can't assign to prefix.
> >
> > My preprocessor script is attempting to set user variables Relation and Person:
> >
> > vars.put("${Relation}") = vars.get("${Relation2}");
>
> Assume Relation="aunt" and Relation2="uncle", then what Beanshell sees is
>
> vars.put("aunt") = vars.get("uncle");
>
> because the variables are textually substituted in the script field
> before handing to Beanshell.
>
> You need to use
>
> vars.put("Relation") = vars.get("Relation2");
>
>
> > vars.put("${Person}") = vars.get("${Person2}");
> > if (vars.get("${Relation2}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation2}");
> >    vars.put("${Person}") = vars.get("${Person2}");
> > }
> > else if (vars.get("${Relation3}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation3}");
> >    vars.put("${Person}") = vars.get("${Person3}");
> > }
> > else if (vars.get("${Relation4}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation4}");
> >    vars.put("${Person}") = vars.get("${Person4}");
> > }
> > else if (vars.get("${Relation5}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation5}");
> >    vars.put("${Person}") = vars.get("${Person5}");
> > }
> > else if (vars.get("${Relation6}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation6}");
> >    vars.put("${Person}") = vars.get("${Person6}");
> > }
> >
> >
> > David Schulberg
> >
> > Object Consulting | Senior Consultant
> > email: david.schulberg@objectconsulting.com.au
> > ----------------------------------------------------------------
> > consulting | development | training | support
> > our experience makes the difference
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org





Re: Beanshell pre-processor

Posted by sebb <se...@gmail.com>.
[Try again - last attempt failed with DNS error]

On 15/08/07, David Schulberg <Da...@objectconsulting.com.au> wrote:
> Hi,
>
> I changed my beanshell script as per the suggestion to
>
> vars.put("Relation") = vars.get("Relation2");
> vars.put("Person") = vars.get("Person2");
> if (vars.get("Relation2")) >= 6

That should be

 if (vars.get("Relation2") >= 6)

> {
>    vars.put("Relation") = vars.get("Relation2");
>    vars.put("Person") = vars.get("Person2");
> }
> else if (vars.get("Relation3")) >= 6
> {
>    vars.put("Relation") = vars.get("Relation3");
>    vars.put("Person") = vars.get("Person3");
> }
> else if (vars.get("Relation4")) >= 6
> {
>    vars.put("Relation") = vars.get("Relation4");
>    vars.put("Person") = vars.get("Person4");
> }
> else if (vars.get("Relation5")) >= 6
> {
>    vars.put("Relation") = vars.get("Relation5");
>    vars.put("Person") = vars.get("Person5");
> }
> else if (vars.get("Relation6")) >= 6
> {
>    vars.put("Relation") = vars.get("Relation6");
>    vars.put("Person") = vars.get("Person6");
> }
>
> but that made no difference - same error.

That's not possible. There may be an error, but it cannot possibly be:

jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval
Sourced file: inline evaluation of: ``vars.put("") = vars.get("4");
vars.put("${Person}") = vars.get("220780625"); if  . . . '' : Can't
assign to prefix.

... apart from the last part about the if.

See above.

> Regards,
> David Schulberg
>
> Object Consulting | Senior Consultant
> email: david.schulberg@objectconsulting.com.au
> ----------------------------------------------------------------
> consulting | development | training | support
> our experience makes the difference
>
> ________________________________
>
> From: sebb [mailto:sebbaz@gmail.com]
> Sent: Tue 14/08/2007 6:54 PM
> To: JMeter Users List
> Subject: Re: Beanshell pre-processor
>
>
>
> On 14/08/07, David Schulberg <Da...@objectconsulting.com.au> wrote:
> > Hi,
> >
> > Have added a beanshell preprocessor to a sampler for the purpose of setting variables to be used in the sampler request.
> >
> > It doesn't work - get error in jmeter log:
>
> Because you are doing double evaluation of the variables.
>
> > jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``vars.put("") = vars.get("4"); vars.put("${Person}") = vars.get("220780625"); if  . . . '' : Can't assign to prefix.
> >
> > My preprocessor script is attempting to set user variables Relation and Person:
> >
> > vars.put("${Relation}") = vars.get("${Relation2}");
>
> Assume Relation="aunt" and Relation2="uncle", then what Beanshell sees is
>
> vars.put("aunt") = vars.get("uncle");
>
> because the variables are textually substituted in the script field
> before handing to Beanshell.
>
> You need to use
>
> vars.put("Relation") = vars.get("Relation2");
>
>
> > vars.put("${Person}") = vars.get("${Person2}");
> > if (vars.get("${Relation2}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation2}");
> >    vars.put("${Person}") = vars.get("${Person2}");
> > }
> > else if (vars.get("${Relation3}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation3}");
> >    vars.put("${Person}") = vars.get("${Person3}");
> > }
> > else if (vars.get("${Relation4}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation4}");
> >    vars.put("${Person}") = vars.get("${Person4}");
> > }
> > else if (vars.get("${Relation5}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation5}");
> >    vars.put("${Person}") = vars.get("${Person5}");
> > }
> > else if (vars.get("${Relation6}")) >= 6
> > {
> >    vars.put("${Relation}") = vars.get("${Relation6}");
> >    vars.put("${Person}") = vars.get("${Person6}");
> > }
> >
> >
> > David Schulberg
> >
> > Object Consulting | Senior Consultant
> > email: david.schulberg@objectconsulting.com.au
> > ----------------------------------------------------------------
> > consulting | development | training | support
> > our experience makes the difference
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


RE: Beanshell pre-processor

Posted by David Schulberg <Da...@objectconsulting.com.au>.
Hi,
 
I changed my beanshell script as per the suggestion to 
 
vars.put("Relation") = vars.get("Relation2");
vars.put("Person") = vars.get("Person2");
if (vars.get("Relation2")) >= 6
{
    vars.put("Relation") = vars.get("Relation2");
    vars.put("Person") = vars.get("Person2");
}
else if (vars.get("Relation3")) >= 6
{
    vars.put("Relation") = vars.get("Relation3");
    vars.put("Person") = vars.get("Person3");
}
else if (vars.get("Relation4")) >= 6
{
    vars.put("Relation") = vars.get("Relation4");
    vars.put("Person") = vars.get("Person4");
}
else if (vars.get("Relation5")) >= 6
{
    vars.put("Relation") = vars.get("Relation5");
    vars.put("Person") = vars.get("Person5");
}
else if (vars.get("Relation6")) >= 6
{
    vars.put("Relation") = vars.get("Relation6");
    vars.put("Person") = vars.get("Person6");
}

but that made no difference - same error.
 
Regards,
David Schulberg

Object Consulting | Senior Consultant
email: david.schulberg@objectconsulting.com.au
----------------------------------------------------------------
consulting | development | training | support
our experience makes the difference 

________________________________

From: sebb [mailto:sebbaz@gmail.com]
Sent: Tue 14/08/2007 6:54 PM
To: JMeter Users List
Subject: Re: Beanshell pre-processor



On 14/08/07, David Schulberg <Da...@objectconsulting.com.au> wrote:
> Hi,
>
> Have added a beanshell preprocessor to a sampler for the purpose of setting variables to be used in the sampler request.
>
> It doesn't work - get error in jmeter log:

Because you are doing double evaluation of the variables.

> jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``vars.put("") = vars.get("4"); vars.put("${Person}") = vars.get("220780625"); if  . . . '' : Can't assign to prefix.
>
> My preprocessor script is attempting to set user variables Relation and Person:
>
> vars.put("${Relation}") = vars.get("${Relation2}");

Assume Relation="aunt" and Relation2="uncle", then what Beanshell sees is

vars.put("aunt") = vars.get("uncle");

because the variables are textually substituted in the script field
before handing to Beanshell.

You need to use

vars.put("Relation") = vars.get("Relation2");


> vars.put("${Person}") = vars.get("${Person2}");
> if (vars.get("${Relation2}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation2}");
>    vars.put("${Person}") = vars.get("${Person2}");
> }
> else if (vars.get("${Relation3}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation3}");
>    vars.put("${Person}") = vars.get("${Person3}");
> }
> else if (vars.get("${Relation4}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation4}");
>    vars.put("${Person}") = vars.get("${Person4}");
> }
> else if (vars.get("${Relation5}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation5}");
>    vars.put("${Person}") = vars.get("${Person5}");
> }
> else if (vars.get("${Relation6}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation6}");
>    vars.put("${Person}") = vars.get("${Person6}");
> }
>
>
> David Schulberg
>
> Object Consulting | Senior Consultant
> email: david.schulberg@objectconsulting.com.au
> ----------------------------------------------------------------
> consulting | development | training | support
> our experience makes the difference
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org





Re: Beanshell pre-processor

Posted by sebb <se...@gmail.com>.
On 14/08/07, David Schulberg <Da...@objectconsulting.com.au> wrote:
> Hi,
>
> Have added a beanshell preprocessor to a sampler for the purpose of setting variables to be used in the sampler request.
>
> It doesn't work - get error in jmeter log:

Because you are doing double evaluation of the variables.

> jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``vars.put("") = vars.get("4"); vars.put("${Person}") = vars.get("220780625"); if  . . . '' : Can't assign to prefix.
>
> My preprocessor script is attempting to set user variables Relation and Person:
>
> vars.put("${Relation}") = vars.get("${Relation2}");

Assume Relation="aunt" and Relation2="uncle", then what Beanshell sees is

vars.put("aunt") = vars.get("uncle");

because the variables are textually substituted in the script field
before handing to Beanshell.

You need to use

vars.put("Relation") = vars.get("Relation2");


> vars.put("${Person}") = vars.get("${Person2}");
> if (vars.get("${Relation2}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation2}");
>    vars.put("${Person}") = vars.get("${Person2}");
> }
> else if (vars.get("${Relation3}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation3}");
>    vars.put("${Person}") = vars.get("${Person3}");
> }
> else if (vars.get("${Relation4}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation4}");
>    vars.put("${Person}") = vars.get("${Person4}");
> }
> else if (vars.get("${Relation5}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation5}");
>    vars.put("${Person}") = vars.get("${Person5}");
> }
> else if (vars.get("${Relation6}")) >= 6
> {
>    vars.put("${Relation}") = vars.get("${Relation6}");
>    vars.put("${Person}") = vars.get("${Person6}");
> }
>
>
> David Schulberg
>
> Object Consulting | Senior Consultant
> email: david.schulberg@objectconsulting.com.au
> ----------------------------------------------------------------
> consulting | development | training | support
> our experience makes the difference
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org