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