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]