You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by mwolfe38 <mw...@gmail.com> on 2009/11/06 02:01:50 UTC

How do I call function passing in script variables

I was able to get jMeter to include a file with beanshell functions in it
automatically by using the 
property:
beanshell.function.init=BeanShellFunction.bshrc

However, I have a function which I want to use that will take a SampleResult
and do some modifications (basically its an xml document but its not well
formed in that it has multiple top level nodes, I want to wrap it and modify
it.. I've got all this working but I can't get it working within a
function).

here is what I have:
print("including functions");
wrapResponse(SampleResult result, String prefix,String suffix, ) {
	log.info("Calling wrapResponse");
	encoding = result.getDataEncodingWithDefault();
	String data = prefix + (new String(result.getResponseData())) + suffix;
	result.setResponseData(data.getBytes(encoding));	
}

I know that this file is being included but i can't seem to pass the result
value to the function.

This is within a BSF PostProcessor which has a prev variable which has the
response in it (like I said, i've verified this works when not in a
function).

The string values pass just fine though..

I'm calling it like this:
${__BeanShell(wrapResponse(prev\,"<tiqs>"\,"<tiqs>"))}



Here is the error message:

2009/11/05 17:04:03 WARN  - jmeter.functions.BeanShell: Error running BSH
script org.apache.jorphan.util.JMeterException: Error invoking bsh method:
eval	Sourced file: inline evaluation of:
``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev 
	at
org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:192)
	at
org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:198)
	at org.apache.jmeter.functions.BeanShell.execute(BeanShell.java:106)
	at
org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:143)
	at
org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112)
	at
org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:89)
	at
org.apache.jmeter.testbeans.TestBeanHelper.prepare(TestBeanHelper.java:69)
	at
org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:622)
	at
org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:356)
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:243)
	at java.lang.Thread.run(Unknown Source)
Caused by: 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:171)
	... 10 more
Caused by: Sourced file: inline evaluation of:
``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev  : at
Line: 1 : in file: inline evaluation of:
``wrapResponse(prev,"<tiqs>","<tiqs>");'' : ( prev , "<tiqs>" , "<tiqs>" ) 

	at bsh.BSHArguments.getArguments(Unknown Source)
	at bsh.BSHMethodInvocation.eval(Unknown Source)
	at bsh.BSHPrimaryExpression.eval(Unknown Source)
	at bsh.BSHPrimaryExpression.eval(Unknown Source)
	at bsh.Interpreter.eval(Unknown Source)
	at bsh.Interpreter.eval(Unknown Source)
	at bsh.Interpreter.eval(Unknown Source)
	... 15 more

-- 
View this message in context: http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26225188.html
Sent from the JMeter - User mailing list archive at Nabble.com.


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


Re: How do I call function passing in script variables

Posted by sebb <se...@gmail.com>.
On 08/11/2009, mwolfe38 <mw...@gmail.com> wrote:
>
>  Your right!
>  Setting the property to
>  beanshell.postprocessor.init=functions.bsh
>  did the trick.
>  I also had to switch my post processor from BSF to beanshell (which i
>  suppose is basically on the same thing since I was using the beanshell
>  language from the bsf post processor).

It's not the same. The beanshell.<type>.init properties only apply to
the BeanShell test elements.

>  Thanks for you help

The properties are described in the jmeter.properties file.

