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