1

Not able to generate file using beanshell post processor.. trying to calculate time difference as well ******* Beanshell Post processor code *****

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.sql.Timestamp;
import java.io.File;
import org.apache.jmerer.services.FileServer;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Arrays;
import java.io.Writer;
log.info("Chetan Mali")
log.info(vars.getObject("SQL_Result_CM").get(0)+"");
String pattern="yyyy-MM-dd'T'hh:mm:ssZ";
DateFormat format = new SimpleDateFormat(pattern);
Date startDate=null;
Date endDate=null;
for(int i=0; i<vars.getObject("SQL_Result_CM").size(); i++ ){
    if(vars.getObject("SQL_Result_CM").get(i).get("process_name").equals("Initializing Data for The Target"))
    {
        //Timestamp ts = new Timestamp(vars.getObject("SQL_RESULT").get(i).get("start_time"));
        startDate=vars.getObject("SQL_Result_CM").get(i).get("start_time");
    }
    else if(vars.getObject("SQL_Result_CM").get(i).get("process_name").equals("Processing Done"))
    {
        //Timestamp ts = new Timestamp(vars.getObject("SQL_RESULT").get(i).get("start_time"));
        endDate=vars.getObject("SQL_Result_CM").get(i).get("start_time");
    }
}
File file = new File("C:\\Users\\chetan.mali\\Desktop\\Chetan Jmeter\\Output\\CM_timediff_output.csv");
FileWriter fstream = new FileWriter(file, true);
// true, will append the file if already exist
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("DataID_CM")+","+(endDate.getTime()-startDate.getTime())+"\n");
out.close();
fstream.close();
log.info("######################################################################");
log.info(""+(endDate.getTime()-startDate.getTime()));

******* Beanshell Post processor code ***** 


******* Logs ***** 

2019-08-02 11:46:39,765 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2019-08-02 11:46:39,765 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2019-08-02 11:46:39,765 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2019-08-02 11:46:39,765 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group
2019-08-02 11:46:39,765 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Thread Group.
2019-08-02 11:46:39,765 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2019-08-02 11:46:39,765 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false
2019-08-02 11:46:39,781 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2019-08-02 11:46:39,781 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2019-08-02 11:46:39,781 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1
2019-08-02 11:46:39,781 INFO o.a.j.s.FileServer: Stored: C:/Users/chetan.mali/Desktop/Chetan Jmeter/Output/CM_output.csv
2019-08-02 11:46:40,326 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``import java.text.DateFormat; import java.text.SimpleDateFormat; import java.sql. . . . '' Encountered "log" at line 11, column 1.

2019-08-02 11:46:40,326 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval  In file: inline evaluation of: ``import java.text.DateFormat; import java.text.SimpleDateFormat; import java.sql. . . . '' Encountered "log" at line 11, column 1.

2019-08-02 11:46:40,342 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``import java.text.DateFormat; import java.text.SimpleDateFormat; import java.sql. . . . '' Encountered "log" at line 11, column 1.

2019-08-02 11:46:40,342 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval  In file: inline evaluation of: ``import java.text.DateFormat; import java.text.SimpleDateFormat; import java.sql. . . . '' Encountered "log" at line 11, column 1.

2019-08-02 11:46:40,342 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-1
2019-08-02 11:46:40,342 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1
2019-08-02 11:46:40,342 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2019-08-02 11:46:40,342 INFO o.a.j.s.FileServer: Close: C:/Users/chetan.mali/Desktop/Chetan Jmeter/Output/CM_output.csv
2019-08-02 11:46:40,342 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)


******* Logs *****
Ori Marko
  • 56,308
  • 23
  • 131
  • 233

2 Answers2

0

Move your sampler code to JSR223 PostProcessor which execute Java with log variable in context

some variables are set up. Note that these are JSR223 variables - i.e. they can be used directly in the script.

log - the Logger

Community
  • 1
  • 1
Ori Marko
  • 56,308
  • 23
  • 131
  • 233
0

You need to add a semicolon to your log.info("Chetan Mali") line like:

log.info("Chetan Mali"); //<--- this semicolon is uber important

Also be aware that starting from JMeter 3.1 you should be using JSR223 Test Elements and Groovy language for scripting

Groovy performance is much better comparing to Beanshell, moreover it provides a lot of enhancements, for instance Date class has and format() function so you don't need the SimpleDateFormat, etc.

Dmitri T
  • 159,985
  • 5
  • 83
  • 133