>
>  sebb-2-2 wrote:
>  >
>  > On 07/11/2009, mwolfe38 <mw...@gmail.com> wrote:
>  >>
>  >>  Sorry maybe what I said was confusing.
>  >>  I was using a BSF PostProcessor which mentions a "prev" variable which I
>  >>  originally was using in a script right within jmeter, and it worked
>  >> fine..
>  >>  Problem was I needed to do that same thing over and over, so I figured
>  >> it
>  >>  would be better to put the logic into a function that would be available
>  >> to
>  >>  any beanshell script. So i made my own beanshell file with functions in
>  >> it,
>  >>  used the property:
>  >>  beanshell.function.init (as described in the documentation)
>  >
>  > That won't work with a postprocessor, it's only for actual BeanShell
>  > function calls.
>  > You need
>  >
>  > beanshell.postprocessor.init=etc
>  >
>  >>  and referenced
>  >>  the file from a  user.properties file, and pointed it to my beanshell
>  >>  script. I got that working just fine but couldn't figure out how to pass
>  >> the
>  >>  prev variable to the script.
>  >
>  > I don't think you need to - just reference the variable.
>  >
>  >>  Originally I tried calling the function
>  >>  directly from the script, but that didn't work (btw, is there anyway to
>  >> do
>  >>  that without using the __BeanShell function?)
>  >
>  > You can call functions directly.
>  >
>  >>  It would sure be great if in the script section of the bsf postprocessor
>  >> if
>  >>  I could just call the function I created directly. Anyways, I figured
>  >> that
>  >>  the SampleResult value was the same thing as the prev variable in this
>  >> case,
>  >>  i was just kind of curious if I could use the variables exposed in the
>  >>  script section rather than just those exposed to the __BeanShell
>  >> function.
>  >>
>  >
>  > You can,  but you need to use the correct init file ...
>  >
>  >>
>  >>  sebb-2-2 wrote:
>  >>  >
>  >>  > On 06/11/2009, mwolfe38 <mw...@gmail.com> wrote:
>  >>  >>
>  >>  >>  After playing around with it and reading some more documentation I
>  >>  >> figured
>  >>  >>  out how to do it.
>  >>  >>  I needed to 1. Import the right package to use a SampleResult in my
>  >>  >> script
>  >>  >>  file:
>  >>  >>  import org.apache.jmeter.samplers.SampleResult;
>  >>  >>
>  >>  >>  print("Including user defined functions");
>  >>  >>
>  >>  >> wrapResponse(SampleResult  result, String prefix,String suffix) {
>  >>  >>         log.info("Calling wrapResponse");
>  >>  >>         encoding = result.getDataEncodingWithDefault();
>  >>  >>         String data = prefix + (new String(result.getResponseData()))
>  >> +
>  >>  >> suffix;
>  >>  >>         result.setResponseData(data.getBytes(encoding));
>  >>  >>  }
>  >>  >>
>  >>  >>
>  >>  >> Then I called it like this:
>  >>  >>
>  >>  >>  ${__BeanShell(wrapResponse(SampleResult\,"<tiqs>"\,"<tiqs>"))}
>  >>  >>
>  >>  >>  I'm not sure how I could have accessed the prev value that is set
>  >> for
>  >>  >> the
>  >>  >>  script, but the documentation said that there was a SampleResult
>  >>  >> variable
>  >>  >>  for the __BeanShell function and that did in fact work.
>  >>  >
>  >>  > The BeanShell function documentation does not mention "prev" at all:
>  >>  >
>  >>  > http://jakarta.apache.org/jmeter/usermanual/functions.html#__BeanShell
>  >>  >
>  >>  > However, "prev" is set for some of the BeanShell test elements - but
>  >>  > they are not functions...
>  >>  >
>  >>  >>
>  >>  >>
>  >>  >>
>  >>  >>  mwolfe38 wrote:
>  >>  >>  >
>  >>  >>  > I was able to get jMeter to include a file with beanshell
>  >> functions in
>  >>  >> it
>  >>  >>  > automatically by using the
>  >>  >>  > property:
>  >>  >>  > beanshell.function.init=BeanShellFunction.bshrc
>  >>  >>  >
>  >>  >>  > However, I have a function which I want to use that will take a
>  >>  >>  > SampleResult and do some modifications (basically its an xml
>  >> document
>  >>  >> but
>  >>  >>  > its not well formed in that it has multiple top level nodes, I
>  >> want to
>  >>  >>  > wrap it and modify it.. I've got all this working but I can't get
>  >> it
>  >>  >>  > working within a function).
>  >>  >>  >
>  >>  >>  > here is what I have:
>  >>  >>  > print("including functions");
>  >>  >>  > wrapResponse(SampleResult result, String prefix,String suffix, ) {
>  >>  >>  >       log.info("Calling wrapResponse");
>  >>  >>  >       encoding = result.getDataEncodingWithDefault();
>  >>  >>  >       String data = prefix + (new
>  >> String(result.getResponseData())) +
>  >>  >> suffix;
>  >>  >>  >       result.setResponseData(data.getBytes(encoding));
>  >>  >>  > }
>  >>  >>  >
>  >>  >>  > I know that this file is being included but i can't seem to pass
>  >> the
>  >>  >>  > result value to the function.
>  >>  >>  >
>  >>  >>  > This is within a BSF PostProcessor which has a prev variable which
>  >> has
>  >>  >> the
>  >>  >>  > response in it (like I said, i've verified this works when not in
>  >> a
>  >>  >>  > function).
>  >>  >>  >
>  >>  >>  > The string values pass just fine though..
>  >>  >>  >
>  >>  >>  > I'm calling it like this:
>  >>  >>  > ${__BeanShell(wrapResponse(prev\,"<tiqs>"\,"<tiqs>"))}
>  >>  >>  >
>  >>  >>  >
>  >>  >>  >
>  >>  >>  > Here is the error message:
>  >>  >>  >
>  >>  >>  > 2009/11/05 17:04:03 WARN  - jmeter.functions.BeanShell: Error
>  >> running
>  >>  >> BSH
>  >>  >>  > script org.apache.jorphan.util.JMeterException: Error invoking bsh
>  >>  >> method:
>  >>  >>  > eval  Sourced file: inline evaluation of:
>  >>  >>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument:
>  >> prev
>  >>  >>  >       at
>  >>  >>  >
>  >>  >>
>  >> org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:192)
>  >>  >>  >       at
>  >>  >>  >
>  >>  >>
>  >> org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:198)
>  >>  >>  >       at
>  >>  >> org.apache.jmeter.functions.BeanShell.execute(BeanShell.java:106)
>  >>  >>  >       at
>  >>  >>  >
>  >>  >>
>  >> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:143)
>  >>  >>  >       at
>  >>  >>  >
>  >>  >>
>  >> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112)
>  >>  >>  >       at
>  >>  >>  >
>  >>  >>
>  >> org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:89)
>  >>  >>  >       at
>  >>  >>  >
>  >>  >>
>  >> org.apache.jmeter.testbeans.TestBeanHelper.prepare(TestBeanHelper.java:69)
>  >>  >>  >       at
>  >>  >>  >
>  >>  >>
>  >> org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:622)
>  >>  >>  >       at
>  >>  >>  >
>  >>  >>
>  >> org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:356)
>  >>  >>  >       at
>  >>  >> org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:243)
>  >>  >>  >       at java.lang.Thread.run(Unknown Source)
>  >>  >>  > Caused by: 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:171)
>  >>  >>  >       ... 10 more
>  >>  >>  > Caused by: Sourced file: inline evaluation of:
>  >>  >>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument:
>  >> prev
>  >>  >> : at
>  >>  >>  > Line: 1 : in file: inline evaluation of:
>  >>  >>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : ( prev , "<tiqs>" ,
>  >>  >> "<tiqs>" )
>  >>  >>  >
>  >>  >>  >       at bsh.BSHArguments.getArguments(Unknown Source)
>  >>  >>  >       at bsh.BSHMethodInvocation.eval(Unknown Source)
>  >>  >>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>  >>  >>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>  >>  >>  >       at bsh.Interpreter.eval(Unknown Source)
>  >>  >>  >       at bsh.Interpreter.eval(Unknown Source)
>  >>  >>  >       at bsh.Interpreter.eval(Unknown Source)
>  >>  >>  >       ... 15 more
>  >>  >>  >
>  >>  >>  >
>  >>  >>
>  >>  >>  --
>  >>  >>
>  >>  >> View this message in context:
>  >>  >>
>  >> http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26225648.html
>  >>  >>
>  >>  >> Sent from the JMeter - User mailing list archive at Nabble.com.
>  >>  >>
>  >>  >>
>  >>  >>
>  >> ---------------------------------------------------------------------
>  >>  >>  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
>  >>  >
>  >>  >
>  >>  >
>  >>
>  >>
>  >> --
>  >>  View this message in context:
>  >> http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26238884.html
>  >>
>  >> Sent from the JMeter - User mailing list archive at Nabble.com.
>  >>
>  >>
>  >>  ---------------------------------------------------------------------
>  >>  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
>  >
>  >
>  >
>
>  --
>
> View this message in context: http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26250887.html
>
> Sent from the JMeter - User mailing list archive at Nabble.com.
>
>
>  ---------------------------------------------------------------------
>  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: How do I call function passing in script variables

