Author: pmouawad Date: Sun Feb 9 11:26:51 2014 New Revision: 1566275 URL: http://svn.apache.org/r1566275 Log: Bug 55998 - HTTP recording – Replacing port value by user defined variable does not work Bugzilla Id: 55998
Modified: jmeter/trunk/src/core/org/apache/jmeter/engine/util/ValueReplacer.java jmeter/trunk/xdocs/changes.xml Modified: jmeter/trunk/src/core/org/apache/jmeter/engine/util/ValueReplacer.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/engine/util/ValueReplacer.java?rev=1566275&r1=1566274&r2=1566275&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/engine/util/ValueReplacer.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/engine/util/ValueReplacer.java Sun Feb 9 11:26:51 2014 @@ -29,6 +29,7 @@ import org.apache.jmeter.testelement.Tes import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.MultiProperty; +import org.apache.jmeter.testelement.property.NumberProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jorphan.logging.LoggingManager; @@ -59,6 +60,13 @@ public class ValueReplacer { this.variables = variables; } + /** + * Replaces TestElement StringProperties containing functions with their Function properties equivalent, example: + * ${__time()}_${__threadNum()}_${__machineName()} will become a FunctionProperty of + * a CompoundVariable containing 3 functions + * @param el + * @throws InvalidVariableException + */ public void replaceValues(TestElement el) throws InvalidVariableException { Collection<JMeterProperty> newProps = replaceValues(el.propertyIterator(), new ReplaceStringWithFunctions(masterFunction, variables)); @@ -72,18 +80,34 @@ public class ValueReplacer { } } + /** + * Transforms strings into variable references + * @param el + * @throws InvalidVariableException + */ public void reverseReplace(TestElement el) throws InvalidVariableException { Collection<JMeterProperty> newProps = replaceValues(el.propertyIterator(), new ReplaceFunctionsWithStrings(masterFunction, variables)); setProperties(el, newProps); } + /** + * Transforms strings into variable references using regexp matching if regexMatch is true + * @param el + * @param regexMatch + * @throws InvalidVariableException + */ public void reverseReplace(TestElement el, boolean regexMatch) throws InvalidVariableException { Collection<JMeterProperty> newProps = replaceValues(el.propertyIterator(), new ReplaceFunctionsWithStrings(masterFunction, variables, regexMatch)); setProperties(el, newProps); } + /** + * Replaces ${key} by value extracted from variables if any + * @param el + * @throws InvalidVariableException + */ public void undoReverseReplace(TestElement el) throws InvalidVariableException { Collection<JMeterProperty> newProps = replaceValues(el.propertyIterator(), new UndoVariableReplacement(masterFunction, variables)); @@ -104,6 +128,15 @@ public class ValueReplacer { variables.putAll(vars); } + /** + * Replaces a StringProperty containing functions with their Function properties equivalent, example: + * ${__time()}_${__threadNum()}_${__machineName()} will become a FunctionProperty of + * a CompoundVariable containing 3 functions + * @param iter {@link PropertyIterator} + * @param transform {@link ValueTransformer} + * @return Collection<JMeterProperty> + * @throws InvalidVariableException + */ private Collection<JMeterProperty> replaceValues(PropertyIterator iter, ValueTransformer transform) throws InvalidVariableException { List<JMeterProperty> props = new LinkedList<JMeterProperty>(); while (iter.hasNext()) { @@ -120,6 +153,11 @@ public class ValueReplacer { log.debug("Replacement result: " + val); } } + } else if (val instanceof NumberProperty) { + val = transform.transformValue(val); + if (log.isDebugEnabled()) { + log.debug("Replacement result: " + val); + } } else if (val instanceof MultiProperty) { MultiProperty multiVal = (MultiProperty) val; Collection<JMeterProperty> newValues = replaceValues(multiVal.iterator(), transform); Modified: jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1566275&r1=1566274&r2=1566275&view=diff ============================================================================== --- jmeter/trunk/xdocs/changes.xml (original) +++ jmeter/trunk/xdocs/changes.xml Sun Feb 9 11:26:51 2014 @@ -122,6 +122,7 @@ A workaround is to use a Java 7 update 4 <h3>HTTP Samplers and Test Script Recorder</h3> <ul> +<li><bugzilla>55998</bugzilla> - HTTP recording â Replacing port value by user defined variable does not work</li> </ul> <h3>Other Samplers</h3>