You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by fs...@apache.org on 2020/03/10 19:43:59 UTC

[jmeter] 02/02: Recurse into sampleResults for getSampleList

This is an automated email from the ASF dual-hosted git repository.

fschumacher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit 30a71a3112e436889d69ab9d2cb5403f4a3ab59c
Author: Felix Schumacher <fe...@internetallee.de>
AuthorDate: Sun Mar 8 16:58:35 2020 +0100

    Recurse into sampleResults for getSampleList
    
    With this change we collect the sampleList of a SampleReult by recursing up to
    three levels into sub results of SampleResults instead of only one level deep.
    
    This helps in case of parallel downloads of embedded elements of a web page, which
    get stored as sub-sub-sampleresults. Before this change a regex Post Processor would
    not see those sub-sub-sampleresults.
    
    Bugzilla Id: 64196
---
 .../jmeter/testelement/AbstractScopedTestElement.java | 19 ++++++++++++++++++-
 xdocs/changes.xml                                     |  1 +
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractScopedTestElement.java b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractScopedTestElement.java
index ecacd7a..518d9fe 100644
--- a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractScopedTestElement.java
+++ b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractScopedTestElement.java
@@ -18,6 +18,7 @@
 package org.apache.jmeter.testelement;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -157,8 +158,24 @@ public abstract class AbstractScopedTestElement extends AbstractTestElement {
             sampleList.add(result);
         }
         if (isScopeChildren(scope) || isScopeAll(scope)) {
-            Collections.addAll(sampleList, result.getSubResults());
+            recurseResults(sampleList, result);
         }
         return sampleList;
     }
+
+    private void recurseResults(List<SampleResult> resultList, SampleResult sampleResult) {
+        Collections.addAll(resultList, sampleResult.getSubResults());
+        recurseResults(resultList, sampleResult.getSubResults(), 3);
+    }
+
+    private void recurseResults(List<SampleResult> resultList, SampleResult[] sampleResult, int level) {
+        if (level < 0) {
+            return;
+        }
+        for (SampleResult child: sampleResult) {
+            Collections.addAll(resultList, child.getSubResults());
+            recurseResults(resultList, child.getSubResults(), level - 1);
+        }
+    }
+
 }
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index 7d56b01..a35cdc4 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -181,6 +181,7 @@ to view the last release notes of version 5.2.1.
     <li><bug>64091</bug>Precise Throughput Timer might produce less samples when low test duration is used</li>
     <li><bug>64142</bug>Presence of DebugPostProcessor in Test plan breaks ActiveThread Over time in report due to missing information</li>
     <li><bug>64196</bug>Recurse into sub samplers more deeply when checking assertions</li>
+    <li><bug>64196</bug>Recurse into sampleResults for <code>AbstractScopedTestElement#getSampleList</code></li>
 </ul>
 
 <h3>Functions</h3>