Posted by mwolfe38 <mw...@gmail.com>.
Your right!
Setting the property to
beanshell.postprocessor.init=functions.bsh
did the trick.
I also had to switch my post processor from BSF to beanshell (which i
suppose is basically on the same thing since I was using the beanshell
language from the bsf post processor).

Thanks for you help

sebb-2-2 wrote:
> 
> On 07/11/2009, mwolfe38 <mw...@gmail.com> wrote:
>>
>>  Sorry maybe what I said was confusing.
>>  I was using a BSF PostProcessor which mentions a "prev" variable which I
>>  originally was using in a script right within jmeter, and it worked
>> fine..
>>  Problem was I needed to do that same thing over and over, so I figured
>> it
>>  would be better to put the logic into a function that would be available
>> to
>>  any beanshell script. So i made my own beanshell file with functions in
>> it,
>>  used the property:
>>  beanshell.function.init (as described in the documentation)
> 
> That won't work with a postprocessor, it's only for actual BeanShell
> function calls.
> You need
> 
> beanshell.postprocessor.init=etc
> 
>>  and referenced
>>  the file from a  user.properties file, and pointed it to my beanshell
>>  script. I got that working just fine but couldn't figure out how to pass
>> the
>>  prev variable to the script.
> 
> I don't think you need to - just reference the variable.
> 
>>  Originally I tried calling the function
>>  directly from the script, but that didn't work (btw, is there anyway to
>> do
>>  that without using the __BeanShell function?)
> 
> You can call functions directly.
> 
>>  It would sure be great if in the script section of the bsf postprocessor
>> if
>>  I could just call the function I created directly. Anyways, I figured
>> that
>>  the SampleResult value was the same thing as the prev variable in this
>> case,
>>  i was just kind of curious if I could use the variables exposed in the
>>  script section rather than just those exposed to the __BeanShell
>> function.
>>
> 
> You can,  but you need to use the correct init file ...
> 
>>
>>  sebb-2-2 wrote:
>>  >
>>  > On 06/11/2009, mwolfe38 <mw...@gmail.com> wrote:
>>  >>
>>  >>  After playing around with it and reading some more documentation I
>>  >> figured
>>  >>  out how to do it.
>>  >>  I needed to 1. Import the right package to use a SampleResult in my
>>  >> script
>>  >>  file:
>>  >>  import org.apache.jmeter.samplers.SampleResult;
>>  >>
>>  >>  print("Including user defined functions");
>>  >>
>>  >> wrapResponse(SampleResult  result, String prefix,String suffix) {
>>  >>         log.info("Calling wrapResponse");
>>  >>         encoding = result.getDataEncodingWithDefault();
>>  >>         String data = prefix + (new String(result.getResponseData()))
>> +
>>  >> suffix;
>>  >>         result.setResponseData(data.getBytes(encoding));
>>  >>  }
>>  >>
>>  >>
>>  >> Then I called it like this:
>>  >>
>>  >>  ${__BeanShell(wrapResponse(SampleResult\,"<tiqs>"\,"<tiqs>"))}
>>  >>
>>  >>  I'm not sure how I could have accessed the prev value that is set
>> for
>>  >> the
>>  >>  script, but the documentation said that there was a SampleResult
>>  >> variable
>>  >>  for the __BeanShell function and that did in fact work.
>>  >
>>  > The BeanShell function documentation does not mention "prev" at all:
>>  >
>>  > http://jakarta.apache.org/jmeter/usermanual/functions.html#__BeanShell
>>  >
>>  > However, "prev" is set for some of the BeanShell test elements - but
>>  > they are not functions...
>>  >
>>  >>
>>  >>
>>  >>
>>  >>  mwolfe38 wrote:
>>  >>  >
>>  >>  > I was able to get jMeter to include a file with beanshell
>> functions in
>>  >> it
>>  >>  > automatically by using the
>>  >>  > property:
>>  >>  > beanshell.function.init=BeanShellFunction.bshrc
>>  >>  >
>>  >>  > However, I have a function which I want to use that will take a
>>  >>  > SampleResult and do some modifications (basically its an xml
>> document
>>  >> but
>>  >>  > its not well formed in that it has multiple top level nodes, I
>> want to
>>  >>  > wrap it and modify it.. I've got all this working but I can't get
>> it
>>  >>  > working within a function).
>>  >>  >
>>  >>  > here is what I have:
>>  >>  > print("including functions");
>>  >>  > wrapResponse(SampleResult result, String prefix,String suffix, ) {
>>  >>  >       log.info("Calling wrapResponse");
>>  >>  >       encoding = result.getDataEncodingWithDefault();
>>  >>  >       String data = prefix + (new
>> String(result.getResponseData())) +
>>  >> suffix;
>>  >>  >       result.setResponseData(data.getBytes(encoding));
>>  >>  > }
>>  >>  >
>>  >>  > I know that this file is being included but i can't seem to pass
>> the
>>  >>  > result value to the function.
>>  >>  >
>>  >>  > This is within a BSF PostProcessor which has a prev variable which
>> has
>>  >> the
>>  >>  > response in it (like I said, i've verified this works when not in
>> a
>>  >>  > function).
>>  >>  >
>>  >>  > The string values pass just fine though..
>>  >>  >
>>  >>  > I'm calling it like this:
>>  >>  > ${__BeanShell(wrapResponse(prev\,"<tiqs>"\,"<tiqs>"))}
>>  >>  >
>>  >>  >
>>  >>  >
>>  >>  > Here is the error message:
>>  >>  >
>>  >>  > 2009/11/05 17:04:03 WARN  - jmeter.functions.BeanShell: Error
>> running
>>  >> BSH
>>  >>  > script org.apache.jorphan.util.JMeterException: Error invoking bsh
>>  >> method:
>>  >>  > eval  Sourced file: inline evaluation of:
>>  >>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument:
>> prev
>>  >>  >       at
>>  >>  >
>>  >>
>> org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:192)
>>  >>  >       at
>>  >>  >
>>  >>
>> org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:198)
>>  >>  >       at
>>  >> org.apache.jmeter.functions.BeanShell.execute(BeanShell.java:106)
>>  >>  >       at
>>  >>  >
>>  >>
>> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:143)
>>  >>  >       at
>>  >>  >
>>  >>
>> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112)
>>  >>  >       at
>>  >>  >
>>  >>
>> org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:89)
>>  >>  >       at
>>  >>  >
>>  >>
>> org.apache.jmeter.testbeans.TestBeanHelper.prepare(TestBeanHelper.java:69)
>>  >>  >       at
>>  >>  >
>>  >>
>> org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:622)
>>  >>  >       at
>>  >>  >
>>  >>
>> org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:356)
>>  >>  >       at
>>  >> org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:243)
>>  >>  >       at java.lang.Thread.run(Unknown Source)
>>  >>  > Caused by: 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:171)
>>  >>  >       ... 10 more
>>  >>  > Caused by: Sourced file: inline evaluation of:
>>  >>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument:
>> prev
>>  >> : at
>>  >>  > Line: 1 : in file: inline evaluation of:
>>  >>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : ( prev , "<tiqs>" ,
>>  >> "<tiqs>" )
>>  >>  >
>>  >>  >       at bsh.BSHArguments.getArguments(Unknown Source)
>>  >>  >       at bsh.BSHMethodInvocation.eval(Unknown Source)
>>  >>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>>  >>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>>  >>  >       at bsh.Interpreter.eval(Unknown Source)
>>  >>  >       at bsh.Interpreter.eval(Unknown Source)
>>  >>  >       at bsh.Interpreter.eval(Unknown Source)
>>  >>  >       ... 15 more
>>  >>  >
>>  >>  >
>>  >>
>>  >>  --
>>  >>
>>  >> View this message in context:
>>  >>
>> http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26225648.html
>>  >>
>>  >> Sent from the JMeter - User mailing list archive at Nabble.com.
>>  >>
>>  >>
>>  >> 
>> ---------------------------------------------------------------------
>>  >>  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
>>  >
>>  >
>>  >
>>
>>
>> --
>>  View this message in context:
>> http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26238884.html
>>
>> Sent from the JMeter - User mailing list archive at Nabble.com.
>>
>>
>>  ---------------------------------------------------------------------
>>  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
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26250887.html
Sent from the JMeter - User mailing list archive at Nabble.com.


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


