jmeter-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mchassagn...@apache.org
Subject svn commit: r1797920 - in /jmeter/trunk: src/core/org/apache/jmeter/engine/PreCompiler.java src/core/org/apache/jmeter/threads/JMeterContext.java src/core/org/apache/jmeter/threads/JMeterContextService.java xdocs/changes.xml
Date Wed, 07 Jun 2017 13:26:37 GMT
Author: mchassagneux
Date: Wed Jun  7 13:26:36 2017
New Revision: 1797920

URL: http://svn.apache.org/viewvc?rev=1797920&view=rev
Log:
Allow to use variables ( from User Defined Variables only ) in all listeners in slave mode
Bugzilla Id: 57962

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java
    jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java
    jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java?rev=1797920&r1=1797919&r2=1797920&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/engine/PreCompiler.java Wed Jun  7 13:26:36 2017
@@ -28,6 +28,7 @@ import org.apache.jmeter.testelement.Tes
 import org.apache.jmeter.testelement.TestPlan;
 import org.apache.jmeter.threads.JMeterContextService;
 import org.apache.jmeter.threads.JMeterVariables;
+import org.apache.jmeter.visualizers.backend.Backend;
 import org.apache.jorphan.collections.HashTree;
 import org.apache.jorphan.collections.HashTreeTraverser;
 import org.slf4j.Logger;
@@ -61,7 +62,7 @@ public class PreCompiler implements Hash
     /** {@inheritDoc} */
     @Override
     public void addNode(Object node, HashTree subTree) {
-        if(isRemote && node instanceof ResultCollector)
+        if(isRemote && (node instanceof ResultCollector || node instanceof Backend))
         {
             try {
                 replacer.replaceValues((TestElement) node);
@@ -69,10 +70,8 @@ public class PreCompiler implements Hash
                 log.error("invalid variables", e);
             }
         }
-        if (isRemote) {
-            return;
-        }
-        if(node instanceof TestElement)
+
+        if(!isRemote && node instanceof TestElement)
         {
             try {
                 replacer.replaceValues((TestElement) node);
@@ -86,14 +85,24 @@ public class PreCompiler implements Hash
             replacer.setUserDefinedVariables(args);
             JMeterVariables vars = new JMeterVariables();
             vars.putAll(args);
-            JMeterContextService.getContext().setVariables(vars);
+            // Don't store variable of test plan in the context for client side
+            if (isRemote) {
+                JMeterContextService.setClientVariable(vars);
+            } else { 
+                JMeterContextService.getContext().setVariables(vars);
+            }
         }
 
         if (node instanceof Arguments) {
             ((Arguments)node).setRunningVersion(true);
             Map<String, String> args = ((Arguments) node).getArgumentsAsMap();
             replacer.addVariables(args);
-            JMeterContextService.getContext().getVariables().putAll(args);
+            // Don't store User Defined Variables in the context for client side
+            if (isRemote) {
+                JMeterContextService.getClientVariable().putAll(args);
+            } else { 
+                JMeterContextService.getContext().getVariables().putAll(args);
+            }
         }
     }
 

Modified: jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java?rev=1797920&r1=1797919&r2=1797920&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContext.java Wed Jun  7 13:26:36
2017
@@ -79,7 +79,8 @@ public class JMeterContext {
      * @return a pointer to the JMeter variables.
      */
     public JMeterVariables getVariables() {
-        return variables;
+        // If context variable is null ( Client side ) return client variables
+        return (variables == null) ? JMeterContextService.getClientVariable() : variables;
     }
 
     public void setVariables(JMeterVariables vars) {

Modified: jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java?rev=1797920&r1=1797919&r2=1797920&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterContextService.java Wed Jun  7 13:26:36
2017
@@ -46,6 +46,10 @@ public final class JMeterContextService
 
     //@GuardedGy("this")
     private static int totalThreads = 0;
+    
+    //@GuardedGy("this")
+    private static JMeterVariables variables = null;
+    
 
     /**
      * Private constructor to prevent instantiation.
@@ -162,6 +166,22 @@ public final class JMeterContextService
         numberOfThreadsStarted = 0;
         numberOfThreadsFinished = 0;
     }
+    
+    /**
+     * Get all variables accessible for JMeter client in a distributed test (exclusively
test plan and user defined variables )
+     * @return variables available for JMeter client 
+     */
+    public static JMeterVariables getClientVariable() {
+        return variables;
+    }
+    
+    /**
+     * Set variables for JMeter client in a distributed test
+     * @param var {@link JMeterVariables}
+     */
+    public static void setClientVariable(JMeterVariables var) {
+        variables = var;
+    }    
 
     public static class ThreadCounts {
         

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1797920&r1=1797919&r2=1797920&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Wed Jun  7 13:26:36 2017
@@ -195,6 +195,7 @@ Summary
     <li><bug>57958</bug>Fix transaction sample not generated if thread
stops/restarts. Implemented by Artem Fedorov (artem at blazemeter.com) and contributed by
BlazeMeter Ltd.</li>
     <li><bug>61050</bug>Handle uninitialized RessourceBundle more gracefully,
when calling <code>JMeterUtils#getResString</code>.</li>
     <li><bug>61100</bug>Invalid GC Log Filename on Windows</li>
+    <li><bug>57962</bug>Allow to use variables ( from User Defined Variables
only ) in all listeners in slave mode</li>
 </ul>
 
  <!--  =================== Thanks =================== -->



Mime
View raw message