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>