Java – parses strings into integers in the BeanShell sampler in JMeter
I'm trying to parse a string into an integer in JMeter, but I failed due to a follow error If I try to print vars Get returns strings that look good
2014/06/28 00:08:52 WARN - jmeter.assertions.BeanShellAssertion: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``if (ResponseCode != null && ResponseCode.equals ("200") == false ) { int i = In . . . '' : Typed variable declaration : Method Invocation Integer.parseInt
Here is my code
if (ResponseCode != null && ResponseCode.equals ("200") == false )
{
int i = Integer.parseInt(vars.get("currentPMCount"));
int j = Integer.parseInt(vars.get("pmViolationMaxCount"));
if( i > j ){
log.warn("PM count on server is greater than max allowed count.");
}
log.warn( "The return code is " + ResponseCode); // this goes to the JMeter log file
}
else
{
Failure=true ;
FailureMessage = "The response data size was not as expected" ;
}
Solution
Your code looks good, but it may be a problem with the currentpmcount and / or pmviolationmaxcount variables
If they look good and look like integers and do not exceed the maximum / minimum value of integer, you can try the following methods:
>Make sure there is no "space" character around the numeric value because leading or trailing spaces will cause the conversion to fail Perhaps calling the trim () method on a variable can help:
int i = Integer.parseInt(vars.get("currentPMCount").trim());
>If you store the script in a file and then provide the file path in the BeanShell assertion, the "problematic" line number > my favorite: surround the code in the try / catch block, as follows:
try{
//your code here
}
catch (Exception ex){
log.warn("Error in my script",ex);
throw ex; // elsewise JMeter will "swallow" the above exception
}
In this way, you'll get more informative stack traces than bad error calls to BSH methodmessage, which says nothing
For more tips and tricks, see the how to use BeanShell: JMeter's favorite build in component guide
