0
votes

In Jmeter 3.3 , this simple variable compare code in Beanshell asserstion is giving error as - org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``String value1 = vars.get("a"); String value2 = vars.get("b")....

This code works fine with Jmeter 2.1

String value1 = vars.get("a");
String value2 = vars.get("b");
String value3 = vars.get("c");

if(value1.equals(value2)) {
        Failure = false;
        }
else{
Failure = true;
         FailureMessage = value3 + ":  Count doesnt match, api: "+ value1 + "   db: "+ value2; 
        print(FailureMessage);
}

I am not sure what has gone wrong here, can some one please help ?

P.S - I have recently installed jmeter 3.3 & trying to run my test which was created using jmeter 2.1

Full error -

> Null Pointer in Method Invocation     at
> bsh.Name.invokeMethod(Name.java:844) [bsh-2.0b5.jar:2.0b5 2005-06-12
> 04:50:41]     at
> bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
> [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]     at
> bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
> [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]     at
> bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
> [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]     at
> bsh.BSHIfStatement.evaluateCondition(BSHIfStatement.java:63)
> ~[bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]    at
> bsh.BSHIfStatement.eval(BSHIfStatement.java:46) ~[bsh-2.0b5.jar:2.0b5
> 2005-06-12 04:50:41]  at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
> [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]     at
> bsh.BSHBlock.eval(BSHBlock.java:80) [bsh-2.0b5.jar:2.0b5 2005-06-12
> 04:50:41]     at bsh.BSHBlock.eval(BSHBlock.java:46) [bsh-2.0b5.jar:2.0b5
> 2005-06-12 04:50:41]  at
> bsh.BSHTryStatement.eval(BSHTryStatement.java:86) [bsh-2.0b5.jar:2.0b5
> 2005-06-12 04:50:41]  at bsh.Interpreter.eval(Interpreter.java:645)
> [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]     at
> bsh.Interpreter.eval(Interpreter.java:739) [bsh-2.0b5.jar:2.0b5
> 2005-06-12 04:50:41]  at bsh.Interpreter.eval(Interpreter.java:728)
> [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]     at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[?:1.8.0_161]    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
> Source) ~[?:1.8.0_161]    at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> ~[?:1.8.0_161]    at java.lang.reflect.Method.invoke(Unknown Source)
> ~[?:1.8.0_161]    at
> org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:166)
> [ApacheJMeter_core.jar:3.3 r1808647]  at
> org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:189)
> [ApacheJMeter_core.jar:3.3 r1808647]  at
> org.apache.jmeter.util.BeanShellTestElement.processFileOrScript(BeanShellTestElement.java:151)
> [ApacheJMeter_core.jar:3.3 r1808647]  at
> org.apache.jmeter.assertions.BeanShellAssertion.getResult(BeanShellAssertion.java:105)
> [ApacheJMeter_components.jar:3.3 r1808647]    at
> org.apache.jmeter.threads.JMeterThread.processAssertion(JMeterThread.java:812)
> [ApacheJMeter_core.jar:3.3 r1808647]  at
> org.apache.jmeter.threads.JMeterThread.checkAssertions(JMeterThread.java:803)
> [ApacheJMeter_core.jar:3.3 r1808647]  at
> org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:525)
> [ApacheJMeter_core.jar:3.3 r1808647]  at
> org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:424)
> [ApacheJMeter_core.jar:3.3 r1808647]  at
> org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255)
> [ApacheJMeter_core.jar:3.3 r1808647]  at java.lang.Thread.run(Unknown
> Source) [?:1.8.0_161]
1
Show the full error - user7294900
Updated full error. - Preeti

1 Answers

0
votes

Most probably the error message indicates that some of variables is not set, in other words null.

My expectation is that this is b and most probably due to missing the relevant JDBC .jar in JMeter Classpath

Add Debug PostProcessor somewhere before this assertion and verify that all these a, b and c variables have values using View Results Tree listener.


Also be aware that starting from JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language for scripting so consider migrating to JSR223 Assertion on next available opportunity. See Apache Groovy - Why and How You Should Use It article for more details.