On 08/11/2009, mwolfe38 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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: [email protected] > >> >> For additional commands, e-mail: [email protected] > >> >> > >> >> > >> > > >> > --------------------------------------------------------------------- > >> > To unsubscribe, e-mail: [email protected] > >> > For additional commands, e-mail: [email protected] > >> > > >> > > >> > > >> > >> > >> -- > >> 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: [email protected] > >> For additional commands, e-mail: [email protected] > >> > >> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > > > > > -- > > 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: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

