Author: woolfel
Date: Fri Nov  4 21:34:48 2005
New Revision: 330976

URL: http://svn.apache.org/viewcvs?rev=330976&view=rev
Log:
checking in some changes and 2 new classes. one is a base

interface for dataset and the other is a base implementation.

peter

Added:
    
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/DataSet.java
    
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/JTLData.java
Modified:
    
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/ReportChart.java
    
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/AbstractTable.java
    
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/BarChart.java

Added: 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/DataSet.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/DataSet.java?rev=330976&view=auto
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/DataSet.java
 (added)
+++ 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/DataSet.java
 Fri Nov  4 21:34:48 2005
@@ -0,0 +1,58 @@
+//$Header$

+/*

+ * Copyright 2005 The Apache Software Foundation.

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ * 

+ */

+package org.apache.jmeter.report;

+

+import java.util.Date;

+import java.util.Set;

+

+import org.apache.jmeter.visualizers.SamplingStatCalculator;

+import org.apache.jmeter.visualizers.Visualizer;

+

+/**

+ * @author Peter Lin

+ *

+ * DataSet extends Visualizer so that it can be used with ResultCollector.

+ * Classes implementing the interface should create a new instance of

+ * ResultCollector and call setListener(Visualizer) passing itself.

+ * When the ResultCollector.loadExistingFile is called, it will pass

+ * the SampleResults.

+ */

+public interface DataSet extends Visualizer {

+

+    public void setPath(String absolutePath);

+    public String getPath();

+    public void setStartTimestamp(long stamp);

+    public long getStartTimestamp();

+    public void setEndTimestamp(long stamp);

+    public long getEndTimestamp();

+    public Date getDate();

+    public Set getURLs();

+    public Set getStats();

+    /**

+     * Return the SamplingStatCalculate for a specific URL.

+     * @param url

+     * @return

+     */

+    public SamplingStatCalculator getStatistics(String url);

+    /**

+     * Classes implementing the method should load the data from

+     * the target location. It doesn't necessarily have to be a

+     * file. It could be from a database.

+     */

+    public void loadData();

+}


Modified: 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/ReportChart.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/ReportChart.java?rev=330976&r1=330975&r2=330976&view=diff
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/ReportChart.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/report/ReportChart.java
 Fri Nov  4 21:34:48 2005
@@ -21,5 +21,13 @@
 

 

 public interface ReportChart {

+    /**

+     * The idea is a report table will be passed to a ReportChart

+     * TestElement. The ReportChart is responsible for choosing which

+     * columns/rows it needs and generate a chart for it. The chart

+     * object is a JComponent.

+     * @param element

+     * @return

+     */

        JComponent renderChart(ReportTable element);

 }


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=330976&r1=330975&r2=330976&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
 Fri Nov  4 21:34:48 2005
@@ -107,5 +107,12 @@
        return checked;
     }
     
+    /**
+     * Subclasses will need to implement the method by doing the following:
+     * 1. get the x and y axis
+     * 2. filter the table data
+     * 3. pass the data to the chart library
+     * 4. return the generated chart
+     */
        public abstract JComponent renderChart(ReportTable element);
 }

Modified: 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/AbstractTable.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/AbstractTable.java?rev=330976&r1=330975&r2=330976&view=diff
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/AbstractTable.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/AbstractTable.java
 Fri Nov  4 21:34:48 2005
@@ -45,11 +45,11 @@
        REPORT_TABLE_RESPONSE_RATE, REPORT_TABLE_TRANSFER_RATE, 
REPORT_TABLE_50_PERCENT,
        REPORT_TABLE_90_PERCENT, REPORT_TABLE_ERROR_RATE };
 
-    public static final String REPORT_TABLE_FILE = "ReportTable.file";
     public static final String REPORT_TABLE_DATE = "ReportTable.test.date";
+    public static final String REPORT_TABLE_TOTAL = "ReportTable.total";
     public static final String REPORT_TABLE_URL = "ReportTable.url";
     
