Author: sebb
Date: Wed Nov  7 10:40:57 2007
New Revision: 592849

URL: http://svn.apache.org/viewvc?rev=592849&view=rev
Log:
Restrict test Pre-compiler processing to ResultCollector only for the client 
part of a remote test

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java?rev=592849&r1=592848&r2=592849&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java 
Wed Nov  7 10:40:57 2007
@@ -111,7 +111,7 @@
                testListeners = new SearchByClass(TestListener.class);
                sampleListeners = new ConvertListeners();
                HashTree testTree = getTestTree();
-               PreCompiler compiler = new PreCompiler();
+               PreCompiler compiler = new PreCompiler(true); // limit the 
changes to client only test elements
                synchronized(testTree) {
                        testTree.traverse(compiler);
                        testTree.traverse(new TurnElementsOn());

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java?rev=592849&r1=592848&r2=592849&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java Wed 
Nov  7 10:40:57 2007
@@ -23,6 +23,7 @@
 import org.apache.jmeter.config.Arguments;
 import org.apache.jmeter.engine.util.ValueReplacer;
 import org.apache.jmeter.functions.InvalidVariableException;
+import org.apache.jmeter.reporters.ResultCollector;
 import org.apache.jmeter.testelement.TestElement;
 import org.apache.jmeter.testelement.TestPlan;
 import org.apache.jmeter.threads.JMeterContextService;
@@ -33,17 +34,28 @@
 import org.apache.log.Logger;
 
 /**
- * @author Michael Stover
- * @author <a href="mailto:[EMAIL PROTECTED]">Jordi Salvat i Alabart</a>
- * @version $Revision$ updated on $Date$
+ * Class to replace function and variable references in the test tree.
+ * 
  */
 public class PreCompiler implements HashTreeTraverser {
        private static final Logger log = LoggingManager.getLoggerForClass();
 
-       private ValueReplacer replacer;
+       private final ValueReplacer replacer;
+       
+//      Used by both StandardJMeterEngine and ClientJMeterEngine.
+//      In the latter case, only ResultCollectors are updated,
+//      as only these are relevant to the client, and updating
+//      other elements causes all sorts of problems.
+       private final boolean isRemote; // skip certain processing for remote 
tests
 
        public PreCompiler() {
                replacer = new ValueReplacer();
+               isRemote = false;
+       }
+
+       public PreCompiler(boolean remote) {
+               replacer = new ValueReplacer();
+               isRemote = remote;
        }
 
        /*
@@ -52,6 +64,17 @@
         * @see HashTreeTraverser#addNode(Object, HashTree)
         */
        public void addNode(Object node, HashTree subTree) {
+        if(isRemote && node instanceof ResultCollector)
+        {
+            try {
+                replacer.replaceValues((TestElement) node);
+            } catch (InvalidVariableException e) {
+                log.error("invalid variables", e);
+            }
+        }
+        if (isRemote) {
+               return;
+        }
         if(node instanceof TestElement)
         {
             try {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to