0
votes

can we use vars.put to add the members of array list?

Below is my code which is throwing exception at at line 10, column 25 and error is:

Error invoking bsh method: eval In file: inline evaluation of: ``import java.util.List; import java.util.ArrayList; public static void main(Strin . . . '' Encountered "vars" at line 10, column 25.

import java.util.List;
import java.util.ArrayList;
public static void main(String[] ard)
{
    String OperationNme = ${op};
    String[] serviceTypeVal = {12,19,20,21,22,23,26,27,28,31,32,11};
    String serviceType;
    switch (OperationNme) {
            case 1:  OperationNme.contains("sdv")
                     vars.put("serviceType",serviceTypeVal[0]);
                     break;
            case 2:  OperationNme.contains("doorUnlock")
                     vars.put("serviceType",serviceTypeVal[1]);
                     break;
            case 3:  OperationNme.contains("doorLock")
                     vars.put("serviceType",serviceTypeVal[2]);
                     break;
            case 4:  OperationNme.contains("hornLights")
                    vars.put("serviceType",serviceTypeVal[3]);
                     break;
            case 5:  OperationNme.contains("engineOn")
                     vars.put("serviceType",serviceTypeVal[4]);
                     break;
            case 6:  OperationNme.contains("engineOff")
                     vars.put("serviceType",serviceTypeVal[5]);
                     break;
            case 7:  OperationNme.contains("dtc")
                     vars.put("serviceType",serviceTypeVal[6]);
                     break;
            case 8:  OperationNme.contains("vrc")
                     vars.put("serviceType",serviceTypeVal[7]);
                     break;
            case 9:  OperationNme.contains("vhc")
                     vars.put("serviceType",serviceTypeVal[8]);
                     break;
            case 10: OperationNme.contains("chgPrf")
                     vars.put("serviceType",serviceTypeVal[9]);
                     break;
            case 11: OperationNme.contains("evNotif")
                     vars.put("serviceType",serviceTypeVal[10]);
                     break;
            case 12: OperationNme.contains("vehStatus")
                     vars.put("serviceType",serviceTypeVal[11]);
                     break;
            default: OperationNme.contains("Invalid Operation Name")
                     break;
        }



}
1
You should look at the actual error. To me, it looks like you forgot the semicolon on the line above (and for all case statements for that matter). - Laur Ivan

1 Answers

1
votes

There are multiple problems with your test:

  1. String[] serviceTypeVal = {12,19,20,21,22,23,26,27,28,31,32,11}; - is not valid declaration
  2. If you switch on OperationNme which a string, you cannot use case 1, case 2, etc. as it is type mismatch
  3. Beanshell does not support switching on strings

So you should refactor your code to look something like:

String OperationNme = vars.get("op");
String[] serviceTypeVal = {"12", "19", "20", "21", "22", "23", "26", "27", "28", "31", "32", "11"};       
if (OperationNme.contains("sdv")) {
    vars.put("serviceType", serviceTypeVal[0]);
}
if (OperationNme.contains("doorUnlock")) {
    vars.put("serviceType", serviceTypeVal[1]);
} 
// etc. 

See How to Use BeanShell: JMeter's Favorite Built-in Component guide for more information on Beanshell scripting in JMeter including troubleshooting recommendations.

Actually it is recommended to use JSR223 Test Elements and Groovy language for scripting. Installation is as simple as downloading groovy-all-*.jar, dropping it into /lib folder of your JMeter installation and restarting JMeter.

After that you'll be able to select "groovy" from the "Language" drop-down, it is actively being developed and supported so it is more Java compatible than Beanshell.