You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2013/08/07 12:17:41 UTC

svn commit: r1511236 - in /jmeter/trunk: bin/testfiles/Bug55375.csv bin/testfiles/Bug55375.jmx bin/testfiles/Bug55375.xml build.xml src/components/org/apache/jmeter/control/ModuleController.java xdocs/changes.xml

Author: sebb
Date: Wed Aug  7 10:17:40 2013
New Revision: 1511236

URL: http://svn.apache.org/r1511236
Log:
StackOverflowError with ModuleController in Non-GUI mode if its name is the same as the target node
Bugzilla Id: 55375

Added:
    jmeter/trunk/bin/testfiles/Bug55375.csv   (with props)
    jmeter/trunk/bin/testfiles/Bug55375.jmx   (with props)
    jmeter/trunk/bin/testfiles/Bug55375.xml   (with props)
Modified:
    jmeter/trunk/build.xml
    jmeter/trunk/src/components/org/apache/jmeter/control/ModuleController.java
    jmeter/trunk/xdocs/changes.xml

Added: jmeter/trunk/bin/testfiles/Bug55375.csv
URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/Bug55375.csv?rev=1511236&view=auto
==============================================================================
--- jmeter/trunk/bin/testfiles/Bug55375.csv (added)
+++ jmeter/trunk/bin/testfiles/Bug55375.csv Wed Aug  7 10:17:40 2013
@@ -0,0 +1,2 @@
+label,responseCode,responseMessage,threadName,dataType,success,bytes,SampleCount,ErrorCount
+reload,,,threadgroup 1-1,,true,0,1,0

Propchange: jmeter/trunk/bin/testfiles/Bug55375.csv
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jmeter/trunk/bin/testfiles/Bug55375.jmx
URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/Bug55375.jmx?rev=1511236&view=auto
==============================================================================
--- jmeter/trunk/bin/testfiles/Bug55375.jmx (added)
+++ jmeter/trunk/bin/testfiles/Bug55375.jmx Wed Aug  7 10:17:40 2013
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="2.5" jmeter="2.10-SNAPSHOT.20130807">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Bug55375" enabled="true">
+      <stringProp name="TestPlan.comments"></stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="threadgroup" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
+        <longProp name="ThreadGroup.start_time">1344428409000</longProp>
+        <longProp name="ThreadGroup.end_time">1344428409000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="reload" enabled="false"/>
+        <hashTree>
+          <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="reload" enabled="true">
+            <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="Sleep_Time" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Time</stringProp>
+                  <stringProp name="Argument.value">100</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Sleep_Mask" elementType="Argument">
+                  <stringProp name="Argument.name">Sleep_Mask</stringProp>
+                  <stringProp name="Argument.value">0xFF</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Label" elementType="Argument">
+                  <stringProp name="Argument.name">Label</stringProp>
+                  <stringProp name="Argument.value"></stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseCode" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseCode</stringProp>
+                  <stringProp name="Argument.value"></stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResponseMessage" elementType="Argument">
+                  <stringProp name="Argument.name">ResponseMessage</stringProp>
+                  <stringProp name="Argument.value"></stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="Status" elementType="Argument">
+                  <stringProp name="Argument.name">Status</stringProp>
+                  <stringProp name="Argument.value">OK</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="SamplerData" elementType="Argument">
+                  <stringProp name="Argument.name">SamplerData</stringProp>
+                  <stringProp name="Argument.value"></stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+                <elementProp name="ResultData" elementType="Argument">
+                  <stringProp name="Argument.name">ResultData</stringProp>
+                  <stringProp name="Argument.value"></stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
+          </JavaSampler>
+          <hashTree/>
+        </hashTree>
+        <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="reload" enabled="true">
+          <collectionProp name="ModuleController.node_path">
+            <stringProp name="-1227702913">WorkBench</stringProp>
+            <stringProp name="-1475507747">Bug55375</stringProp>
+            <stringProp name="1938366133">threadgroup</stringProp>
+            <stringProp name="-934641255">reload</stringProp>
+          </collectionProp>
+        </ModuleController>
+        <hashTree/>
+      </hashTree>
+      <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>false</time>
+            <latency>false</latency>
+            <timestamp>false</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sampleCount>true</sampleCount>
+          </value>
+        </objProp>
+        <stringProp name="filename">Bug55375.csv</stringProp>
+      </ResultCollector>
+      <hashTree/>
+      <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>false</time>
+            <latency>false</latency>
+            <timestamp>false</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>true</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sampleCount>true</sampleCount>
+          </value>
+        </objProp>
+        <stringProp name="filename">Bug55375.xml</stringProp>
+      </ResultCollector>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>

