mstover1 2005/08/18 10:21:52 Modified: src/core/org/apache/jmeter/testelement/property Tag: rel-2-1 FunctionProperty.java src/core/org/apache/jmeter/engine Tag: rel-2-1 StandardJMeterEngine.java PreCompiler.java src/core/org/apache/jmeter/config Tag: rel-2-1 Arguments.java Argument.java src/core/org/apache/jmeter/testelement Tag: rel-2-1 TestPlan.java Log: Make TestPlan variables and user-Defined Variables capable of using functions in their values that are evaluated once at test start. Revision Changes Path No revision No revision 1.18.2.1 +4 -4 jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/FunctionProperty.java Index: FunctionProperty.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/FunctionProperty.java,v retrieving revision 1.18 retrieving revision 1.18.2.1 diff -u -r1.18 -r1.18.2.1 --- FunctionProperty.java 12 Jul 2005 20:50:25 -0000 1.18 +++ FunctionProperty.java 18 Aug 2005 17:21:51 -0000 1.18.2.1 @@ -70,12 +70,12 @@ JMeterContext ctx = JMeterContextService.getContext();// Expensive, so // do // once - if (!isRunningVersion() || !ctx.isSamplingStarted()) { + if (!isRunningVersion() /*|| !ctx.isSamplingStarted()*/) { log.debug("Not running version, return raw function string"); return function.getRawParameters(); } else { log.debug("Running version, executing function"); - int iter = ctx.getVariables().getIteration(); + int iter = ctx.getVariables() != null ? ctx.getVariables().getIteration() : -1; if (iter < testIteration) { testIteration = -1; } No revision No revision 1.60.2.2 +3 -3 jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java Index: StandardJMeterEngine.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java,v retrieving revision 1.60.2.1 retrieving revision 1.60.2.2 diff -u -r1.60.2.1 -r1.60.2.2 --- StandardJMeterEngine.java 17 Aug 2005 15:02:26 -0000 1.60.2.1 +++ StandardJMeterEngine.java 18 Aug 2005 17:21:51 -0000 1.60.2.2 @@ -301,7 +301,7 @@ if (((TestPlan) plan[0]).isSerialized()) { serialized = true; } - JMeterContextService.startTest(); + JMeterContextService.startTest(); compileTree(); /** * Notification of test listeners needs to happen after function @@ -359,9 +359,9 @@ log.info("Continue on error"); } + ListedHashTree threadGroupTree = (ListedHashTree) searcher.getSubTree(group); + threadGroupTree.add(group, testLevelElements); for (int i = 0; running && i < threads.length; i++) { - ListedHashTree threadGroupTree = (ListedHashTree) searcher.getSubTree(group); - threadGroupTree.add(group, testLevelElements); threads[i] = new JMeterThread(cloneTree(threadGroupTree), this, notifier); threads[i].setThreadNum(i); threads[i].setThreadGroup(group); 1.24.2.1 +14 -10 jakarta-jmeter/src/core/org/apache/jmeter/engine/PreCompiler.java Index: PreCompiler.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/PreCompiler.java,v retrieving revision 1.24 retrieving revision 1.24.2.1 diff -u -r1.24 -r1.24.2.1 --- PreCompiler.java 12 Jul 2005 20:50:36 -0000 1.24 +++ PreCompiler.java 18 Aug 2005 17:21:51 -0000 1.24.2.1 @@ -52,21 +52,25 @@ * @see HashTreeTraverser#addNode(Object, HashTree) */ public void addNode(Object node, HashTree subTree) { + if(node instanceof TestElement) + { + try { + replacer.replaceValues((TestElement) node); + } catch (InvalidVariableException e) { + log.error("invalid variables", e); + } + } if (node instanceof TestPlan) { - Map args = ((TestPlan) node).getUserDefinedVariables(); + ((TestPlan)node).prepareForPreCompile(); //A hack to make user-defined variables in the testplan element more dynamic + Map args = ((TestPlan) node).getUserDefinedVariables(); replacer.setUserDefinedVariables(args); JMeterVariables vars = new JMeterVariables(); vars.putAll(args); JMeterContextService.getContext().setVariables(vars); - } else if (node instanceof TestElement) { - try { - replacer.replaceValues((TestElement) node); - } catch (InvalidVariableException e) { - log.error("invalid variables", e); - } - } + } if (node instanceof Arguments) { + ((Arguments)node).setRunningVersion(true); Map args = ((Arguments) node).getArgumentsAsMap(); replacer.addVariables(args); JMeterContextService.getContext().getVariables().putAll(args); No revision No revision 1.10.2.1 +5 -2 jakarta-jmeter/src/core/org/apache/jmeter/config/Arguments.java Index: Arguments.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/config/Arguments.java,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -r1.10 -r1.10.2.1 --- Arguments.java 12 Jul 2005 20:50:59 -0000 1.10 +++ Arguments.java 18 Aug 2005 17:21:52 -0000 1.10.2.1 @@ -27,6 +27,8 @@ import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.TestElementProperty; +import org.apache.jorphan.logging.LoggingManager; +import org.apache.log.Logger; // Mark Walsh, 2002-08-03 add method: // addArgument(String name, Object value, Object metadata) @@ -41,6 +43,7 @@ * @version $Revision$ */ public class Arguments extends ConfigTestElement implements Serializable { + private static Logger log = LoggingManager.getLoggerForClass(); /** The name of the property used to store the arguments. */ public static final String ARGUMENTS = "Arguments.arguments"; 1.10.2.1 +5 -2 jakarta-jmeter/src/core/org/apache/jmeter/config/Argument.java Index: Argument.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/config/Argument.java,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -r1.10 -r1.10.2.1 --- Argument.java 12 Jul 2005 20:50:59 -0000 1.10 +++ Argument.java 18 Aug 2005 17:21:52 -0000 1.10.2.1 @@ -22,6 +22,8 @@ import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.StringProperty; +import org.apache.jorphan.logging.LoggingManager; +import org.apache.log.Logger; // Mark Walsh, 2002-08-03, add metadata attribute // add constructor Argument(String name, Object value, Object metadata) @@ -36,6 +38,7 @@ * @version $Revision$ */ public class Argument extends AbstractTestElement implements Serializable { + private static Logger log = LoggingManager.getLoggerForClass(); /** Name used to store the argument's name. */ public static final String ARG_NAME = "Argument.name"; No revision No revision 1.17.2.1 +7 -2 jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestPlan.java Index: TestPlan.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestPlan.java,v retrieving revision 1.17 retrieving revision 1.17.2.1 diff -u -r1.17 -r1.17.2.1 --- TestPlan.java 12 Jul 2005 20:50:28 -0000 1.17 +++ TestPlan.java 18 Aug 2005 17:21:52 -0000 1.17.2.1 @@ -88,6 +88,11 @@ // setSerialized(false); setProperty(new CollectionProperty(THREAD_GROUPS, threadGroups)); } + + public void prepareForPreCompile() + { + getVariables().setRunningVersion(true); + } /** * Fetches the functional mode property
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]