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 2007/03/03 00:34:49 UTC

svn commit: r514013 - in /jakarta/jmeter/branches/rel-2-2: src/components/org/apache/jmeter/visualizers/ src/core/org/apache/jmeter/config/gui/ src/core/org/apache/jmeter/visualizers/ src/jorphan/org/apache/jorphan/gui/ src/jorphan/org/apache/jorphan/r...

Author: sebb
Date: Fri Mar  2 15:34:47 2007
New Revision: 514013

URL: http://svn.apache.org/viewvc?view=rev&rev=514013
Log:
Remove formatting from Calculator classes
Add unit tests for Functor method calls

Added:
    jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jorphan/TestFunctorUsers.java
Modified:
    jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
    jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
    jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/SummaryReport.java
    jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
    jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
    jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java
    jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java
    jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/reflect/Functor.java
    jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java
    jakarta/jmeter/branches/rel-2-2/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LDAPArgumentsPanel.java
    jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml

Modified: jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java Fri Mar  2 15:34:47 2007
@@ -42,6 +42,7 @@
 import javax.swing.JTable;
 import javax.swing.border.Border;
 import javax.swing.border.EmptyBorder;
+import javax.swing.table.TableCellRenderer;
 
 import org.apache.jmeter.gui.action.ActionNames;
 import org.apache.jmeter.gui.action.ActionRouter;
@@ -57,7 +58,10 @@
 import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
 import org.apache.jorphan.gui.JLabeledChoice;
 import org.apache.jorphan.gui.JLabeledTextField;
+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.log.Logger;
@@ -147,7 +151,9 @@
 
 	public StatGraphVisualizer() {
 		super();
-		model = new ObjectTableModel(COLUMNS, new Functor[] {
+		model = new ObjectTableModel(COLUMNS,
+				SamplingStatCalculator.class,
+				new Functor[] {
 				new Functor("getLabel"),					//$NON-NLS-1$
 				new Functor("getCount"),					//$NON-NLS-1$
 				new Functor("getMeanAsNumber"),				//$NON-NLS-1$
@@ -156,9 +162,9 @@
 				new Object[] { new Float(.900) }),
 				new Functor("getMin"),						//$NON-NLS-1$
 				new Functor("getMax"), 						//$NON-NLS-1$
-				new Functor("getErrorPercentageString"),	//$NON-NLS-1$
-				new Functor("getRateString"),				//$NON-NLS-1$
-				new Functor("getPageSizeString") },			//$NON-NLS-1$
+				new Functor("getErrorPercentage"),	//$NON-NLS-1$
+				new Functor("getRate"),				//$NON-NLS-1$
+				new Functor("getPageSize") },			//$NON-NLS-1$
 				new Functor[] { null, null, null, null, null, null, null, null,	null, null }, 
 				new Class[] { String.class, Long.class, Long.class, Long.class, Long.class, Long.class,
 				Long.class, String.class, String.class, String.class });
@@ -166,6 +172,26 @@
 		init();
 	}
 
+	// Column renderers
+	private static final TableCellRenderer[] RENDERERS = 
+		new TableCellRenderer[]{
+		    null, // Label
+		    null, // count
+		    null, // Mean
+		    null, // median
+		    null, // 90%
+		    null, // Min
+		    null, // Max
+		    new NumberRenderer("#0.00%"), // Error %age
+		    new RateRenderer("#.0"),      // Throughpur
+		    new NumberRenderer("#.0"),    // pageSize
+		};
+
+	public static boolean testFunctors(){
+		StatGraphVisualizer instance = new StatGraphVisualizer();
+		return instance.model.checkFunctors(null,instance.getClass());
+	}
+	
 	public String getLabelResource() {
 		return "aggregate_graph_title";						//$NON-NLS-1$
 	}
@@ -221,6 +247,7 @@
 
 		myJTable = new JTable(model);
 		myJTable.setPreferredScrollableViewportSize(new Dimension(500, 80));
+		RendererUtils.applyRenderers(myJTable, RENDERERS);
 		myScrollPane = new JScrollPane(myJTable);
         
         graph = new VerticalPanel();