Re: How do I call function passing in script variables

Posted by sebb <se...@gmail.com>.
On 07/11/2009, mwolfe38 <mw...@gmail.com> wrote:
>
>  Sorry maybe what I said was confusing.
>  I was using a BSF PostProcessor which mentions a "prev" variable which I
>  originally was using in a script right within jmeter, and it worked fine..
>  Problem was I needed to do that same thing over and over, so I figured it
>  would be better to put the logic into a function that would be available to
>  any beanshell script. So i made my own beanshell file with functions in it,
>  used the property:
>  beanshell.function.init (as described in the documentation)

That won't work with a postprocessor, it's only for actual BeanShell
function calls.
You need

beanshell.postprocessor.init=etc

>  and referenced
>  the file from a  user.properties file, and pointed it to my beanshell
>  script. I got that working just fine but couldn't figure out how to pass the
>  prev variable to the script.

I don't think you need to - just reference the variable.

>  Originally I tried calling the function
>  directly from the script, but that didn't work (btw, is there anyway to do
>  that without using the __BeanShell function?)

You can call functions directly.

>  It would sure be great if in the script section of the bsf postprocessor if
>  I could just call the function I created directly. Anyways, I figured that
>  the SampleResult value was the same thing as the prev variable in this case,
>  i was just kind of curious if I could use the variables exposed in the
>  script section rather than just those exposed to the __BeanShell function.
>

