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()) {