Modified: jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatVisualizer.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatVisualizer.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/StatVisualizer.java Fri Mar  2 15:34:47 2007
@@ -33,6 +33,7 @@
 import javax.swing.JTable;
 import javax.swing.border.Border;
 import javax.swing.border.EmptyBorder;
+import javax.swing.table.TableCellRenderer;
 //import javax.swing.table.AbstractTableModel;
 //import javax.swing.table.TableModel;
 
@@ -41,7 +42,10 @@
 import org.apache.jmeter.testelement.TestElement;
 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.reflect.Functor;
 
 /**
@@ -79,6 +83,7 @@
 	public StatVisualizer() {
 		super();
 		model = new ObjectTableModel(COLUMNS, 
+				SamplingStatCalculator.class,
                 new Functor[] { 
                     new Functor("getLabel"),   //$NON-NLS-1$
                     new Functor("getCount"),  //$NON-NLS-1$
@@ -88,9 +93,9 @@
                             new Object[] { new Float(.900) }), 
                     new Functor("getMin"),  //$NON-NLS-1$
                     new Functor("getMax"),   //$NON-NLS-1$
-                    new Functor("getErrorPercentageString"),   //$NON-NLS-1$
-                    new Functor("getRateString"),  //$NON-NLS-1$
-    				new Functor("getPageSizeString")   //$NON-NLS-1$
+                    new Functor("getErrorPercentage"),   //$NON-NLS-1$
+                    new Functor("getRate"),  //$NON-NLS-1$
+    				new Functor("getPageSize")   //$NON-NLS-1$
                 },
                 new Functor[] { null, null, null, null, null, null, null, null, null, null }, 
                 new Class[] { String.class, Long.class, Long.class, Long.class, Long.class, 
@@ -99,6 +104,26 @@
 		init();
 	}
 
+	// Column renderers
+	private static final TableCellRenderer[] RENDERERS = 
+		new TableCellRenderer[]{
+		    null, // Label
+		    null, // count
+		    null, // Mean
+		    null, // median
+		    null, // 90%
+		    null, // Min
+		    null, // Max
+		    new NumberRenderer("#0.00%"), // Error %age
+		    new RateRenderer("#.0"),      // Throughpur
+		    new NumberRenderer("#.0"),    // pageSize
+		};
+
+	public static boolean testFunctors(){
+		StatVisualizer instance = new StatVisualizer();
+		return instance.model.checkFunctors(null,instance.getClass());
+	}
+	
 	public String getLabelResource() {
 		return "aggregate_report";  //$NON-NLS-1$
 	}
@@ -156,6 +181,7 @@
 		// new SortFilterModel(myStatTableModel);
 		myJTable = new JTable(model);
 		myJTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
+		RendererUtils.applyRenderers(myJTable, RENDERERS);
 		myScrollPane = new JScrollPane(myJTable);
 		this.add(mainPanel, BorderLayout.NORTH);
 		this.add(myScrollPane, BorderLayout.CENTER);
@@ -167,7 +193,6 @@
  * haven't implemented this yet, it needs some non-trivial work done to it to
  * support our dynamically-sizing TableModel for this visualizer.
  * 
- * @version $Revision$
  */
 
 //class SortFilterModel extends AbstractTableModel {

