You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by yi...@apache.org on 2022/07/04 22:07:25 UTC
[hudi] branch master updated: [HUDI-3730] Add ConfigTool#toMap UT (#6035)
This is an automated email from the ASF dual-hosted git repository.
yihua pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new c091e4cc30 [HUDI-3730] Add ConfigTool#toMap UT (#6035)
c091e4cc30 is described below
commit c091e4cc3029fcad734667068b7177ea6f871a33
Author: voonhous <vo...@gmail.com>
AuthorDate: Tue Jul 5 06:07:19 2022 +0800
[HUDI-3730] Add ConfigTool#toMap UT (#6035)
Co-authored-by: voonhou.su <vo...@shopee.com>
---
.../apache/hudi/sync/common/util/ConfigUtils.java | 4 ++
.../hudi/sync/common/util/TestConfigUtils.java | 50 ++++++++++++++++++++++
2 files changed, 54 insertions(+)
diff --git a/hudi-sync/hudi-sync-common/src/main/java/org/apache/hudi/sync/common/util/ConfigUtils.java b/hudi-sync/hudi-sync-common/src/main/java/org/apache/hudi/sync/common/util/ConfigUtils.java
index 9c9979d553..62cd4c1748 100644
--- a/hudi-sync/hudi-sync-common/src/main/java/org/apache/hudi/sync/common/util/ConfigUtils.java
+++ b/hudi-sync/hudi-sync-common/src/main/java/org/apache/hudi/sync/common/util/ConfigUtils.java
@@ -47,6 +47,10 @@ public class ConfigUtils {
String[] keyvalues = keyValueConfig.split("\n");
Map<String, String> tableProperties = new HashMap<>();
for (String keyValue : keyvalues) {
+ // Handle multiple new lines and lines that contain only spaces after splitting
+ if (keyValue.trim().isEmpty()) {
+ continue;
+ }
String[] keyValueArray = keyValue.split("=");
if (keyValueArray.length == 1 || keyValueArray.length == 2) {
String key = keyValueArray[0].trim();
diff --git a/hudi-sync/hudi-sync-common/src/test/java/org/apache/hudi/sync/common/util/TestConfigUtils.java b/hudi-sync/hudi-sync-common/src/test/java/org/apache/hudi/sync/common/util/TestConfigUtils.java
new file mode 100644
index 0000000000..f6e48543ff
--- /dev/null
+++ b/hudi-sync/hudi-sync-common/src/test/java/org/apache/hudi/sync/common/util/TestConfigUtils.java
@@ -0,0 +1,50 @@
+package org.apache.hudi.sync.common.util;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.jupiter.api.Test;
+
+public class TestConfigUtils {
+
+ @Test
+ public void testToMapSucceeds() {
+ Map<String, String> expectedMap = new HashMap<>();
+ expectedMap.put("k.1.1.2", "v1");
+ expectedMap.put("k.2.1.2", "v2");
+ expectedMap.put("k.3.1.2", "v3");
+
+ // Test base case
+ String srcKv = "k.1.1.2=v1\nk.2.1.2=v2\nk.3.1.2=v3";
+ Map<String, String> outMap = ConfigUtils.toMap(srcKv);
+ assertEquals(expectedMap, outMap);
+
+ // Test ends with new line
+ srcKv = "k.1.1.2=v1\nk.2.1.2=v2\nk.3.1.2=v3\n";
+ outMap = ConfigUtils.toMap(srcKv);
+ assertEquals(expectedMap, outMap);
+
+ // Test delimited by multiple new lines
+ srcKv = "k.1.1.2=v1\nk.2.1.2=v2\n\nk.3.1.2=v3";
+ outMap = ConfigUtils.toMap(srcKv);
+ assertEquals(expectedMap, outMap);
+
+ // Test delimited by multiple new lines with spaces in between
+ srcKv = "k.1.1.2=v1\n \nk.2.1.2=v2\n\nk.3.1.2=v3";
+ outMap = ConfigUtils.toMap(srcKv);
+ assertEquals(expectedMap, outMap);
+
+ // Test with random spaces if trim works properly
+ srcKv = " k.1.1.2 = v1\n k.2.1.2 = v2 \nk.3.1.2 = v3";
+ outMap = ConfigUtils.toMap(srcKv);
+ assertEquals(expectedMap, outMap);
+ }
+
+ @Test
+ public void testToMapThrowError() {
+ String srcKv = "k.1.1.2=v1=v1.1\nk.2.1.2=v2\nk.3.1.2=v3";
+ assertThrows(IllegalArgumentException.class, () -> ConfigUtils.toMap(srcKv));
+ }
+}
\ No newline at end of file