You can,  but you need to use the correct init file ...

>
>  sebb-2-2 wrote:
>  >
>  > On 06/11/2009, mwolfe38 <mw...@gmail.com> wrote:
>  >>
>  >>  After playing around with it and reading some more documentation I
>  >> figured
>  >>  out how to do it.
>  >>  I needed to 1. Import the right package to use a SampleResult in my
>  >> script
>  >>  file:
>  >>  import org.apache.jmeter.samplers.SampleResult;
>  >>
>  >>  print("Including user defined functions");
>  >>
>  >> wrapResponse(SampleResult  result, String prefix,String suffix) {
>  >>         log.info("Calling wrapResponse");
>  >>         encoding = result.getDataEncodingWithDefault();
>  >>         String data = prefix + (new String(result.getResponseData())) +
>  >> suffix;
>  >>         result.setResponseData(data.getBytes(encoding));
>  >>  }
>  >>
>  >>
>  >> Then I called it like this:
>  >>
>  >>  ${__BeanShell(wrapResponse(SampleResult\,"<tiqs>"\,"<tiqs>"))}
>  >>
>  >>  I'm not sure how I could have accessed the prev value that is set for
>  >> the
>  >>  script, but the documentation said that there was a SampleResult
>  >> variable
>  >>  for the __BeanShell function and that did in fact work.
>  >
>  > The BeanShell function documentation does not mention "prev" at all:
>  >
>  > http://jakarta.apache.org/jmeter/usermanual/functions.html#__BeanShell
>  >
>  > However, "prev" is set for some of the BeanShell test elements - but
>  > they are not functions...
>  >
>  >>
>  >>
>  >>
>  >>  mwolfe38 wrote:
>  >>  >
>  >>  > I was able to get jMeter to include a file with beanshell functions in
>  >> it
>  >>  > automatically by using the
>  >>  > property:
>  >>  > beanshell.function.init=BeanShellFunction.bshrc
>  >>  >
>  >>  > However, I have a function which I want to use that will take a
>  >>  > SampleResult and do some modifications (basically its an xml document
>  >> but
>  >>  > its not well formed in that it has multiple top level nodes, I want to
>  >>  > wrap it and modify it.. I've got all this working but I can't get it
>  >>  > working within a function).
>  >>  >
>  >>  > here is what I have:
>  >>  > print("including functions");
>  >>  > wrapResponse(SampleResult result, String prefix,String suffix, ) {
>  >>  >       log.info("Calling wrapResponse");
>  >>  >       encoding = result.getDataEncodingWithDefault();
>  >>  >       String data = prefix + (new String(result.getResponseData())) +
>  >> suffix;
>  >>  >       result.setResponseData(data.getBytes(encoding));
>  >>  > }
>  >>  >
>  >>  > I know that this file is being included but i can't seem to pass the
>  >>  > result value to the function.
>  >>  >
>  >>  > This is within a BSF PostProcessor which has a prev variable which has
>  >> the
>  >>  > response in it (like I said, i've verified this works when not in a
>  >>  > function).
>  >>  >
>  >>  > The string values pass just fine though..
>  >>  >
>  >>  > I'm calling it like this:
>  >>  > ${__BeanShell(wrapResponse(prev\,"<tiqs>"\,"<tiqs>"))}
>  >>  >
>  >>  >
>  >>  >
>  >>  > Here is the error message:
>  >>  >
>  >>  > 2009/11/05 17:04:03 WARN  - jmeter.functions.BeanShell: Error running
>  >> BSH
>  >>  > script org.apache.jorphan.util.JMeterException: Error invoking bsh
>  >> method:
>  >>  > eval  Sourced file: inline evaluation of:
>  >>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev
>  >>  >       at
>  >>  >
>  >> org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:192)
>  >>  >       at
>  >>  >
>  >> org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:198)
>  >>  >       at
>  >> org.apache.jmeter.functions.BeanShell.execute(BeanShell.java:106)
>  >>  >       at
>  >>  >
>  >> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:143)
>  >>  >       at
>  >>  >
>  >> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112)
>  >>  >       at
>  >>  >
>  >> org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:89)
>  >>  >       at
>  >>  >
>  >> org.apache.jmeter.testbeans.TestBeanHelper.prepare(TestBeanHelper.java:69)
>  >>  >       at
>  >>  >
>  >> org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:622)
>  >>  >       at
>  >>  >
>  >> org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:356)
>  >>  >       at
>  >> org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:243)
>  >>  >       at java.lang.Thread.run(Unknown Source)
>  >>  > Caused by: 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:171)
>  >>  >       ... 10 more
>  >>  > Caused by: Sourced file: inline evaluation of:
>  >>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev
>  >> : at
>  >>  > Line: 1 : in file: inline evaluation of:
>  >>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : ( prev , "<tiqs>" ,
>  >> "<tiqs>" )
>  >>  >
>  >>  >       at bsh.BSHArguments.getArguments(Unknown Source)
>  >>  >       at bsh.BSHMethodInvocation.eval(Unknown Source)
>  >>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>  >>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>  >>  >       at bsh.Interpreter.eval(Unknown Source)
>  >>  >       at bsh.Interpreter.eval(Unknown Source)
>  >>  >       at bsh.Interpreter.eval(Unknown Source)
>  >>  >       ... 15 more
>  >>  >
>  >>  >
>  >>
>  >>  --
>  >>
>  >> View this message in context:
>  >> http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26225648.html
>  >>
>  >> Sent from the JMeter - User mailing list archive at Nabble.com.
>  >>
>  >>
>  >>  ---------------------------------------------------------------------
>  >>  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
>  >
>  >
>  >
>
>
> --
>  View this message in context: http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26238884.html
>
> Sent from the JMeter - User mailing list archive at Nabble.com.
>
>
>  ---------------------------------------------------------------------
>  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: How do I call function passing in script variables

