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 se...@apache.org on 2008/01/09 20:41:05 UTC
svn commit: r610525 - in /jakarta/jmeter/trunk:
src/components/org/apache/jmeter/visualizers/StatVisualizer.java
src/components/org/apache/jmeter/visualizers/SummaryReport.java
xdocs/changes.xml
Author: sebb
Date: Wed Jan 9 11:41:00 2008
New Revision: 610525
URL: http://svn.apache.org/viewvc?rev=610525&view=rev
Log:
Added "Save Table Data" buttons to Aggregate and Summary Reports - save table as CSV format with header
Modified:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
jakarta/jmeter/trunk/xdocs/changes.xml
Modified: jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java?rev=610525&r1=610524&r2=610525&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java (original)
+++ jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java Wed Jan 9 11:41:00 2008
@@ -20,6 +20,12 @@
import java.awt.BorderLayout;
import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
//import java.awt.event.MouseAdapter;
//import java.awt.event.MouseEvent;
//import java.util.Arrays;
@@ -28,6 +34,8 @@
import java.util.Map;
import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
@@ -37,16 +45,20 @@
//import javax.swing.table.AbstractTableModel;
//import javax.swing.table.TableModel;
+import org.apache.jmeter.gui.util.FileDialoger;
import org.apache.jmeter.samplers.Clearable;
import org.apache.jmeter.samplers.SampleResult;
-import org.apache.jmeter.testelement.TestElement;
+import org.apache.jmeter.save.CSVSaveService;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
import org.apache.jorphan.gui.NumberRenderer;
import org.apache.jorphan.gui.ObjectTableModel;
import org.apache.jorphan.gui.RateRenderer;
import org.apache.jorphan.gui.RendererUtils;
+import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.reflect.Functor;
+import org.apache.jorphan.util.JOrphanUtils;
+import org.apache.log.Logger;
/**
* Aggregrate Table-Based Reporting Visualizer for JMeter. Props to the people
@@ -55,8 +67,11 @@
* you!
*
*/
-public class StatVisualizer extends AbstractVisualizer implements Clearable {
- private final String[] COLUMNS = {
+public class StatVisualizer extends AbstractVisualizer implements Clearable, ActionListener {
+
+ private static final Logger log = LoggingManager.getLoggerForClass();
+
+ private final String[] COLUMNS = {
JMeterUtils.getResString("sampler_label"), //$NON-NLS-1$
JMeterUtils.getResString("aggregate_report_count"), //$NON-NLS-1$
JMeterUtils.getResString("average"), //$NON-NLS-1$
@@ -75,6 +90,9 @@
protected JScrollPane myScrollPane;
+ protected JButton saveTable =
+ new JButton(JMeterUtils.getResString("aggregate_graph_save_table")); //$NON-NLS-1$
+
transient private ObjectTableModel model;
Map tableRows = Collections.synchronizedMap(new HashMap());
@@ -152,15 +170,6 @@
model.addRow(tableRows.get(TOTAL_ROW_LABEL));
}
- // overrides AbstractVisualizer
- // forces GUI update after sample file has been read
- public TestElement createTestElement() {
- TestElement t = super.createTestElement();
-
- // sleepTill = 0;
- return t;
- }
-
/**
* Main visualizer setup.
*/
@@ -184,6 +193,26 @@
myScrollPane = new JScrollPane(myJTable);
this.add(mainPanel, BorderLayout.NORTH);
this.add(myScrollPane, BorderLayout.CENTER);
+ saveTable.addActionListener(this);
+ this.add(saveTable,BorderLayout.SOUTH);
+ }
+
+ public void actionPerformed(ActionEvent ev) {
+ if (ev.getSource() == saveTable) {
+ JFileChooser chooser = FileDialoger.promptToSaveFile("aggregate.csv");//$NON-NLS-1$
+ File output = chooser.getSelectedFile();
+ FileWriter writer = null;
+ try {
+ writer = new FileWriter(output);
+ CSVSaveService.saveCSVStats(model,writer);
+ } catch (FileNotFoundException e) {
+ log.warn(e.getMessage());
+ } catch (IOException e) {
+ log.warn(e.getMessage());
+ } finally {
+ JOrphanUtils.closeQuietly(writer);
+ }
+ }
}
}
Modified: jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java?rev=610525&r1=610524&r2=610525&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java (original)
+++ jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java Wed Jan 9 11:41:00 2008
@@ -20,11 +20,19 @@
import java.awt.BorderLayout;
import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
@@ -32,8 +40,10 @@
import javax.swing.border.EmptyBorder;
import javax.swing.table.TableCellRenderer;
+import org.apache.jmeter.gui.util.FileDialoger;
import org.apache.jmeter.samplers.Clearable;
import org.apache.jmeter.samplers.SampleResult;
+import org.apache.jmeter.save.CSVSaveService;
import org.apache.jmeter.util.Calculator;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
@@ -41,13 +51,19 @@
import org.apache.jorphan.gui.ObjectTableModel;
import org.apache.jorphan.gui.RateRenderer;
import org.apache.jorphan.gui.RendererUtils;
+import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.reflect.Functor;
+import org.apache.jorphan.util.JOrphanUtils;
+import org.apache.log.Logger;
/**
* Simpler (lower memory) version of Aggregate Report (StatVisualizer).
* Excludes the Median and 90% columns, which are expensive in memory terms
*/
-public class SummaryReport extends AbstractVisualizer implements Clearable {
+public class SummaryReport extends AbstractVisualizer implements Clearable, ActionListener {
+
+ private static final Logger log = LoggingManager.getLoggerForClass();
+
private final String[] COLUMNS = {
JMeterUtils.getResString("sampler_label"), //$NON-NLS-1$
JMeterUtils.getResString("aggregate_report_count"), //$NON-NLS-1$
@@ -68,6 +84,9 @@
protected JScrollPane myScrollPane;
+ protected JButton saveTable =
+ new JButton(JMeterUtils.getResString("aggregate_graph_save_table")); //$NON-NLS-1$
+
transient private ObjectTableModel model;
Map tableRows = Collections.synchronizedMap(new HashMap());
@@ -166,5 +185,25 @@
myScrollPane = new JScrollPane(myJTable);
this.add(mainPanel, BorderLayout.NORTH);
this.add(myScrollPane, BorderLayout.CENTER);
+ saveTable.addActionListener(this);
+ this.add(saveTable,BorderLayout.SOUTH);
+ }
+
+ public void actionPerformed(ActionEvent ev) {
+ if (ev.getSource() == saveTable) {
+ JFileChooser chooser = FileDialoger.promptToSaveFile("summary.csv");//$NON-NLS-1$
+ File output = chooser.getSelectedFile();
+ FileWriter writer = null;
+ try {
+ writer = new FileWriter(output);
+ CSVSaveService.saveCSVStats(model,writer);
+ } catch (FileNotFoundException e) {
+ log.warn(e.getMessage());
+ } catch (IOException e) {
+ log.warn(e.getMessage());
+ } finally {
+ JOrphanUtils.closeQuietly(writer);
+ }
+ }
}
}
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=610525&r1=610524&r2=610525&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Wed Jan 9 11:41:00 2008
@@ -86,6 +86,7 @@
<li>Can specify list of variable names to be written to JTL files (CSV and XML format)</li>
<li>Now checks that the remoteStart options -r and -R are only used with non_GUI -n option</li>
<li>Bug 44184 - Allow header to be saved with Aggregate Graph data</li>
+<li>Added "Save Table Data" buttons to Aggregate and Summary Reports - save table as CSV format with header</li>
</ul>
<h4>Non-functional changes</h4>
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org