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:57 UTC

[jmeter] branch master updated (18e6610 -> 30a71a3)

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

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


    from 18e6610  Updated rsyntaxtextarea to 3.1.0 from 3.0.8
     new 1a2f24a  Recurse into sub samplers more deeply when checking assertions
     new 30a71a3  Recurse into sampleResults for getSampleList

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../testelement/AbstractScopedTestElement.java     | 19 ++++++++++-
 .../org/apache/jmeter/threads/JMeterThread.java    | 38 +++++++++++++---------
 xdocs/changes.xml                                  |  2 ++
 3 files changed, 43 insertions(+), 16 deletions(-)


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

Posted by fs...@apache.org.
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>


[jmeter] 01/02: Recurse into sub samplers more deeply when checking assertions

Posted by fs...@apache.org.
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 1a2f24ab25f2a571f7bcb599b4be692eb47dde92
Author: Felix Schumacher <fe...@internetallee.de>
AuthorDate: Sun Mar 8 15:26:25 2020 +0100

    Recurse into sub samplers more deeply when checking assertions
    
    With this change we recurse 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.
    
    Bugzilla Id: 64196
---
 .../org/apache/jmeter/threads/JMeterThread.java    | 38 +++++++++++++---------
 xdocs/changes.xml                                  |  1 +
 2 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/src/core/src/main/java/org/apache/jmeter/threads/JMeterThread.java b/src/core/src/main/java/org/apache/jmeter/threads/JMeterThread.java
index b730df8..af8e8bf 100644
--- a/src/core/src/main/java/org/apache/jmeter/threads/JMeterThread.java
+++ b/src/core/src/main/java/org/apache/jmeter/threads/JMeterThread.java
@@ -879,21 +879,7 @@ public class JMeterThread implements Runnable, Interruptible {
                 }
                 if (scopedAssertion.isScopeChildren(scope)
                         || scopedAssertion.isScopeAll(scope)) {
-                    SampleResult[] children = parent.getSubResults();
-                    boolean childError = false;
-                    for (SampleResult childSampleResult : children) {
-                        processAssertion(childSampleResult, assertion);
-                        if (!childSampleResult.isSuccessful()) {
-                            childError = true;
-                        }
-                    }
-                    // If parent is OK, but child failed, add a message and flag the parent as failed
-                    if (childError && parent.isSuccessful()) {
-                        AssertionResult assertionResult = new AssertionResult(((AbstractTestElement) assertion).getName());
-                        assertionResult.setResultForFailure("One or more sub-samples failed");
-                        parent.addAssertionResult(assertionResult);
-                        parent.setSuccessful(false);
-                    }
+                    recurseAssertionChecks(parent, assertion, 3);
                 }
             } else {
                 processAssertion(parent, assertion);
@@ -902,6 +888,28 @@ public class JMeterThread implements Runnable, Interruptible {
         threadContext.getVariables().put(LAST_SAMPLE_OK, Boolean.toString(parent.isSuccessful()));
     }
 
+    private void recurseAssertionChecks(SampleResult parent, Assertion assertion, int level) {
+        if (level < 0) {
+            return;
+        }
+        SampleResult[] children = parent.getSubResults();
+        boolean childError = false;
+        for (SampleResult childSampleResult : children) {
+            processAssertion(childSampleResult, assertion);
+            recurseAssertionChecks(childSampleResult, assertion, level - 1);
+            if (!childSampleResult.isSuccessful()) {
+                childError = true;
+            }
+        }
+        // If parent is OK, but child failed, add a message and flag the parent as failed
+        if (childError && parent.isSuccessful()) {
+            AssertionResult assertionResult = new AssertionResult(((AbstractTestElement) assertion).getName());
+            assertionResult.setResultForFailure("One or more sub-samples failed");
+            parent.addAssertionResult(assertionResult);
+            parent.setSuccessful(false);
+        }
+    }
+
     private void processAssertion(SampleResult result, Assertion assertion) {
         AssertionResult assertionResult;
         try {
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index f666d2e..7d56b01 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -180,6 +180,7 @@ to view the last release notes of version 5.2.1.
 <ul>
     <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>
 </ul>
 
 <h3>Functions</h3>