Posted by mwolfe38 <mw...@gmail.com>.
Sorry maybe what I said was confusing.
I was using a BSF PostProcessor which mentions a "prev" variable which I
originally was using in a script right within jmeter, and it worked fine..
Problem was I needed to do that same thing over and over, so I figured it
would be better to put the logic into a function that would be available to
any beanshell script. So i made my own beanshell file with functions in it,
used the property:
beanshell.function.init (as described in the documentation) and referenced
the file from a  user.properties file, and pointed it to my beanshell
script. I got that working just fine but couldn't figure out how to pass the
prev variable to the script. Originally I tried calling the function
directly from the script, but that didn't work (btw, is there anyway to do
that without using the __BeanShell function?)
It would sure be great if in the script section of the bsf postprocessor if
I could just call the function I created directly. Anyways, I figured that
the SampleResult value was the same thing as the prev variable in this case,
i was just kind of curious if I could use the variables exposed in the
script section rather than just those exposed to the __BeanShell function.


sebb-2-2 wrote:
> 
> On 06/11/2009, mwolfe38 <mw...@gmail.com> wrote:
>>
>>  After playing around with it and reading some more documentation I
>> figured
>>  out how to do it.
>>  I needed to 1. Import the right package to use a SampleResult in my
>> script
>>  file:
>>  import org.apache.jmeter.samplers.SampleResult;
>>
>>  print("Including user defined functions");
>>
>> wrapResponse(SampleResult  result, String prefix,String suffix) {
>>         log.info("Calling wrapResponse");
>>         encoding = result.getDataEncodingWithDefault();
>>         String data = prefix + (new String(result.getResponseData())) +
>> suffix;
>>         result.setResponseData(data.getBytes(encoding));
>>  }
>>
>>
>> Then I called it like this:
>>
>>  ${__BeanShell(wrapResponse(SampleResult\,"<tiqs>"\,"<tiqs>"))}
>>
>>  I'm not sure how I could have accessed the prev value that is set for
>> the
>>  script, but the documentation said that there was a SampleResult
>> variable
>>  for the __BeanShell function and that did in fact work.
> 
> The BeanShell function documentation does not mention "prev" at all:
> 
> http://jakarta.apache.org/jmeter/usermanual/functions.html#__BeanShell
> 
> However, "prev" is set for some of the BeanShell test elements - but
> they are not functions...
> 
>>
>>
>>
>>  mwolfe38 wrote:
>>  >
>>  > I was able to get jMeter to include a file with beanshell functions in
>> it
>>  > automatically by using the
>>  > property:
>>  > beanshell.function.init=BeanShellFunction.bshrc
>>  >
>>  > However, I have a function which I want to use that will take a
>>  > SampleResult and do some modifications (basically its an xml document
>> but
>>  > its not well formed in that it has multiple top level nodes, I want to
>>  > wrap it and modify it.. I've got all this working but I can't get it
>>  > working within a function).
>>  >
>>  > here is what I have:
>>  > print("including functions");
>>  > wrapResponse(SampleResult result, String prefix,String suffix, ) {
>>  >       log.info("Calling wrapResponse");
>>  >       encoding = result.getDataEncodingWithDefault();
>>  >       String data = prefix + (new String(result.getResponseData())) +
>> suffix;
>>  >       result.setResponseData(data.getBytes(encoding));
>>  > }
>>  >
>>  > I know that this file is being included but i can't seem to pass the
>>  > result value to the function.
>>  >
>>  > This is within a BSF PostProcessor which has a prev variable which has
>> the
>>  > response in it (like I said, i've verified this works when not in a
>>  > function).
>>  >
>>  > The string values pass just fine though..
>>  >
>>  > I'm calling it like this:
>>  > ${__BeanShell(wrapResponse(prev\,"<tiqs>"\,"<tiqs>"))}
>>  >
>>  >
>>  >
>>  > Here is the error message:
>>  >
>>  > 2009/11/05 17:04:03 WARN  - jmeter.functions.BeanShell: Error running
>> BSH
>>  > script org.apache.jorphan.util.JMeterException: Error invoking bsh
>> method:
>>  > eval  Sourced file: inline evaluation of:
>>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev
>>  >       at
>>  >
>> org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:192)
>>  >       at
>>  >
>> org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:198)
>>  >       at
>> org.apache.jmeter.functions.BeanShell.execute(BeanShell.java:106)
>>  >       at
>>  >
>> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:143)
>>  >       at
>>  >
>> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112)
>>  >       at
>>  >
>> org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:89)
>>  >       at
>>  >
>> org.apache.jmeter.testbeans.TestBeanHelper.prepare(TestBeanHelper.java:69)
>>  >       at
>>  >
>> org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:622)
>>  >       at
>>  >
>> org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:356)
>>  >       at
>> org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:243)
>>  >       at java.lang.Thread.run(Unknown Source)
>>  > Caused by: 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:171)
>>  >       ... 10 more
>>  > Caused by: Sourced file: inline evaluation of:
>>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev 
>> : at
>>  > Line: 1 : in file: inline evaluation of:
>>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : ( prev , "<tiqs>" ,
>> "<tiqs>" )
>>  >
>>  >       at bsh.BSHArguments.getArguments(Unknown Source)
>>  >       at bsh.BSHMethodInvocation.eval(Unknown Source)
>>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>>  >       at bsh.Interpreter.eval(Unknown Source)
>>  >       at bsh.Interpreter.eval(Unknown Source)
>>  >       at bsh.Interpreter.eval(Unknown Source)
>>  >       ... 15 more
>>  >
>>  >
>>
>>  --
>>
>> View this message in context:
>> http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26225648.html
>>
>> Sent from the JMeter - User mailing list archive at Nabble.com.
>>
>>
>>  ---------------------------------------------------------------------
>>  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
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26238884.html
Sent from the JMeter - User mailing list archive at Nabble.com.


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


