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 ms...@apache.org on 2005/08/30 20:49:37 UTC

cvs commit: jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui TableEditor.java

mstover1    2005/08/30 11:49:37

  Modified:    src/components/org/apache/jmeter/assertions
                        CompareAssertionResources.properties
                        CompareAssertionBeanInfo.java CompareAssertion.java
               src/core/org/apache/jmeter/testbeans TestBeanHelper.java
               src/core/org/apache/jmeter/testbeans/gui TableEditor.java
  Added:       src/components/org/apache/jmeter/assertions
                        SubstitutionElement.java
  Log:
  CompareAssertion regex filters now can take a substitution string that is substituted in for the regex matches in the response data.
  
  Revision  Changes    Path
  1.3       +2 -2      jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionResources.properties
  
  Index: CompareAssertionResources.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionResources.properties,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CompareAssertionResources.properties	29 Aug 2005 18:48:02 -0000	1.2
  +++ CompareAssertionResources.properties	30 Aug 2005 18:49:37 -0000	1.3
  @@ -5,5 +5,5 @@
   compareTime.displayName=Compare Time
   compareTime.shortDescription=Verify that all Samplers' return times are within a given number of milliseconds
   comparison_filters.displayName=Comparison Filters
  -stringsToSkip.displayName=Regular Expression Filters
  -stringsToSkip.shortDescription=Regular expressions to match elements of response data to be ignored when comparing
  \ No newline at end of file
  +stringsToSkip.displayName=Regular Expression Substitutions
  +stringsToSkip.shortDescription=Regular expressions to match elements of response data to be substituted when comparing
  \ No newline at end of file
  
  
  
  1.3       +5 -4      jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionBeanInfo.java
  
  Index: CompareAssertionBeanInfo.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionBeanInfo.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CompareAssertionBeanInfo.java	29 Aug 2005 18:48:02 -0000	1.2
  +++ CompareAssertionBeanInfo.java	30 Aug 2005 18:49:37 -0000	1.3
  @@ -1,7 +1,7 @@
   package org.apache.jmeter.assertions;
   
   import java.beans.PropertyDescriptor;
  -import java.util.Arrays;
  +import java.util.ArrayList;
   
   import org.apache.jmeter.testbeans.BeanInfoSupport;
   import org.apache.jmeter.testbeans.gui.TableEditor;
  @@ -22,10 +22,11 @@
   		p.setValue(NOT_EXPRESSION, Boolean.FALSE);	
   		p = property("stringsToSkip");
   		p.setPropertyEditorClass(TableEditor.class);
  -		p.setValue(TableEditor.CLASSNAME,"java.lang.String");
  -		p.setValue(TableEditor.HEADERS,new String[]{"Regex String"});
  +		p.setValue(TableEditor.CLASSNAME,"org.apache.jmeter.assertions.SubstitutionElement");
  +		p.setValue(TableEditor.HEADERS,new String[]{"Regex String","Substitution"});
  +		p.setValue(TableEditor.OBJECT_PROPERTIES,new String[]{"regex","substitute"});
   		p.setValue(NOT_UNDEFINED,Boolean.TRUE);
  -		p.setValue(DEFAULT,Arrays.asList(new String[]{"One","Two"}));
  +		p.setValue(DEFAULT,new ArrayList());
   		p.setValue(MULTILINE,Boolean.TRUE);
   		
   	}
  
  
  
  1.5       +6 -5      jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertion.java
  
  Index: CompareAssertion.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertion.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CompareAssertion.java	30 Aug 2005 15:17:26 -0000	1.4
  +++ CompareAssertion.java	30 Aug 2005 18:49:37 -0000	1.5
  @@ -25,7 +25,7 @@
   
   	transient List responses;
   
  -	private static final Substitution emptySub = new StringSubstitution("");
  +	private StringSubstitution emptySub = new StringSubstitution("");
   
   	transient boolean iterationDone = false;
   
  @@ -33,7 +33,7 @@
   
   	private long compareTime = -1;
   
  -	Collection<String> stringsToSkip;
  +	Collection<SubstitutionElement> stringsToSkip;
   
   	public CompareAssertion() {
   		super();
  @@ -122,9 +122,10 @@
   		if (stringsToSkip == null || stringsToSkip.size() == 0) {
   			return content;
   		} else {
  -			for (String regex : stringsToSkip) {
  +			for (SubstitutionElement regex : stringsToSkip) {
   				log.info("replacing regex: " + regex);
  -				content = Util.substitute(JMeterUtils.getMatcher(), JMeterUtils.getPatternCache().getPattern(regex),
  +				emptySub.setSubstitution(regex.getSubstitute());
  +				content = Util.substitute(JMeterUtils.getMatcher(), JMeterUtils.getPatternCache().getPattern(regex.getRegex()),
   						emptySub, content, Util.SUBSTITUTE_ALL);
   			}
   		}
  @@ -193,7 +194,7 @@
   	 *            The stringsToSkip to set.
   	 */
   	public void setStringsToSkip(Collection stringsToSkip) {
  -		this.stringsToSkip = (Collection<String>) stringsToSkip;
  +		this.stringsToSkip = (Collection<SubstitutionElement>) stringsToSkip;
   	}
   
   }
  
  
  
  1.1                  jakarta-jmeter/src/components/org/apache/jmeter/assertions/SubstitutionElement.java
  
  Index: SubstitutionElement.java
  ===================================================================
  package org.apache.jmeter.assertions;
  
  import org.apache.jmeter.testelement.AbstractTestElement;
  
  public class SubstitutionElement extends AbstractTestElement {
  	private static final long serialVersionUID = 1;
  	
  	public static final String REGEX = "substitution.regex";
  	
  	public static final String SUBSTITUTE = "substitution.sub";
  
  	public SubstitutionElement() {
  		super();
  	}
  	
  	public String getRegex()
  	{
  		return getProperty(REGEX).getStringValue();
  	}
  	
  	public void setRegex(String regex)
  	{
  		setProperty(REGEX,regex);
  	}
  	
  	public String getSubstitute()
  	{
  		return getProperty(SUBSTITUTE).getStringValue();
  	}
  	
  	public void setSubstitute(String sub)
  	{
  		setProperty(SUBSTITUTE,sub);
  	}
  	
  	
  
  }
  
  
  
  1.6       +15 -24    jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBeanHelper.java
  
  Index: TestBeanHelper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBeanHelper.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestBeanHelper.java	29 Aug 2005 21:04:11 -0000	1.5
  +++ TestBeanHelper.java	30 Aug 2005 18:49:37 -0000	1.6
  @@ -31,6 +31,7 @@
   import org.apache.jmeter.testelement.property.JMeterProperty;
   import org.apache.jmeter.testelement.property.MultiProperty;
   import org.apache.jmeter.testelement.property.PropertyIterator;
  +import org.apache.jmeter.testelement.property.TestElementProperty;
   import org.apache.jorphan.logging.LoggingManager;
   import org.apache.jorphan.util.Converter;
   import org.apache.log.Logger;
  @@ -55,7 +56,6 @@
   	 * property value map.
   	 * <p>
   	 * 
  -	 * @deprecated to limit it's usage in expectation of moving it elsewhere.
   	 */
   	public static void prepare(TestElement el) {
   		if (!(el instanceof TestBean)) {
  @@ -101,7 +101,16 @@
   	 */
   	private static Object unwrapProperty(PropertyDescriptor desc, JMeterProperty jprop, Class type) {
   		Object value;
  -		if(jprop instanceof MultiProperty)
  +		if(jprop instanceof TestElementProperty)
  +		{
  +			TestElement te = ((TestElementProperty)jprop).getElement();
  +			if(te instanceof TestBean)
  +			{
  +				prepare(te);
  +			}
  +			value = te;
  +		}
  +		else if(jprop instanceof MultiProperty)
   		{
   			value = unwrapCollection((MultiProperty)jprop,(String)desc.getValue(TableEditor.CLASSNAME));
   		}
  @@ -117,14 +126,13 @@
   			PropertyIterator iter = prop.iterator();
   			while(iter.hasNext())
   			{
  -				JMeterProperty propVal = iter.next();
   				try
   				{
  -					values.add(Converter.convert(propVal.getStringValue(), Class.forName(type)));
  +					values.add(unwrapProperty(null,iter.next(),Class.forName(type)));
   				}
   				catch(Exception e)
   				{
  -					log.error("Couldn't convert object: " + propVal.getObjectValue() + " to " + type);
  +					log.error("Couldn't convert object: " + prop.getObjectValue() + " to " + type,e);
   				}
   			}
   			return values;
  @@ -154,21 +162,4 @@
   			throw new Error(e.toString()); // Programming error: bail out.
   		}
   	}
  -
  -	/**
  -	 * Utility method to obtain the value of a property in the given type.
  -	 * <p>
  -	 * I plan to get rid of this sooner than later, so please don't use it much.
  -	 * 
  -	 * @param property
  -	 *            Property to get the value of.
  -	 * @param type
  -	 *            Type of the result.
  -	 * @return an object of the given type if it is one of the known supported
  -	 *         types, or the value returned by property.getObjectValue
  -	 * @deprecated
  -	 */
  -	private static Object unwrapProperty(JMeterProperty property, Class type) {
  -		return Converter.convert(property.getObjectValue(), type);
  -	}
   }
  
  
  
  1.2       +22 -1     jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TableEditor.java
  
  Index: TableEditor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TableEditor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TableEditor.java	29 Aug 2005 18:48:02 -0000	1.1
  +++ TableEditor.java	30 Aug 2005 18:49:37 -0000	1.2
  @@ -9,6 +9,9 @@
   import java.beans.PropertyDescriptor;
   import java.beans.PropertyEditorSupport;
   import java.lang.reflect.Method;
  +import java.util.Collection;
  +import java.util.LinkedList;
  +import java.util.List;
   
   import javax.swing.CellEditor;
   import javax.swing.JButton;
  @@ -20,6 +23,7 @@
   import javax.swing.event.TableModelEvent;
   import javax.swing.event.TableModelListener;
   
  +import org.apache.jmeter.testelement.property.TestElementProperty;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jorphan.gui.ObjectTableModel;
   import org.apache.jorphan.logging.LoggingManager;
  @@ -99,11 +103,28 @@
   	public void setValue(Object value) {
   		if(value != null)
   		{
  -			model.setRows((Iterable)value);
  +			model.setRows(convertCollection((Collection)value));
   		}
   		else model.clearData();
   		this.firePropertyChange();
   	}
  +	
  +	private Collection convertCollection(Collection values)
  +	{
  +		List l = new LinkedList();
  +		for(Object obj : values)
  +		{
  +			if(obj instanceof TestElementProperty)
  +			{
  +				l.add(((TestElementProperty)obj).getElement());
  +			}
  +			else
  +			{
  +				l.add(obj);
  +			}
  +		}
  +		return l;
  +	}
   
   	/* (non-Javadoc)
   	 * @see java.beans.PropertyEditor#supportsCustomEditor()
  
  
  

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