From 6b9da6c0ce06b271e071a39f021ab86e66dcd07c Mon Sep 17 00:00:00 2001 From: Philippe Mouawad Date: Sun, 18 Mar 2018 14:30:39 +0000 Subject: [PATCH] Bug 62178 - Add default value to __V function Contributed by Orimarko Bugzilla Id: 62178 git-svn-id: https://svn.apache.org/repos/asf/jmeter/trunk@1827141 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/jmeter/functions/Variable.java | 19 ++++++++++++------- .../apache/jmeter/functions/VariableTest.java | 12 +++++++++++- xdocs/changes.xml | 1 + xdocs/usermanual/functions.xml | 3 +++ 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/functions/org/apache/jmeter/functions/Variable.java b/src/functions/org/apache/jmeter/functions/Variable.java index ec529cd502..eb2c7b493f 100644 --- a/src/functions/org/apache/jmeter/functions/Variable.java +++ b/src/functions/org/apache/jmeter/functions/Variable.java @@ -33,10 +33,11 @@ import org.apache.jmeter.util.JMeterUtils; * * Parameters: * - variable name + * - default value * * Returns: * - the variable value, but if not found - * - the variable name itself + * - the default value if set, and if not the variable name itself * @since 2.3RC3 */ public class Variable extends AbstractFunction { @@ -47,25 +48,29 @@ public class Variable extends AbstractFunction { // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 1; - private static final int MAX_PARAMETER_COUNT = 1; + private static final int MAX_PARAMETER_COUNT = 2; static { desc.add(JMeterUtils.getResString("variable_name_param")); //$NON-NLS-1$ + desc.add(JMeterUtils.getResString("property_default_param")); //$NON-NLS-1$ } private Object[] values; - public Variable() { + public Variable() { + //used for test } /** {@inheritDoc} */ @Override - public String execute(SampleResult previousResult, Sampler currentSampler) - throws InvalidVariableException { + public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String variableName = ((CompoundVariable) values[0]).execute(); + String variableDefault = variableName; + if (values.length > 1) { + variableDefault = ((CompoundVariable) values[1]).execute(); + } String variableValue = getVariables().get(variableName); - return variableValue == null? variableName : variableValue; - + return variableValue == null ? variableDefault : variableValue; } /** {@inheritDoc} */ diff --git a/test/src/org/apache/jmeter/functions/VariableTest.java b/test/src/org/apache/jmeter/functions/VariableTest.java index fd2f35ecdc..e14e14a207 100644 --- a/test/src/org/apache/jmeter/functions/VariableTest.java +++ b/test/src/org/apache/jmeter/functions/VariableTest.java @@ -57,7 +57,17 @@ public class VariableTest extends JMeterTestCase { parms = makeParams("V",null,null); r.setParameters(parms); s = r.execute(null,null); - assertEquals("A",s); + assertEquals("A",s); + + parms = makeParams("V","DEFAULT",null); + r.setParameters(parms); + s = r.execute(null,null); + assertEquals("A",s); + + parms = makeParams("EMPTY","DEFAULT",null); + r.setParameters(parms); + s = r.execute(null,null); + assertEquals("DEFAULT",s); parms = makeParams("X",null,null); r.setParameters(parms); diff --git a/xdocs/changes.xml b/xdocs/changes.xml index 1040cdb493..62a66cba61 100644 --- a/xdocs/changes.xml +++ b/xdocs/changes.xml @@ -106,6 +106,7 @@ this behaviour, set httpclient.reset_state_on_thread_group_iteration=false

Functions

I18N

diff --git a/xdocs/usermanual/functions.xml b/xdocs/usermanual/functions.xml index 876d4b2204..5941ca455c 100644 --- a/xdocs/usermanual/functions.xml +++ b/xdocs/usermanual/functions.xml @@ -1244,6 +1244,9 @@ i.intValue(); // or use i.longValue() The variable to be evaluated. + + The default value in case no variable found, if it's empty and no variable found function returns the variable name +