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 2019/09/28 10:18:37 UTC
[jmeter] branch master updated (6915adb -> 598eb15)
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 6915adb Synchronize access to variable on read
new 5853f60 Rename type to comply with naming conventions
new 2ac8052 Extract common code to simplify method
new c6f6ff1 Remove unused arguments from private method
new 598eb15 Simplify method by extracting parts of code
The 4 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:
.../assertions/jmespath/JMESPathAssertion.java | 26 ++---
.../extractor/json/jmespath/JMESPathExtractor.java | 122 ++++++++++++---------
.../report/dashboard/AbstractDataExporter.java | 4 +-
.../report/dashboard/HtmlTemplateExporter.java | 8 +-
4 files changed, 88 insertions(+), 72 deletions(-)
[jmeter] 03/04: Remove unused arguments from private method
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 c6f6ff1a1ada0d0c0759c9159a0ad8b43e2ffae4
Author: Felix Schumacher <fe...@internetallee.de>
AuthorDate: Sat Sep 28 11:53:59 2019 +0200
Remove unused arguments from private method
---
.../java/org/apache/jmeter/assertions/jmespath/JMESPathAssertion.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/src/main/java/org/apache/jmeter/assertions/jmespath/JMESPathAssertion.java b/src/components/src/main/java/org/apache/jmeter/assertions/jmespath/JMESPathAssertion.java
index 4cda1ca..6fde83f 100644
--- a/src/components/src/main/java/org/apache/jmeter/assertions/jmespath/JMESPathAssertion.java
+++ b/src/components/src/main/java/org/apache/jmeter/assertions/jmespath/JMESPathAssertion.java
@@ -78,7 +78,7 @@ public class JMESPathAssertion extends AbstractTestElement implements Serializab
JsonNode currentValue = expression.search(input);
log.debug("JMESPath query {} invoked on response {}. Query result is {}. ", expression,
responseDataAsJsonString, currentValue);
- boolean success = checkResult(OBJECT_MAPPER, currentValue, assertionResult, invert);
+ boolean success = checkResult(OBJECT_MAPPER, currentValue);
if (!invert) {
if (!success) {
failAssertion(invert, assertionResult);
@@ -125,7 +125,7 @@ public class JMESPathAssertion extends AbstractTestElement implements Serializab
}
}
- private boolean checkResult(ObjectMapper mapper, JsonNode jsonNode, AssertionResult result, boolean invert)
+ private boolean checkResult(ObjectMapper mapper, JsonNode jsonNode)
throws JsonProcessingException {
if (!isJsonValidationBool()) {
return !(jsonNode instanceof NullNode);
[jmeter] 01/04: Rename type to comply with naming conventions
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 5853f60e0fcd6c0a559ab1cac83a2b6a9b18fb79
Author: Felix Schumacher <fe...@internetallee.de>
AuthorDate: Sat Sep 28 11:40:52 2019 +0200
Rename type to comply with naming conventions
---
.../org/apache/jmeter/report/dashboard/AbstractDataExporter.java | 4 ++--
.../org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/core/src/main/java/org/apache/jmeter/report/dashboard/AbstractDataExporter.java b/src/core/src/main/java/org/apache/jmeter/report/dashboard/AbstractDataExporter.java
index 39065c0..2e8ef1a 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/AbstractDataExporter.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/dashboard/AbstractDataExporter.java
@@ -119,8 +119,8 @@ public abstract class AbstractDataExporter implements DataExporter {
this.name = name;
}
- protected <TProperty> TProperty getPropertyFromConfig(
- SubConfiguration cfg, String property, TProperty defaultValue, Class<TProperty> clazz)
+ protected <T> T getPropertyFromConfig(
+ SubConfiguration cfg, String property, T defaultValue, Class<T> clazz)
throws ExportException {
try {
return cfg.getProperty(property, defaultValue, clazz);
diff --git a/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java b/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
index 1507916..1c0b427 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
@@ -465,15 +465,15 @@ public class HtmlTemplateExporter extends AbstractDataExporter {
log.debug("End of template processing");
}
- private <TVisit> void addResultToContext(
+ private <T> void addResultToContext(
String resultKey, Map<String, Object> storage,
- DataContext dataContext, ResultDataVisitor<TVisit> visitor) {
+ DataContext dataContext, ResultDataVisitor<T> visitor) {
addResultToContext(resultKey, storage, dataContext, visitor, null, null);
}
- private <TVisit> void addResultToContext(
+ private <T> void addResultToContext(
String resultKey, Map<String, Object> storage, DataContext dataContext,
- ResultDataVisitor<TVisit> visitor, ResultCustomizer customizer, ResultChecker checker) {
+ ResultDataVisitor<T> visitor, ResultCustomizer customizer, ResultChecker checker) {
Object data = storage.get(resultKey);
if (data instanceof ResultData) {
ResultData result = (ResultData) data;
[jmeter] 02/04: Extract common code to simplify method
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 2ac8052789a1ceafd5db712be2d1366f3b542426
Author: Felix Schumacher <fe...@internetallee.de>
AuthorDate: Sat Sep 28 11:51:40 2019 +0200
Extract common code to simplify method
---
.../assertions/jmespath/JMESPathAssertion.java | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/src/components/src/main/java/org/apache/jmeter/assertions/jmespath/JMESPathAssertion.java b/src/components/src/main/java/org/apache/jmeter/assertions/jmespath/JMESPathAssertion.java
index 52ee59c..4cda1ca 100644
--- a/src/components/src/main/java/org/apache/jmeter/assertions/jmespath/JMESPathAssertion.java
+++ b/src/components/src/main/java/org/apache/jmeter/assertions/jmespath/JMESPathAssertion.java
@@ -97,28 +97,20 @@ public class JMESPathAssertion extends AbstractTestElement implements Serializab
message.append("JMESPATH ")
.append(getJmesPath())
.append(" expected");
- if (invert) {
- message.append(" not");
- }
+ addNegation(invert, message);
message.append(" to exist");
} else {
message.append("Value expected");
if (isExpectNull()) {
- if (invert) {
- message.append(" not");
- }
+ addNegation(invert, message);
message.append(" to be null");
} else {
if (isUseRegex()) {
- if (invert) {
- message.append(" not");
- }
+ addNegation(invert, message);
message.append(" to match ");
message.append(getExpectedValue());
} else {
- if (invert) {
- message.append(" not");
- }
+ addNegation(invert, message);
message.append(" to be equal to ");
message.append(getExpectedValue());
}
@@ -127,6 +119,12 @@ public class JMESPathAssertion extends AbstractTestElement implements Serializab
return message.toString();
}
+ private void addNegation(boolean invert, StringBuilder message) {
+ if (invert) {
+ message.append(" not");
+ }
+ }
+
private boolean checkResult(ObjectMapper mapper, JsonNode jsonNode, AssertionResult result, boolean invert)
throws JsonProcessingException {
if (!isJsonValidationBool()) {
[jmeter] 04/04: Simplify method by extracting parts of code
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 598eb15b8ccb8ea0b1c9416367572884724cc969
Author: Felix Schumacher <fe...@internetallee.de>
AuthorDate: Sat Sep 28 12:17:56 2019 +0200
Simplify method by extracting parts of code
---
.../extractor/json/jmespath/JMESPathExtractor.java | 122 ++++++++++++---------
1 file changed, 70 insertions(+), 52 deletions(-)
diff --git a/src/components/src/main/java/org/apache/jmeter/extractor/json/jmespath/JMESPathExtractor.java b/src/components/src/main/java/org/apache/jmeter/extractor/json/jmespath/JMESPathExtractor.java
index bdaa43c..5c411c6 100644
--- a/src/components/src/main/java/org/apache/jmeter/extractor/json/jmespath/JMESPathExtractor.java
+++ b/src/components/src/main/java/org/apache/jmeter/extractor/json/jmespath/JMESPathExtractor.java
@@ -68,69 +68,87 @@ public class JMESPathExtractor extends AbstractScopedTestElement
final String jsonPathExpression = getJmesPathExpression().trim();
clearOldRefVars(vars, refName);
if (StringUtils.isEmpty(jsonResponse)) {
+ handleEmptyResponse(vars, refName, defaultValue);
+ return;
+ }
+
+ try {
+ JsonNode result = null;
+ JsonNode actualObj = OBJECT_MAPPER.readValue(jsonResponse, JsonNode.class);
+ result = JMESPathCache.getInstance().get(jsonPathExpression).search(actualObj);
+ if (result.isNull()) {
+ handleNullResult(vars, refName, defaultValue, matchNumber);
+ return;
+ }
+ List<String> resultList = splitJson(result);
+ // if more than one value extracted, suffix with "_index"
+ if (!resultList.isEmpty()) {
+ handleListResult(vars, refName, defaultValue, matchNumber, resultList);
+ } else {
+ // else just one value extracted
+ handleSingleResult(vars, refName, matchNumber, resultList);
+ }
+ vars.put(refName + REF_MATCH_NR, Integer.toString(resultList.size()));
+ } catch (Exception e) {
+ // if something wrong, default value added
if (log.isDebugEnabled()) {
- log.debug("Response or source variable is null or empty for {}", getName());
+ log.debug("Error processing JSON content in {}, message: {}", getName(), e.getLocalizedMessage(), e);
+ } else {
+ log.debug("Error processing JSON content in {}, message: {}", getName(), e.getLocalizedMessage());
}
vars.put(refName, defaultValue);
+ }
+ }
+
+ private void handleSingleResult(JMeterVariables vars, String refName, int matchNumber, List<String> resultList) {
+ String suffix = (matchNumber < 0) ? "_1" : "";
+ placeObjectIntoVars(vars, refName + suffix, resultList, 0);
+ }
+
+ private void handleListResult(JMeterVariables vars, String refName, String defaultValue, int matchNumber,
+ List<String> resultList) {
+ if (matchNumber < 0) {
+ // Extract all
+ int index = 1;
+ for (String extractedString : resultList) {
+ vars.put(refName + "_" + index, extractedString); // $NON-NLS-1$
+ index++;
+ }
+ } else if (matchNumber == 0) {
+ // Random extraction
+ int matchSize = resultList.size();
+ int matchNr = JMeterUtils.getRandomInt(matchSize);
+ placeObjectIntoVars(vars, refName, resultList, matchNr);
} else {
- try {
- JsonNode result = null;
- JsonNode actualObj = OBJECT_MAPPER.readValue(jsonResponse, JsonNode.class);
- result = JMESPathCache.getInstance().get(jsonPathExpression).search(actualObj);
- if (result.isNull()) {
- vars.put(refName, defaultValue);
- vars.put(refName + REF_MATCH_NR, "0"); //$NON-NLS-1$
- if (matchNumber < 0) {
- log.debug("No value extracted, storing empty in: {}", refName);
- }
- } else {
- List<String> resultList = splitJson(result);
- // if more than one value extracted, suffix with "_index"
- if (resultList.size() > 1) {
- if (matchNumber < 0) {
- // Extract all
- int index = 1;
- for (String extractedString : resultList) {
- vars.put(refName + "_" + index, extractedString); // $NON-NLS-1$
- index++;
- }
- } else if (matchNumber == 0) {
- // Random extraction
- int matchSize = resultList.size();
- int matchNr = JMeterUtils.getRandomInt(matchSize);
- placeObjectIntoVars(vars, refName, resultList, matchNr);
- } else {
- // extract at position
- if (matchNumber > resultList.size()) {
- if (log.isDebugEnabled()) {
- log.debug(
- "matchNumber({}) exceeds number of items found({}), default value will be used",
- matchNumber, resultList.size());
- }
- vars.put(refName, defaultValue);
- } else {
- placeObjectIntoVars(vars, refName, resultList, matchNumber - 1);
- }
- }
- } else {
- // else just one value extracted
- String suffix = (matchNumber < 0) ? "_1" : "";
- placeObjectIntoVars(vars, refName + suffix, resultList, 0);
- }
- vars.put(refName + REF_MATCH_NR, Integer.toString(resultList.size()));
- }
- } catch (Exception e) {
- // if something wrong, default value added
+ // extract at position
+ if (matchNumber > resultList.size()) {
if (log.isDebugEnabled()) {
- log.debug("Error processing JSON content in {}, message: {}", getName(), e.getLocalizedMessage(), e);
- } else {
- log.debug("Error processing JSON content in {}, message: {}", getName(), e.getLocalizedMessage());
+ log.debug(
+ "matchNumber({}) exceeds number of items found({}), default value will be used",
+ Integer.valueOf(matchNumber), Integer.valueOf(resultList.size()));
}
vars.put(refName, defaultValue);
+ } else {
+ placeObjectIntoVars(vars, refName, resultList, matchNumber - 1);
}
}
}
+ private void handleNullResult(JMeterVariables vars, String refName, String defaultValue, int matchNumber) {
+ vars.put(refName, defaultValue);
+ vars.put(refName + REF_MATCH_NR, "0"); //$NON-NLS-1$
+ if (matchNumber < 0) {
+ log.debug("No value extracted, storing empty in: {}", refName);
+ }
+ }
+
+ private void handleEmptyResponse(JMeterVariables vars, String refName, String defaultValue) {
+ if (log.isDebugEnabled()) {
+ log.debug("Response or source variable is null or empty for {}", getName());
+ }
+ vars.put(refName, defaultValue);
+ }
+
private String getData(JMeterVariables vars, JMeterContext context) {
String jsonResponse = null;
if (isScopeVariable()) {