Re: How do I call function passing in script variables

Posted by sebb <se...@gmail.com>.
On 06/11/2009, mwolfe38 <mw...@gmail.com> wrote:
>
>  After playing around with it and reading some more documentation I figured
>  out how to do it.
>  I needed to 1. Import the right package to use a SampleResult in my script
>  file:
>  import org.apache.jmeter.samplers.SampleResult;
>
>  print("Including user defined functions");
>
> wrapResponse(SampleResult  result, String prefix,String suffix) {
>         log.info("Calling wrapResponse");
>         encoding = result.getDataEncodingWithDefault();
>         String data = prefix + (new String(result.getResponseData())) + suffix;
>         result.setResponseData(data.getBytes(encoding));
>  }
>
>
> Then I called it like this:
>
>  ${__BeanShell(wrapResponse(SampleResult\,"<tiqs>"\,"<tiqs>"))}
>
>  I'm not sure how I could have accessed the prev value that is set for the
>  script, but the documentation said that there was a SampleResult variable
>  for the __BeanShell function and that did in fact work.

The BeanShell function documentation does not mention "prev" at all:

http://jakarta.apache.org/jmeter/usermanual/functions.html#__BeanShell

However, "prev" is set for some of the BeanShell test elements - but
they are not functions...

>
>
>
>  mwolfe38 wrote:
>  >
>  > I was able to get jMeter to include a file with beanshell functions in it
>  > automatically by using the
>  > property:
>  > beanshell.function.init=BeanShellFunction.bshrc
>  >
>  > However, I have a function which I want to use that will take a
>  > SampleResult and do some modifications (basically its an xml document but
>  > its not well formed in that it has multiple top level nodes, I want to
>  > wrap it and modify it.. I've got all this working but I can't get it
>  > working within a function).
>  >
>  > here is what I have:
>  > print("including functions");
>  > wrapResponse(SampleResult result, String prefix,String suffix, ) {
>  >       log.info("Calling wrapResponse");
>  >       encoding = result.getDataEncodingWithDefault();
>  >       String data = prefix + (new String(result.getResponseData())) + suffix;
>  >       result.setResponseData(data.getBytes(encoding));
>  > }
>  >
>  > I know that this file is being included but i can't seem to pass the
>  > result value to the function.
>  >
>  > This is within a BSF PostProcessor which has a prev variable which has the
>  > response in it (like I said, i've verified this works when not in a
>  > function).
>  >
>  > The string values pass just fine though..
>  >
>  > I'm calling it like this:
>  > ${__BeanShell(wrapResponse(prev\,"<tiqs>"\,"<tiqs>"))}
>  >
>  >
>  >
>  > Here is the error message:
>  >
>  > 2009/11/05 17:04:03 WARN  - jmeter.functions.BeanShell: Error running BSH
>  > script org.apache.jorphan.util.JMeterException: Error invoking bsh method:
>  > eval  Sourced file: inline evaluation of:
>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev
>  >       at
>  > org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:192)
>  >       at
>  > org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:198)
>  >       at org.apache.jmeter.functions.BeanShell.execute(BeanShell.java:106)
>  >       at
>  > org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:143)
>  >       at
>  > org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112)
>  >       at
>  > org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:89)
>  >       at
>  > org.apache.jmeter.testbeans.TestBeanHelper.prepare(TestBeanHelper.java:69)
>  >       at
>  > org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:622)
>  >       at
>  > org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:356)
>  >       at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:243)
>  >       at java.lang.Thread.run(Unknown Source)
>  > Caused by: 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:171)
>  >       ... 10 more
>  > Caused by: Sourced file: inline evaluation of:
>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev  : at
>  > Line: 1 : in file: inline evaluation of:
>  > ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : ( prev , "<tiqs>" , "<tiqs>" )
>  >
>  >       at bsh.BSHArguments.getArguments(Unknown Source)
>  >       at bsh.BSHMethodInvocation.eval(Unknown Source)
>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>  >       at bsh.BSHPrimaryExpression.eval(Unknown Source)
>  >       at bsh.Interpreter.eval(Unknown Source)
>  >       at bsh.Interpreter.eval(Unknown Source)
>  >       at bsh.Interpreter.eval(Unknown Source)
>  >       ... 15 more
>  >
>  >
>
>  --
>
> View this message in context: http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26225648.html
>
> Sent from the JMeter - User mailing list archive at Nabble.com.
>
>
>  ---------------------------------------------------------------------
>  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: How do I call function passing in script variables

