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 2022/07/09 12:15:34 UTC

[jmeter] branch master updated (07b67a0ec9 -> 8d53bb9491)

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 07b67a0ec9 Check if target is reachable, before generating args for test
     new b22b00c694 Guess the delimiter of the CSV source, when configured one seems wrong.
     new 8d53bb9491 Don't generate same string twice.

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:
 .../apache/jmeter/report/core/CsvSampleReader.java | 16 ++++-----
 .../jmeter/report/core/SampleMetaDataParser.java   | 38 ++++++++++++++++++++--
 xdocs/changes.xml                                  |  2 ++
 3 files changed, 43 insertions(+), 13 deletions(-)


[jmeter] 02/02: Don't generate same string twice.

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 8d53bb9491c629696b48b233605b3d70036f611a
Author: Felix Schumacher <fe...@internetallee.de>
AuthorDate: Sat Jul 9 14:15:11 2022 +0200

    Don't generate same string twice.
---
 .../org/apache/jmeter/report/core/CsvSampleReader.java   | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/core/src/main/java/org/apache/jmeter/report/core/CsvSampleReader.java b/src/core/src/main/java/org/apache/jmeter/report/core/CsvSampleReader.java
index 97508d58b5..86b134c805 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/core/CsvSampleReader.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/core/CsvSampleReader.java
@@ -150,18 +150,14 @@ public class CsvSampleReader implements Closeable{
                     && CSVSaveService.getSampleSaveConfiguration(
                             line, file.getAbsolutePath()) == null) {
                 // Build metadata from default save config
-                if (log.isWarnEnabled()) {
-                    log.warn(
-                            "File '{}' does not contain the field names header, "
-                                    + "ensure the jmeter.save.saveservice.* properties are the same "
-                                    + "as when the CSV file was created or the file may be read incorrectly "
-                                    + "when generating report",
-                            file.getAbsolutePath());
-                }
-                System.out.println("File '"+file.getAbsolutePath()+"' does not contain the field names header, "
+                String warnMessage = "File '" + file.getAbsolutePath() + "' does not contain the field names header, "
                         + "ensure the jmeter.save.saveservice.* properties are the same "
                         + "as when the CSV file was created or the file may be read incorrectly "
-                        + "when generating report");
+                        + "when generating report";
+                if (log.isWarnEnabled()) {
+                    log.warn(warnMessage);
+                }
+                System.out.println(warnMessage);
                 result = new SampleMetadata(
                         SampleSaveConfiguration.staticConfig());
 


[jmeter] 01/02: Guess the delimiter of the CSV source, when configured one seems wrong.

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 b22b00c69459dad4f7b02518c6a5e1f4bcfebad4
Author: Felix Schumacher <fe...@internetallee.de>
AuthorDate: Sat Jul 9 14:14:09 2022 +0200

    Guess the delimiter of the CSV source, when configured one seems wrong.
    
    This is in line with the behaviour of CSVSaveService.
    
    Bugzilla Id: 66140
---
 .../jmeter/report/core/SampleMetaDataParser.java   | 38 ++++++++++++++++++++--
 xdocs/changes.xml                                  |  2 ++
 2 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/src/core/src/main/java/org/apache/jmeter/report/core/SampleMetaDataParser.java b/src/core/src/main/java/org/apache/jmeter/report/core/SampleMetaDataParser.java
index aeab11b89c..bc96a660d5 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/core/SampleMetaDataParser.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/core/SampleMetaDataParser.java
@@ -17,6 +17,10 @@
 
 package org.apache.jmeter.report.core;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
@@ -26,14 +30,42 @@ import java.util.regex.Pattern;
  */
 public class SampleMetaDataParser {
 
-    private char separator;
+    private final char separator;
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    private static final Pattern DELIMITER_PATTERN = Pattern
+            // This assumes the header names are all single words with no spaces
+            // word followed by 0 or more repeats of (non-word char + word)
+            // where the non-word char (\2) is the same
+            // e.g. abc|def|ghi but not abd|def~ghi
+            .compile("\\w+((\\W)\\w+)?(\\2\\w+)*(\\2\"\\w+\")*" // $NON-NLS-1$
+                    // last entries may be quoted strings
+            );
 
     public SampleMetaDataParser(char separator) {
         this.separator = separator;
     }
 
     public SampleMetadata parse(String headRow) {
-        String[] cols = headRow.split(Pattern.quote(Character.toString(separator)));
-        return new SampleMetadata(separator, cols);
+        char useSep = separator;
+        if (headRow.indexOf(useSep) < 0) {
+            Matcher matcher = DELIMITER_PATTERN.matcher(headRow);
+            if (matcher.matches()) {
+                String guessedSep = matcher.group(2);
+                if (guessedSep.length() != 1) {
+                    throw new IllegalArgumentException(
+                            "We guessed a delimiter of '"+guessedSep+"', but we support only one-character-separators");
+                }
+                useSep = guessedSep.charAt(0);
+                logger.warn("Use guessed delimiter '{}' instead of configured '{}'. "
+                        +"Please configure the property 'jmeter.save.saveservice.default_delimiter={}'",
+                        useSep,
+                        separator,
+                        useSep);
+            }
+        }
+        String[] cols = headRow.split(Pattern.quote(Character.toString(useSep)));
+        return new SampleMetadata(useSep, cols);
     }
 }
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index 65147fb68d..89aa8ddc62 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -137,6 +137,8 @@ Summary
 
 <h3>Report / Dashboard</h3>
 <ul>
+  <li><bug>66140</bug>Guess the delimiter of the CSV source, when configured one seems wrong.
+    This is in line with the behaviour of CSVSaveService.</li>
 </ul>
 
 <h3>Documentation</h3>