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 wo...@apache.org on 2005/11/22 15:28:40 UTC
svn commit: r348173 - in
/jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement:
AbstractChart.java BarChart.java LineChart.java LineGraph.java
Author: woolfel
Date: Tue Nov 22 06:28:35 2005
New Revision: 348173
URL: http://svn.apache.org/viewcvs?rev=348173&view=rev
Log:
now the chart TestElements basically work and generate the graphics. Right now the classes use the Graph class in the components directory.
Added:
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineChart.java
- copied, changed from r344877, jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineGraph.java
Removed:
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineGraph.java
Modified:
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/AbstractChart.java
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/BarChart.java
Modified: jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/AbstractChart.java
URL: http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/AbstractChart.java?rev=348173&r1=348172&r2=348173&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/AbstractChart.java (original)
+++ jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/AbstractChart.java Tue Nov 22 06:28:35 2005
@@ -23,6 +23,7 @@
import javax.swing.JComponent;
import org.apache.jmeter.report.ReportChart;
+import org.apache.jmeter.visualizers.SamplingStatCalculator;
/**
* The general idea of the chart graphs information for a table.
@@ -141,5 +142,37 @@
*/
public void setBufferedImage(BufferedImage img) {
this.image = img;
+ }
+
+ /**
+ * convienance method for getting the selected value. Rather than use
+ * Method.invoke(Object,Object[]), it's simpler to just check which
+ * column is selected and call the method directly.
+ * @param stat
+ * @return
+ */
+ public double getValue(SamplingStatCalculator stat) {
+ if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_50_PERCENT)) {
+ return stat.getPercentPoint(.50).doubleValue();
+ } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_90_PERCENT)){
+ return stat.getPercentPoint(.90).doubleValue();
+ } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_ERROR_RATE)) {
+ return stat.getErrorPercentage();
+ } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MAX)) {
+ return stat.getMax().doubleValue();
+ } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MEAN)) {
+ return stat.getMean();
+ } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MEDIAN)) {
+ return stat.getMedian().doubleValue();
+ } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MIN)) {
+ return stat.getMin().doubleValue();
+ } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_RESPONSE_RATE)) {
+ return stat.getRate();
+ } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_TRANSFER_RATE)) {
+ // return the pagesize divided by 1024 to get kilobytes
+ return stat.getPageSize()/1024;
+ } else {
+ return -1;
+ }
}
}
Modified: jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/BarChart.java
URL: http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/BarChart.java?rev=348173&r1=348172&r2=348173&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/BarChart.java (original)
+++ jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/BarChart.java Tue Nov 22 06:28:35 2005
@@ -61,7 +61,6 @@
for (int idx=0; idx < data.size(); idx++) {
SamplingStatCalculator stat = (SamplingStatCalculator)data.get(idx);
dataset[0][idx] = getValue(stat);
- // System.out.println("data=" + dataset[0][idx]);
}
return dataset;
}
@@ -104,35 +103,4 @@
return panel;
}
- /**
- * convienance method for getting the selected value. Rather than use
- * Method.invoke(Object,Object[]), it's simpler to just check which
- * column is selected and call the method directly.
- * @param stat
- * @return
- */
- public double getValue(SamplingStatCalculator stat) {
- if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_50_PERCENT)) {
- return stat.getPercentPoint(.50).doubleValue();
- } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_90_PERCENT)){
- return stat.getPercentPoint(.90).doubleValue();
- } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_ERROR_RATE)) {
- return stat.getErrorPercentage();
- } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MAX)) {
- return stat.getMax().doubleValue();
- } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MEAN)) {
- return stat.getMean();
- } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MEDIAN)) {
- return stat.getMedian().doubleValue();
- } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MIN)) {
- return stat.getMin().doubleValue();
- } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_RESPONSE_RATE)) {
- return stat.getRate();
- } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_TRANSFER_RATE)) {
- // return the pagesize divided by 1024 to get kilobytes
- return stat.getPageSize()/1024;
- } else {
- return -1;
- }
- }
}
Copied: jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineChart.java (from r344877, jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineGraph.java)
URL: http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineChart.java?p2=jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineChart.java&p1=jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineGraph.java&r1=344877&r2=348173&rev=348173&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineGraph.java (original)
+++ jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/LineChart.java Tue Nov 22 06:28:35 2005
@@ -18,27 +18,22 @@
package org.apache.jmeter.testelement;
import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Paint;
+import java.awt.Dimension;
import java.awt.Shape;
import java.awt.Stroke;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import javax.swing.JComponent;
-import javax.swing.JPanel;
-import org.jCharts.axisChart.AxisChart;
-import org.jCharts.chartData.AxisChartDataSet;
-import org.jCharts.chartData.DataSeries;
-import org.jCharts.properties.AxisProperties;
-import org.jCharts.properties.ChartProperties;
-import org.jCharts.properties.LegendProperties;
-import org.jCharts.properties.LineChartProperties;
+import org.apache.jmeter.report.DataSet;
+import org.apache.jmeter.visualizers.LineGraph;
+import org.apache.jmeter.visualizers.SamplingStatCalculator;
import org.jCharts.properties.PointChartProperties;
-import org.jCharts.types.ChartType;
-public class LineGraph extends AbstractChart {
+public class LineChart extends AbstractChart {
public static final String REPORT_CHART_URLS = "ReportChart.chart.urls";
public static final Shape[] SHAPE_ARRAY = {PointChartProperties.SHAPE_CIRCLE,
@@ -50,7 +45,7 @@
protected int shape_counter = 0;
- public LineGraph() {
+ public LineChart() {
super();
}
@@ -62,50 +57,54 @@
setProperty(REPORT_CHART_URLS,urls);
}
- public JComponent renderChart(List dataset) {
-
- return renderGraphics(null);
- }
+ public double[][] convertToDouble(List data) {
+ SamplingStatCalculator stat;
+ String[] urls = this.getURLs().split(",");
+ double[][] dataset = new double[urls.length][data.size()];
+ for (int idx=0; idx < urls.length; idx++) {
+ for (int idz=0; idz < data.size(); idz++) {
+ DataSet dset = (DataSet)data.get(idz);
+ SamplingStatCalculator ss = dset.getStatistics(urls[idx]);
+ dataset[idx][idz] = getValue(ss);
+ System.out.println("value=" + dataset[idx][idz]);
+ }
+ }
+ return dataset;
+ }
- public JComponent renderGraphics(double[][] data) {
- String title = this.getTitle();
- String xAxisTitle = this.getXAxis();
- String yAxisTitle = this.getYAxis();
- String yAxisLabel = this.getYLabel();
- String[] xAxisLabels = {this.getXLabel() };
- Graphics g;
- JPanel panel = new JPanel();
-
- DataSeries dataSeries = new DataSeries( xAxisLabels, xAxisTitle, yAxisTitle, title );
-
- String[] legendLabels= { yAxisLabel };
- Paint[] paints= new Paint[]{ Color.blue.darker() };
- Shape[] shapes = createShapes(data.length);
- Stroke[] lstrokes = createStrokes(data.length);
- LineChartProperties lineChartProperties= new LineChartProperties(lstrokes,shapes);
-
- try {
- AxisChartDataSet axisChartDataSet= new AxisChartDataSet( data,
- legendLabels,
- paints,
- ChartType.LINE,
- lineChartProperties );
- dataSeries.addIAxisPlotDataSet( axisChartDataSet );
-
- ChartProperties chartProperties= new ChartProperties();
- AxisProperties axisProperties= new AxisProperties();
- LegendProperties legendProperties= new LegendProperties();
-
- AxisChart axisChart = new AxisChart( dataSeries,
- chartProperties,
- axisProperties,
- legendProperties,
- width,
- height );
- } catch (Exception e) {
-
+ public JComponent renderChart(List dataset) {
+ ArrayList dset = new ArrayList();
+ ArrayList xlabels = new ArrayList();
+ Iterator itr = dataset.iterator();
+ while (itr.hasNext()) {
+ DataSet item = (DataSet)itr.next();
+ if (item != null) {
+ // we add the entry
+ dset.add(item);
+ xlabels.add(item.getDataSource());
+ }
}
+ double[][] dbset = convertToDouble(dset);
+ return renderGraphics(dbset, (String[])xlabels.toArray(new String[xlabels.size()]));
+ }
+ public JComponent renderGraphics(double[][] data, String[] xAxisLabels) {
+ LineGraph panel = new LineGraph();
+ panel.setTitle(this.getTitle());
+ panel.setData(data);
+ panel.setXAxisLabels(xAxisLabels);
+ panel.setYAxisLabels(this.getURLs().split(","));
+ panel.setXAxisTitle(this.getXAxis());
+ panel.setYAxisTitle(this.getYAxis());
+ // we should make this configurable eventually
+ int width = 400;
+ int height = 400;
+ panel.setPreferredSize(new Dimension(width,height));
+ panel.setSize(new Dimension(width,height));
+ panel.setWidth(width);
+ panel.setHeight(width);
+ setBufferedImage(new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB));
+ panel.paintComponent(this.getBufferedImage().createGraphics());
return panel;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org