Propchange: jmeter/trunk/bin/testfiles/Bug55375.jmx
------------------------------------------------------------------------------
    svn:eol-style = LF

Added: jmeter/trunk/bin/testfiles/Bug55375.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/Bug55375.xml?rev=1511236&view=auto
==============================================================================
--- jmeter/trunk/bin/testfiles/Bug55375.xml (added)
+++ jmeter/trunk/bin/testfiles/Bug55375.xml Wed Aug  7 10:17:40 2013
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testResults version="1.2">
+<sample s="true" lb="reload" rc="" rm="" tn="threadgroup 1-1" dt="" by="0" sc="1" ec="0"/>
+
+</testResults>

Propchange: jmeter/trunk/bin/testfiles/Bug55375.xml
------------------------------------------------------------------------------
    svn:eol-style = LF

Modified: jmeter/trunk/build.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/build.xml?rev=1511236&r1=1511235&r2=1511236&view=diff
==============================================================================
--- jmeter/trunk/build.xml (original)
+++ jmeter/trunk/build.xml Wed Aug  7 10:17:40 2013
@@ -2593,6 +2593,11 @@ run JMeter unless all the JMeter jars ar
           <param name="batchtest.value" value="REFERENCE,JSESSIONID"/>
       </antcall>
 
+      <antcall target="batchtest">
+        <!--   StackOverflowError with ModuleController in Non-GUI mode if its name is the same as the target node -->
+        <param name="batchtest.name" value="Bug55375"/>
+      </antcall>
+
       <antcall target="batchtestserver">
           <!-- ArrayIndexOutOfBoundsException if "sample_variable" is set in client but not server -->
           <!-- This is the actual test -->

Modified: jmeter/trunk/src/components/org/apache/jmeter/control/ModuleController.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/control/ModuleController.java?rev=1511236&r1=1511235&r2=1511236&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/control/ModuleController.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/control/ModuleController.java Wed Aug  7 10:17:40 2013
@@ -145,11 +145,14 @@ public class ModuleController extends Ge
         if (node != null && nodePath.size() > level) {
             for (int i = 0; i < node.getChildCount(); i++) {
                 JMeterTreeNode cur = (JMeterTreeNode) node.getChildAt(i);
-                if (cur.getName().equals(nodePath.get(level).toString())) {
-                    if (nodePath.size() == (level + 1)) {
-                        selectedNode = cur;
+                // Bug55375 - don't allow selectedNode to be a ModuleController as can cause recursion
+                if (!(cur.getTestElement() instanceof ModuleController)) {
+                    if (cur.getName().equals(nodePath.get(level).toString())) {
+                        if (nodePath.size() == (level + 1)) {
+                            selectedNode = cur;
+                        }
+                        traverse(cur, nodePath, level + 1);
                     }
-                    traverse(cur, nodePath, level + 1);
                 }
             }
         }

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1511236&r1=1511235&r2=1511236&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Wed Aug  7 10:17:40 2013
@@ -241,6 +241,7 @@ Previously the default was 1, which coul
 <li><bugzilla>54950</bugzilla> - ModuleController : Changes to referenced Module are not taken into account if changes occur after first run and referenced node is disabled</li>
 <li><bugzilla>55201</bugzilla> - ForEach controller excludes start index and includes end index (clarified documentation)</li>
 <li><bugzilla>55334</bugzilla> - Adding Include Controller to test plan (made of Include Controllers) without saving TestPlan leads to included code not being taken into account until save</li>
+<li><bugzilla>55375</bugzilla> -  StackOverflowError with ModuleController in Non-GUI mode if its name is the same as the target node</li>
 </ul>
 
 <h3>Listeners</h3>