You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by vl...@apache.org on 2019/12/28 12:24:35 UTC
[jmeter] branch master updated: Ignore comments and blanklines in
SaveService#FILEVERSION test
This is an automated email from the ASF dual-hosted git repository.
vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git
The following commit(s) were added to refs/heads/master by this push:
new 8b9a2eb Ignore comments and blanklines in SaveService#FILEVERSION test
8b9a2eb is described below
commit 8b9a2ebda5a81e9284014ecad599df3689167f27
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Sat Dec 28 15:12:18 2019 +0300
Ignore comments and blanklines in SaveService#FILEVERSION test
---
.../java/org/apache/jmeter/save/SaveService.java | 38 +++++++++++-----------
.../org/apache/jmeter/save/TestSaveService.java | 7 ++--
2 files changed, 23 insertions(+), 22 deletions(-)
diff --git a/src/core/src/main/java/org/apache/jmeter/save/SaveService.java b/src/core/src/main/java/org/apache/jmeter/save/SaveService.java
index 25d6354..92a7af6 100644
--- a/src/core/src/main/java/org/apache/jmeter/save/SaveService.java
+++ b/src/core/src/main/java/org/apache/jmeter/save/SaveService.java
@@ -19,7 +19,6 @@
package org.apache.jmeter.save;
import java.io.BufferedInputStream;
-import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -30,10 +29,11 @@ import java.io.OutputStreamWriter;
import java.io.Writer;
import java.lang.reflect.InvocationTargetException;
import java.nio.charset.Charset;
-import java.nio.file.Files;
+import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -156,7 +156,7 @@ public class SaveService {
private static String fileVersion = ""; // computed from saveservice.properties file// $NON-NLS-1$
// Must match the sha1 checksum of the file saveservice.properties (without newline character),
// used to ensure saveservice.properties and SaveService are updated simultaneously
- static final String FILEVERSION = "6fd03656cf4997fe6b0af17fa8dc8469e563c93a"; // Expected value $NON-NLS-1$
+ static final String FILEVERSION = "56ae8319b2b02d33eb1028c4460db770cf246b5c"; // Expected value $NON-NLS-1$
private static String fileEncoding = ""; // read from properties file// $NON-NLS-1$
@@ -201,29 +201,29 @@ public class SaveService {
return nameMap;
}
- private static String getChecksumForPropertiesFile()
- throws NoSuchAlgorithmException, IOException {
+ private static String checksum(Properties nameMap) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-1");
- File saveServiceFile = getSaveServiceFile();
- try (BufferedReader reader =
- Files.newBufferedReader(saveServiceFile.toPath(), Charset.defaultCharset())) {
- String line = null;
- while ((line = reader.readLine()) != null) {
- md.update(line.getBytes());
- }
- }
+ // This checksums the actual entries, and it ignores comments and blank lines
+ nameMap.entrySet().stream().sorted(
+ Comparator.comparing((Map.Entry<Object, Object> e) -> e.getKey().toString())
+ .thenComparing(e -> e.getValue().toString())
+ ).forEachOrdered(e -> {
+ md.update(e.getKey().toString().getBytes(StandardCharsets.UTF_8));
+ md.update(e.getValue().toString().getBytes(StandardCharsets.UTF_8));
+ });
return JOrphanUtils.baToHexString(md.digest());
}
+
private static void initProps() {
// Load the alias properties
try {
- fileVersion = getChecksumForPropertiesFile();
- } catch (IOException | NoSuchAlgorithmException e) {
- log.error("Can't compute checksum for saveservice properties file", e);
- throw new JMeterError("JMeter requires the checksum of saveservice properties file to continue", e);
- }
- try {
Properties nameMap = loadProperties();
+ try {
+ fileVersion = checksum(nameMap);
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Can't compute checksum for saveservice properties file", e);
+ throw new JMeterError("JMeter requires the checksum of saveservice properties file to continue", e);
+ }
// now create the aliases
for (Map.Entry<Object, Object> me : nameMap.entrySet()) {
String key = (String) me.getKey();
diff --git a/src/dist-check/src/test/java/org/apache/jmeter/save/TestSaveService.java b/src/dist-check/src/test/java/org/apache/jmeter/save/TestSaveService.java
index 7d2ed34..bc6d911 100644
--- a/src/dist-check/src/test/java/org/apache/jmeter/save/TestSaveService.java
+++ b/src/dist-check/src/test/java/org/apache/jmeter/save/TestSaveService.java
@@ -84,16 +84,17 @@ public class TestSaveService extends JMeterTestCase {
@Test
- public void testPropfile1() throws Exception {
+ public void testPROPVERSION() {
assertEquals(
"Property Version mismatch, ensure you update SaveService#PROPVERSION field with _version property value from saveservice.properties",
SaveService.PROPVERSION, SaveService.getPropertyVersion());
}
@Test
- public void testPropfile2() throws Exception {
+ public void testFILEVERSION() {
assertEquals(
- "Property File Version mismatch, ensure you update SaveService#FILEVERSION field with sha1 of saveservice.properties without newline",
+ "SaveService class and saveservice.properties must be aligned. Please ensure you have edited both files," +
+ " and update SaveService.FILEVERSION",
SaveService.FILEVERSION, SaveService.getFileVersion());
}