Posted by mwolfe38 <mw...@gmail.com>.
After playing around with it and reading some more documentation I figured
out how to do it.
I needed to 1. Import the right package to use a SampleResult in my script
file:
import org.apache.jmeter.samplers.SampleResult;

print("Including user defined functions");
wrapResponse(SampleResult  result, String prefix,String suffix) {
	log.info("Calling wrapResponse");
	encoding = result.getDataEncodingWithDefault();
	String data = prefix + (new String(result.getResponseData())) + suffix;
	result.setResponseData(data.getBytes(encoding));		
}

Then I called it like this:

${__BeanShell(wrapResponse(SampleResult\,"<tiqs>"\,"<tiqs>"))}

I'm not sure how I could have accessed the prev value that is set for the
script, but the documentation said that there was a SampleResult variable
for the __BeanShell function and that did in fact work.




mwolfe38 wrote:
> 
> I was able to get jMeter to include a file with beanshell functions in it
> automatically by using the 
> property:
> beanshell.function.init=BeanShellFunction.bshrc
> 
> However, I have a function which I want to use that will take a
> SampleResult and do some modifications (basically its an xml document but
> its not well formed in that it has multiple top level nodes, I want to
> wrap it and modify it.. I've got all this working but I can't get it
> working within a function).
> 
> here is what I have:
> print("including functions");
> wrapResponse(SampleResult result, String prefix,String suffix, ) {
> 	log.info("Calling wrapResponse");
> 	encoding = result.getDataEncodingWithDefault();
> 	String data = prefix + (new String(result.getResponseData())) + suffix;
> 	result.setResponseData(data.getBytes(encoding));	
> }
> 
> I know that this file is being included but i can't seem to pass the
> result value to the function.
> 
> This is within a BSF PostProcessor which has a prev variable which has the
> response in it (like I said, i've verified this works when not in a
> function).
> 
> The string values pass just fine though..
> 
> I'm calling it like this:
> ${__BeanShell(wrapResponse(prev\,"<tiqs>"\,"<tiqs>"))}
> 
> 
> 
> Here is the error message:
> 
> 2009/11/05 17:04:03 WARN  - jmeter.functions.BeanShell: Error running BSH
> script org.apache.jorphan.util.JMeterException: Error invoking bsh method:
> eval	Sourced file: inline evaluation of:
> ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev 
> 	at
> org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:192)
> 	at
> org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:198)
> 	at org.apache.jmeter.functions.BeanShell.execute(BeanShell.java:106)
> 	at
> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:143)
> 	at
> org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112)
> 	at
> org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:89)
> 	at
> org.apache.jmeter.testbeans.TestBeanHelper.prepare(TestBeanHelper.java:69)
> 	at
> org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:622)
> 	at
> org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:356)
> 	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:243)
> 	at java.lang.Thread.run(Unknown Source)
> Caused by: 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:171)
> 	... 10 more
> Caused by: Sourced file: inline evaluation of:
> ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : Undefined argument: prev  : at
> Line: 1 : in file: inline evaluation of:
> ``wrapResponse(prev,"<tiqs>","<tiqs>");'' : ( prev , "<tiqs>" , "<tiqs>" ) 
> 
> 	at bsh.BSHArguments.getArguments(Unknown Source)
> 	at bsh.BSHMethodInvocation.eval(Unknown Source)
> 	at bsh.BSHPrimaryExpression.eval(Unknown Source)
> 	at bsh.BSHPrimaryExpression.eval(Unknown Source)
> 	at bsh.Interpreter.eval(Unknown Source)
> 	at bsh.Interpreter.eval(Unknown Source)
> 	at bsh.Interpreter.eval(Unknown Source)
> 	... 15 more
> 
> 

-- 
View this message in context: http://old.nabble.com/How-do-I-call-function-passing-in-script-variables-tp26225188p26225648.html
Sent from the JMeter - User mailing list archive at Nabble.com.


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