Modified: jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/SummaryReport.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/SummaryReport.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/SummaryReport.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/SummaryReport.java Fri Mar  2 15:34:47 2007
@@ -110,7 +110,7 @@
     
 	public static boolean testFunctors(){
 		SummaryReport instance = new SummaryReport();
-		return instance.model.checkFunctors(null);
+		return instance.model.checkFunctors(null,instance.getClass());
 	}
 	
 	public String getLabelResource() {

Modified: jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/TableVisualizer.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/TableVisualizer.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/components/org/apache/jmeter/visualizers/TableVisualizer.java Fri Mar  2 15:34:47 2007
@@ -109,7 +109,7 @@
 
 	public static boolean testFunctors(){
 		TableVisualizer instance = new TableVisualizer();
-		return instance.model.checkFunctors(null);
+		return instance.model.checkFunctors(null,instance.getClass());
 	}
 	
 

Modified: jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java Fri Mar  2 15:34:47 2007
@@ -341,14 +341,23 @@
 	 * Initialize the table model used for the arguments table.
 	 */
 	protected void initializeTableModel() {
-		tableModel = new ObjectTableModel(new String[] { COLUMN_NAMES_0, COLUMN_NAMES_1 }, new Functor[] {
+		tableModel = new ObjectTableModel(new String[] { COLUMN_NAMES_0, COLUMN_NAMES_1 },
+				Argument.class,
+				new Functor[] {
 				new Functor("getName"), // $NON-NLS-1$
 				new Functor("getValue") },  // $NON-NLS-1$
-				new Functor[] { new Functor("setName"), // $NON-NLS-1$
+				new Functor[] {
+			    new Functor("setName"), // $NON-NLS-1$
 				new Functor("setValue") }, // $NON-NLS-1$
 				new Class[] { String.class, String.class });
 	}
 
+	public static boolean testFunctors(){
+		ArgumentsPanel instance = new ArgumentsPanel();
+		instance.initializeTableModel();
+		return instance.tableModel.checkFunctors(null,instance.getClass());
+	}
+	
 	/**
 	 * Resize the table columns to appropriate widths.
 	 * 

Modified: jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java Fri Mar  2 15:34:47 2007
@@ -19,7 +19,6 @@
 package org.apache.jmeter.visualizers;
 
 import java.io.Serializable;
-import java.text.DecimalFormat;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -36,17 +35,10 @@
  * the stats out with whatever methods you prefer.
  * 
  * @author James Boutcher
- * @version $Revision$
  */
 public class SamplingStatCalculator implements Serializable {
 	private static final Logger log = LoggingManager.getLoggerForClass();
 
-	private static DecimalFormat rateFormatter = new DecimalFormat("#.0");
-
-	private static DecimalFormat errorFormatter = new DecimalFormat("#0.00%");
-
-	private static DecimalFormat kbFormatter = new DecimalFormat("#0.00");
-
 	private final StatCalculator calculator = new StatCalculator();
 
 	private final List storedValues = new Vector();
@@ -143,41 +135,6 @@
 	}
 
 	/**
-	 * Returns a String that represents the throughput associated for this
-	 * sampler, in units appropriate to its dimension:
-	 * <p>
-	 * The number is represented in requests/second or requests/minute or
-	 * requests/hour.
-	 * <p>
-	 * Examples: "34.2/sec" "0.1/sec" "43.0/hour" "15.9/min"
-	 * 
-	 * @return a String representation of the rate the samples are being taken
-	 *         at.
-	 */
-	public String getRateString() {
-		double rate = getRate();
-
-		if (rate == Double.MAX_VALUE) {
-			return "N/A";
-		}
-
-		String unit = "sec";
-
-		if (rate < 1.0) {
-			rate *= 60.0;
-			unit = "min";
-		}
-		if (rate < 1.0) {
-			rate *= 60.0;
-			unit = "hour";
-		}
-
-		String rval = rateFormatter.format(rate) + "/" + unit;
-
-		return (rval);
-	}
-
-	/**
 	 * Should calculate the average page size, which means divide the bytes by number
 	 * of samples - actually calculates the throughput in bytes / second
 	 * 
@@ -196,16 +153,6 @@
 		return rate;
 	}
 
-	/**
-	 * formats the Page Size
-	 * 
-	 * @return
-	 */
-	public String getPageSizeString() {
-		double rate = getPageSize() / 1024;
-		return kbFormatter.format(rate);
-	}
-
 	public String getLabel() {
 		return label;
 	}
@@ -301,8 +248,7 @@
 
 	/**
 	 * Returns the raw double value of the percentage of samples with errors
-	 * that were recorded. (Between 0.0 and 1.0) If you want a nicer return
-	 * format, see {@link #getErrorPercentageString()}.
+	 * that were recorded. (Between 0.0 and 1.0)
 	 * 
 	 * @return the raw double value of the percentage of samples with errors
 	 *         that were recorded.
@@ -318,23 +264,7 @@
 	}
 
 	/**
-	 * Returns a String which represents the percentage of sample errors that
-	 * have occurred. ("0.00%" through "100.00%")
-	 * 
-	 * @return a String which represents the percentage of sample errors that
-	 *         have occurred.
-	 */
-	public String getErrorPercentageString() {
-		double myErrorPercentage = this.getErrorPercentage();
-		if (myErrorPercentage < 0) {
-			myErrorPercentage = 0.0;
-		}
-
-		return (errorFormatter.format(myErrorPercentage));
-	}
-
-	/**
-	 * For debugging purposes, mainly.
+	 * For debugging purposes, only.
 	 */
 	public String toString() {
 		StringBuffer mySB = new StringBuffer();
@@ -343,8 +273,8 @@
 		mySB.append("Avg: " + this.getMean() + "  ");
 		mySB.append("Min: " + this.getMin() + "  ");
 		mySB.append("Max: " + this.getMax() + "  ");
-		mySB.append("Error Rate: " + this.getErrorPercentageString() + "  ");
-		mySB.append("Sample Rate: " + this.getRateString());
+		mySB.append("Error Rate: " + this.getErrorPercentage() + "  ");
+		mySB.append("Sample Rate: " + this.getRate());
 		return (mySB.toString());
 	}
 

Modified: jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java Fri Mar  2 15:34:47 2007
@@ -218,15 +218,20 @@
 		return (Class) classes.get(arg0);
 	}
 	
-	/*
-	 * Check all registered functors
+	/**
+	 * Check all registered functors.
+	 * <p>
+	 * <b>** only for use in unit test code **</b>
+	 * </p>
 	 * 
-	 * @param value - an instance of the table model row data item (default the class provided to the ctr)
+	 * @param value - an instance of the table model row data item 
+	 * (if null, use the class passed to the constructor).
 	 * 
-	 * ** only for use in unit test code
-	 * @return false if at least one Functor cannot be found
+	 * @param caller - class of caller.
+	 * 
+	 * @return false if at least one Functor cannot be found.
 	 */
-	public boolean checkFunctors(Object _value){
+	public boolean checkFunctors(Object _value, Class caller){
 		Object value;
 		if (_value == null && objectClass != null) {
 			try {
@@ -245,16 +250,16 @@
 		for(int i=0;i<getColumnCount();i++){
 			Functor setMethod = (Functor) writeFunctors.get(i);
 			if (setMethod != null) {
-				if (!setMethod.checkMethod(value)){
+				if (!setMethod.checkMethod(value,getColumnClass(i))){
 					status=false;
-					log.warn("Cannot find setMethod "+setMethod.toString());
+					log.warn(caller.getName()+" is attempting to use nonexistent "+setMethod.toString());
 				}
 			}
 			Functor getMethod = (Functor) readFunctors.get(i);
 			if (getMethod != null) {
 				if (!getMethod.checkMethod(value)){
 					status=false;
-					log.warn("Cannot find getMethod "+getMethod.toString());
+					log.warn(caller.getName()+" is attempting to use nonexistent "+getMethod.toString());
 				}
 			}
 			

Modified: jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/reflect/Functor.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/reflect/Functor.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/reflect/Functor.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/jorphan/org/apache/jorphan/reflect/Functor.java Fri Mar  2 15:34:47 2007
@@ -173,7 +173,7 @@
 	}
 
 	/*
-	 * Check if a Functor method is valid.
+	 * Check if a read Functor method is valid.
 	 * 
 	 * @deprecated ** for use by Unit test code only **
 	 * 
@@ -184,6 +184,24 @@
 		this.invokee=_invokee;
 		try {
 		    m = createMethod(getTypes());
+		} catch (Exception e){
+			// ignored
+		}
+		return null != m;
+	}
+
+	/*
+	 * Check if a write Functor method is valid.
+	 * 
+	 * @deprecated ** for use by Unit test code only **
+	 * 
+	 * @return true if method exists
+	 */
+	public boolean checkMethod(Object _invokee, Class c){
+		Method m = null;
+		this.invokee=_invokee;
+		try {
+		    m = createMethod(new Class[]{c});
 		} catch (Exception e){
 			// ignored
 		}

Modified: jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java Fri Mar  2 15:34:47 2007
@@ -42,13 +42,28 @@
 	private static final String INCLUDE_EQUALS = JMeterUtils.getResString("include_equals");
 
 	protected void initializeTableModel() {
-		tableModel = new ObjectTableModel(new String[] { ArgumentsPanel.COLUMN_NAMES_0, ArgumentsPanel.COLUMN_NAMES_1,
-				ENCODE_OR_NOT, INCLUDE_EQUALS }, new Functor[] { new Functor("getName"), new Functor("getValue"),
-				new Functor("isAlwaysEncoded"), new Functor("isUseEquals") }, new Functor[] { new Functor("setName"),
-				new Functor("setValue"), new Functor("setAlwaysEncoded"), new Functor("setUseEquals") }, new Class[] {
-				String.class, String.class, Boolean.class, Boolean.class });
+		tableModel = new ObjectTableModel(new String[] {
+				ArgumentsPanel.COLUMN_NAMES_0, ArgumentsPanel.COLUMN_NAMES_1, ENCODE_OR_NOT, INCLUDE_EQUALS },
+				HTTPArgument.class,
+				new Functor[] {
+				new Functor("getName"),
+				new Functor("getValue"),
+				new Functor("isAlwaysEncoded"),
+				new Functor("isUseEquals") },
+				new Functor[] { 
+				new Functor("setName"),
+				new Functor("setValue"),
+				new Functor("setAlwaysEncoded"),
+				new Functor("setUseEquals") },
+				new Class[] {String.class, String.class, Boolean.class, Boolean.class });
 	}
 
+	public static boolean testFunctors(){
+		HTTPArgumentsPanel instance = new HTTPArgumentsPanel();
+		instance.initializeTableModel();
+		return instance.tableModel.checkFunctors(null,instance.getClass());
+	}
+	
 	protected void sizeColumns(JTable table) {
 		int resizeMode = table.getAutoResizeMode();
 		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

Modified: jakarta/jmeter/branches/rel-2-2/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LDAPArgumentsPanel.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LDAPArgumentsPanel.java?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LDAPArgumentsPanel.java (original)
+++ jakarta/jmeter/branches/rel-2-2/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LDAPArgumentsPanel.java Fri Mar  2 15:34:47 2007
@@ -36,6 +36,7 @@
 import javax.swing.table.TableCellEditor;
 
 import org.apache.jmeter.config.gui.AbstractConfigGui;
+import org.apache.jmeter.config.gui.ArgumentsPanel;
 import org.apache.jmeter.testelement.TestElement;
 import org.apache.jmeter.testelement.property.PropertyIterator;
 import org.apache.jmeter.util.JMeterUtils;
@@ -321,11 +322,18 @@
 	 */
 	protected void initializeTableModel() {
 		tableModel = new ObjectTableModel(new String[] { COLUMN_NAMES[0], COLUMN_NAMES[1], COLUMN_NAMES[2] },
+				LDAPArgument.class,
 				new Functor[] { new Functor("getName"), new Functor("getValue"), new Functor("getOpcode") },
 				new Functor[] { new Functor("setName"), new Functor("setValue"), new Functor("setOpcode") },
 				new Class[] { String.class, String.class, String.class });
 	}
 
+	public static boolean testFunctors(){
+		LDAPArgumentsPanel instance = new LDAPArgumentsPanel();
+		instance.initializeTableModel();
+		return instance.tableModel.checkFunctors(null,instance.getClass());
+	}
+	
 	/*
 	 * protected void initializeTableModel() { tableModel = new
 	 * ObjectTableModel( new String[] { ArgumentsPanel.COLUMN_NAMES_0,

Added: jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jorphan/TestFunctorUsers.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jorphan/TestFunctorUsers.java?view=auto&rev=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jorphan/TestFunctorUsers.java (added)
+++ jakarta/jmeter/branches/rel-2-2/test/src/org/apache/jorphan/TestFunctorUsers.java Fri Mar  2 15:34:47 2007
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jorphan;
+
+import org.apache.jmeter.config.gui.ArgumentsPanel;
+import org.apache.jmeter.junit.JMeterTestCase;
+import org.apache.jmeter.protocol.http.gui.HTTPArgumentsPanel;
+import org.apache.jmeter.protocol.ldap.config.gui.LDAPArgumentsPanel;
+import org.apache.jmeter.visualizers.StatGraphVisualizer;
+import org.apache.jmeter.visualizers.StatVisualizer;
+import org.apache.jmeter.visualizers.SummaryReport;
+import org.apache.jmeter.visualizers.TableVisualizer;
+
+/*
+ * Unit tests for classes that use Functors
+ * 
+ */
+public class TestFunctorUsers extends JMeterTestCase {
+
+	public TestFunctorUsers(String arg0) {
+		super(arg0);
+	}
+    
+	public void testSummaryReport() throws Exception{
+		assertTrue("SummaryReport Functor",SummaryReport.testFunctors());
+	}
+    
+	public void testTableVisualizer() throws Exception{
+		assertTrue("TableVisualizer Functor",TableVisualizer.testFunctors());
+	}
+    
+	public void testStatGraphVisualizer() throws Exception{
+		assertTrue("StatGraphVisualizer Functor",StatGraphVisualizer.testFunctors());
+	}
+    
+	public void testStatVisualizer() throws Exception{
+		assertTrue("StatVisualizer Functor",StatVisualizer.testFunctors());
+	}
+    
+	public void testArgumentsPanel() throws Exception{
+		assertTrue("ArgumentsPanel Functor",ArgumentsPanel.testFunctors());
+	}
+    
+	public void testHTTPArgumentsPanel() throws Exception{
+		assertTrue("HTTPArgumentsPanel Functor",HTTPArgumentsPanel.testFunctors());
+	}
+    
+	public void testLDAPArgumentsPanel() throws Exception{
+		assertTrue("LDAPArgumentsPanel Functor",LDAPArgumentsPanel.testFunctors());
+	}
+}

Modified: jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml?view=diff&rev=514013&r1=514012&r2=514013
==============================================================================
--- jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml (original)
+++ jakarta/jmeter/branches/rel-2-2/xdocs/changes.xml Fri Mar  2 15:34:47 2007
@@ -36,7 +36,7 @@
 <p>
 Bug 22510 - JMeter always uses the first entry in the keystore.
 </p>
-<h4>Incompatible changes:</h4>
+<h4>Incompatible changes (usage):</h4>
 <p>
 Bug 41104: JMeterThread behaviour was changed so that PostProcessors are run in forward order
 (as they appear in the test plan) rather than reverse order as previously.
@@ -49,6 +49,11 @@
 so the temporary work-round of using '\' and '@' in the username to delimit the domain and realm
 has been removed.
 </p>
+<h4>Incompatible changes (development):</h4>
+<p>
+Calulator and SamplingStatCalculator classes no longer provide any formatting of their data.
+Formatting should now be done using the jorphan.gui Renderer classes.
+</p>
 <h4>New functionality:</h4>
 <ul>
 <li>Added httpclient.parameters.file to allow HttpClient parameters to be defined</li>
@@ -64,10 +69,15 @@
 <li>Bug 33964 - send file as entire post body if name/type are omitted</li>
 <li>HTTP Mirror Server Workbench element</li>
 <li>Bug 41253 - extend XPathExtractor to work with non-NodeList XPath expressions</li>
-<li>Change to htmlparser 2.0</li>
-<li>Updated to xstream 1.2.1/xpp3_min-1.1.3.4.O</li>
 <li>Bug 39717 - use icons in the results tree instead of colors</li>
 <li>Added __V variable function to resolve nested variable names</li>
+</ul>
+
+<h4>Non-functional improvements:</h4>
+<ul>
+<li>Change to htmlparser 2.0</li>
+<li>Updated to xstream 1.2.1/xpp3_min-1.1.3.4.O</li>
+<li>Functor calls can now be unit tested</li>
 </ul>
 
 <h4>Bug fixes:</h4>



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org