You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by Bruce Barrett <br...@ebrary.com> on 2001/11/02 01:21:41 UTC

Patches for Improved File Reporter.

Hi All,

  I've been meaning to do this for a long time, but finally
got a round to it...

  It would be nice to get it into 1.7, but I realize that would
require additional documentation as well. I bow to the will
of the community. (As I don't have commit privileges anyway.)
If there is a different (preferred) method for submitting these
changes just let me know.


  Compiles & executes fine under X86 Linux, Java 1.3.1, 
with Sun's SSL installed.
  Other configurations not tested.


  I've updated the File Reporter to:
     1. Optionally include "Time of day" as m/d/y and h:m:s in the report
     2. Support tab delimited output
     3. Change the GUI to group the checkbox controls by type
     4. The "File Contents Options" are now listed in the order in which they appear in the report, so that order changed. (It had been URL / time)
     5. The old "verbose" functionality has been re-arranged into "Heading", "URL" and "Included Submitted Data".



Files updated:
  visualizers/FileVisulizer.java
  reporters/Filer.java
  save/handlers/FileHandler.java
  resources/messages.properties


The new appearance for JMeter File Reporter:
	+-- File Control Options ------------------------
	| [x] Append to Existing Data File
	| [ ] Automatically Flush After Each Data Sample
	+------------------------------------------------

	+-- File Contents Options -----------------------
	| [x] Include Heading
	| [ ] Elapse Time (ms)
	| [ ] Time of day            {m/d/y  h:m:s AM}
	| [x] URL                    {was "verbose")
	| [ ] Included Submitted Data
	| [x] Use tab separators
	+------------------------------------------------

Bruce


Index: reporters/Filer.java
===================================================================
RCS file: /home/cvspublic/jakarta-jmeter/src/org/apache/jmeter/reporters/Filer.java,v
retrieving revision 1.11
diff -r1.11 Filer.java
58a59,62
> import java.util.Date;
> import java.text.*;
> import java.util.Calendar;
> import java.util.GregorianCalendar;
82a87,88
>   private boolean elapsetime = false;
>   private boolean timeoday = false;
84a91,92
>   private boolean usetabs = true;
>   private boolean heading = true;
128a137,172
>   public void setHeading(boolean h){
> 			 heading = h;
>   }
> 
>   public boolean getHeading()
>   {
> 	 return heading;
>   }
> 
>   public void setElapseTime(boolean et){
> 			 elapsetime = et;
>   }
> 
>   public boolean getElapseTime()
>   {
> 	 return elapsetime;
>   }
> 
>   public void setTimeOD(boolean tod){
> 			 timeoday = tod;
>   }
> 
>   public boolean getTimeOD()
>   {
> 	 return timeoday;
>   }
> 
>   public void setUseTabs(boolean t){
> 			 usetabs = t;
>   }
> 
>   public boolean getUseTabs()
>   {
> 	 return usetabs;
>   }
> 
176a221
> 		String seperator = "   ";
179a225,246
> 		  if (usetabs) {
> 		    seperator = "\t";
> 		  }
> 		  if (elapsetime) {
>                       stream.print(sample + seperator);
>                   }
> 		  if (timeoday) {
> 		    DateFormat shortdate = DateFormat.getDateInstance(DateFormat.SHORT);
> 		    DateFormat shorttime = DateFormat.getTimeInstance(DateFormat.MEDIUM);
> 
> 		    Date now = new Date();
> 		    DateFormat full = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL);
> 		    // full.setTimeZone(TimeZone.getDefault());
> 		    stream.print(shortdate.format(now) + seperator + shorttime.format(now) + seperator ); 
> 
> 		    //  Date now = new Date();
> 		    //  GregorianCalendar calendar = new GregorianCalendar();
> 		    //  calendar.setTime(now);
> 		    //  stream.print(calendar.get(Calendar.DATE)+ seperator + calendar.get(Calendar.TIME)+ seperator);
>                       // stream.print("01-Nov-2001 12:43:00" + seperator);
>                   }
> 
181c248
< 			 stream.print(sampleResult.getValue(SampleResult.SAMPLE_LABEL) + " " + sample);
---
> 			 stream.print(sampleResult.getValue(SampleResult.SAMPLE_LABEL) + seperator);
183c250
< 				stream.println(HttpSampleResult.DATA_SEPARATOR + data);
---
> 				stream.print(data);			// was: HttpSampleResult.DATA_SEPARATOR +
185c252
< 				stream.println("");
---
> 				stream.print("");
187c254
< 			 stream.println(sample);
---
> 
189a257
> 		stream.println("");
196,201c264,278
< 		if (verbose) {
< 		  this.stream.println("\n# Sample data created by " + JMeterUtils.getJMeterProperties().getProperty("version"));
< 		  if(viewSubmitData)
< 			 this.stream.println("\n#       URL                    Milliseconds  Data\n");
< 		  else
< 			 this.stream.println("\n#       URL                    Milliseconds\n");
---
> 		if (heading) {
> 		  String seperator = "   ";
> 		  if (usetabs) {
> 		    seperator = "\t";
> 		  }
> 
> 		  this.stream.print("\n# Sample data created by " + JMeterUtils.getJMeterProperties().getProperty("version") + "\n# ");
> 		  if(elapsetime)
> 			 this.stream.print("Milliseconds" + seperator);
> 		  if (timeoday)
> 			 this.stream.print("Time-of-day" + seperator);
> 		  if (verbose)
> 			 this.stream.print("URL" + seperator);
> 
> 		  this.stream.println("");
Index: resources/messages.properties
===================================================================
RCS file: /home/cvspublic/jakarta-jmeter/src/org/apache/jmeter/resources/messages.properties,v
retrieving revision 1.29
diff -r1.29 messages.properties
117c117
< file_visualizer_verbose=Verbose Output
---
> file_visualizer_verbose=URL
124c124,128
< file_visualizer_file_options=File Options
---
> file_visualizer_file_control_options=File Control Options
> file_visualizer_file_contents_options=File Contents Options
> file_visualizer_elapsetime=Elapse Time (ms)
> file_visualizer_time_of_day=Time of Day
> file_visualizer_use_tabs=Use tab seperators
125a130
> file_visualizer_heading Include Heading
Index: save/handlers/FilerHandler.java
===================================================================
RCS file: /home/cvspublic/jakarta-jmeter/src/org/apache/jmeter/save/handlers/FilerHandler.java,v
retrieving revision 1.4
diff -r1.4 FilerHandler.java
33,34c33
< 		out.write("\" verbose=\"");
< 		out.write(""+save.getVerbose());
---
> 
38a38,49
> 		
> 		// -- Elapse Time   / TOD   / Verbose (URL)   / SubmitData (Params)
> 		out.write("\" heading=\"");
> 		out.write(""+save.getHeading());
> 		out.write("\" elapseTime=\"");
> 		out.write(""+save.getElapseTime());
> 		out.write("\" timeOD=\"");
> 		out.write(""+save.getTimeOD());
> 		out.write("\" useTabs=\"");
> 		out.write(""+save.getUseTabs());
> 		out.write("\" verbose=\"");
> 		out.write(""+save.getVerbose());
40a52
> 
51c63,69
< 		model.setVerbose(atts.getValue("verbose").equals("true") ? true :false);
---
> 
> 		model.setHeading(atts.getValue("heading").equals("true") ? true :false);
> 		model.setElapseTime(atts.getValue("elapseTime").equals("true") ? true :false);
> 		model.setTimeOD(atts.getValue("timeOD").equals("true") ? true :false);
> 		model.setUseTabs(atts.getValue("useTabs").equals("true") ? true :false);
> 
> 		model.setVerbose(atts.getValue(   "verbose").equals("true") ? true :false);
Index: visualizers/FileVisualizer.java
===================================================================
RCS file: /home/cvspublic/jakarta-jmeter/src/org/apache/jmeter/visualizers/FileVisualizer.java,v
retrieving revision 1.22
diff -r1.22 FileVisualizer.java
81a82
> 	JCheckBox elapseTimeCheck, timeODCheck, useTabsCheck, headingCheck;
135,138c136,139
< 		// FILE OPTIONS
< 		JPanel fileOptionsPanel = new JPanel();
< 		fileOptionsPanel.setLayout(new VerticalLayout(5,VerticalLayout.LEFT));
< 		fileOptionsPanel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("file_visualizer_file_options")));
---
> 		// FILE CONTROL OPTIONS
> 		JPanel fileOptionsControlPanel = new JPanel();
> 		fileOptionsControlPanel.setLayout(new VerticalLayout(5,VerticalLayout.LEFT));
> 		fileOptionsControlPanel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("file_visualizer_file_control_options")));
142c143
< 		fileOptionsPanel.add(appendCheck);
---
> 		fileOptionsControlPanel.add(appendCheck);
146c147,170
< 		fileOptionsPanel.add(autoFlushCheck);
---
> 		fileOptionsControlPanel.add(autoFlushCheck);
> 
> 
> 		mainPanel.add(fileOptionsControlPanel);
> 
> 		JPanel buttonPanel = new JPanel();
> 
> 		// FILE CONTENTS OPTIONS
> 		JPanel fileContentsControlPanel = new JPanel();
> 		fileContentsControlPanel.setLayout(new VerticalLayout(5,VerticalLayout.LEFT));
> 		fileContentsControlPanel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("file_visualizer_file_contents_options")));
> 
> 		// -- Include Heading  / Elapse Time   / TOD   / Verbose (URL)   / SubmitData (Params)
> 		headingCheck = new JCheckBox(JMeterUtils.getResString("file_visualizer_heading"), model.getHeading());
> 		headingCheck.addActionListener(this);
> 		fileContentsControlPanel.add(headingCheck);
> 
> 		elapseTimeCheck = new JCheckBox(JMeterUtils.getResString("file_visualizer_elapsetime"), model.getElapseTime());
> 		elapseTimeCheck.addActionListener(this);
> 		fileContentsControlPanel.add(elapseTimeCheck);
> 
> 		timeODCheck = new JCheckBox(JMeterUtils.getResString("file_visualizer_time_of_day"), model.getTimeOD());
> 		timeODCheck.addActionListener(this);
> 		fileContentsControlPanel.add(timeODCheck);
150c174
< 		fileOptionsPanel.add(verboseCheck);
---
> 		fileContentsControlPanel.add(verboseCheck);
155c179
< 		fileOptionsPanel.add(viewSubmitDataCheck);
---
> 		fileContentsControlPanel.add(viewSubmitDataCheck);
157c181,183
< 		mainPanel.add(fileOptionsPanel);
---
> 		useTabsCheck = new JCheckBox(JMeterUtils.getResString("file_visualizer_use_tabs"), model.getUseTabs());
> 		useTabsCheck.addActionListener(this);
> 		fileContentsControlPanel.add(useTabsCheck);
159c185
< 		JPanel buttonPanel = new JPanel();
---
> 		mainPanel.add(fileContentsControlPanel);
160a187
> 		// FILE CONTROLS
268a296,314
> 
> 
> 			else if (c == headingCheck)
> 			{
> 				model.setHeading(headingCheck.isSelected());
> 			}
> 			else if (c == elapseTimeCheck)
> 			{
> 				model.setElapseTime(elapseTimeCheck.isSelected());
> 			}
> 			else if (c == timeODCheck)
> 			{
> 				model.setTimeOD(timeODCheck.isSelected());
> 			}
> 			else if (c == useTabsCheck)
> 			{
> 				model.setUseTabs(useTabsCheck.isSelected());
> 			}
> 
272,281c318
< 				if (!verboseCheck.isSelected())
< 				{
< 					viewSubmitDataCheck.setSelected(false);
< 					model.setViewSubmitData(false);
< 					viewSubmitDataCheck.setEnabled(false);
< 				}
< 				else
< 				{
< 					viewSubmitDataCheck.setEnabled(true);
< 				}
---
> 


-- 
Bruce Barrett		bruce@ebrary.com
SW QA Manager


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>