-    public static final String[] xitems = { REPORT_TABLE_FILE, 
REPORT_TABLE_DATE,
+    public static final String[] xitems = { REPORT_TABLE_DATE, 
REPORT_TABLE_TOTAL,
        REPORT_TABLE_URL };
     
     protected ArrayList children = new ArrayList();
@@ -144,8 +144,9 @@
        }
     
     /**
-     * method isn't implemented and is left as abstract. Subclasses
-     * need to provide concrete logic
+     * method isn't implemented and is left abstract. Subclasses
+     * need to filter the data in the list and return statistics.
+     * The statistics should be like the aggregate listener.
      */
     public abstract String[][] getTableData(List data);
     

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=330976&r1=330975&r2=330976&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
 Fri Nov  4 21:34:48 2005
@@ -33,6 +33,7 @@
        }
 
        public JComponent renderChart(ReportTable element) {
+        
                return null;
        }
 }

Added: 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/JTLData.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/JTLData.java?rev=330976&view=auto
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/JTLData.java
 (added)
+++ 
jakarta/jmeter/branches/rel-2-1/src/reports/org/apache/jmeter/testelement/JTLData.java
 Fri Nov  4 21:34:48 2005
@@ -0,0 +1,145 @@
+//$Header$

+/*

+ * Copyright 2005 The Apache Software Foundation.

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *   http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ * 

+ */

+package org.apache.jmeter.testelement;

+

+import java.io.Serializable;

+import java.util.ArrayList;

+import java.util.Date;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Set;

+

+import org.apache.jmeter.report.DataSet;

+import org.apache.jmeter.samplers.SampleResult;

+import org.apache.jmeter.visualizers.SamplingStatCalculator;

+

+/**

+ * @author Peter Lin

+ *

+ * The purpose of TableData is to contain the results of a single .jtl file.

+ * It is equivalent to what the AggregateListener table. A HashMap is used

+ * to store the data. The URL is the key and the value is 
SamplingStatCalculator

+ */

+public class JTLData implements Serializable, DataSet {

+

+    protected HashMap data = new HashMap();

+    protected String jtl_file = null;

+    protected long startTimestamp = 0;

+    protected long endTimestamp = 0;

+    

+       /**

+        * 

+        */

+       public JTLData() {

+               super();

+       }

+

+    /**

+     * Return a Set of the URL's

+     * @return

+     */

+    public Set getURLs() {

+        return this.data.keySet();

+    }

+    

+    /**

+     * Return a Set of the values

+     * @return

+     */

+    public Set getStats() {

+        return this.data.entrySet();

+    }

+    

+    /**

+     * The purpose of the method is to make it convienant to pass a list

+     * of the URL's and return a list of the SamplingStatCalculators. If

+     * no URL's match, the list is empty.

+     * @param urls

+     * @return

+     */

+    public List getStats(List urls) {

+        ArrayList items = new ArrayList();

+        // TODO implement the logic

+        return items;

+    }

+    

+    public void setPath(String absolutePath) {

+        this.jtl_file = absolutePath;

+    }

+    

+    public String getPath() {

+        return this.jtl_file;

+    }

+    

+    public void setStartTimestamp(long stamp) {

+        this.startTimestamp = stamp;

+    }

+    

+    public long getStartTimestamp() {

+        return this.startTimestamp;

+    }

+    

+    public void setEndTimestamp(long stamp) {

+        this.endTimestamp = stamp;

+    }

+    

+    public long getEndTimestamp() {

+        return this.endTimestamp;

+    }

+    

+    /**

+     * The date we use for the result is the start timestamp. The

+     * reasoning is that a test may run for a long time, but it

+     * is most likely scheduled to run using CRON on unix or

+     * scheduled task in windows.

+     * @return

+     */

+    public Date getDate() {

+        return new Date(this.startTimestamp);

+    }

+    

+    /**

+     * The method will SamplingStatCalculator for the given URL. If the URL

+     * doesn't exist, the method returns null.

+     * @param url

+     * @return

+     */

+    public SamplingStatCalculator getStatistics(String url) {

+        if (this.data.containsKey(url)) {

+            return (SamplingStatCalculator)this.data.get(url);

+        } else {

+            return null;

+        }

+    }

+    

+    public void loadData() {

+        

+    }

+    

+    public void add(SampleResult sample) {

+        

+    }

+    

+    /**

+     * By default, the method always returns true. Subclasses can over

+     * ride the implementation.

+     */

+    public boolean isStats() {

+        return true;

+    }

+}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to