This is an automated email from the ASF dual-hosted git repository.
kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 1af7d38 [Bug] [config] Fix "Can only specify option -i once" in
command line args parser (#1236)
1af7d38 is described below
commit 1af7d38a75f4cd9e331701cf6144008008c0fc3f
Author: CenterCode <[email protected]>
AuthorDate: Wed Mar 2 22:30:46 2022 +0800
[Bug] [config] Fix "Can only specify option -i once" in command line args
parser (#1236)
* [SeaTunnel #1092] [core] fix multiple variables substitution
* Update
seatunnel-core/seatunnel-core-base/src/test/java/org/apache/seatunnel/config/command/CommandSparkArgsTest.java
Co-authored-by: Wenjun Ruan <[email protected]>
* update CommandSparkArgsTest
Co-authored-by: Wenjun Ruan <[email protected]>
---
.../seatunnel/config/command/CommandFlinkArgs.java | 8 ++--
.../seatunnel/config/command/CommandLineArgs.java | 12 +++---
.../seatunnel/config/command/CommandLineUtils.java | 2 +-
.../seatunnel/config/command/CommandSparkArgs.java | 11 +++++-
.../config/command/CommandFlinkArgsTest.java} | 46 +++++++++-------------
.../config/command/CommandSparkArgsTest.java} | 40 ++++++-------------
.../apache/seatunnel/core/sql/SeatunnelSql.java | 2 +-
.../org/apache/seatunnel/core/sql/job/JobInfo.java | 9 ++++-
.../core/sql/SqlVariableSubstitutionTest.java | 2 +-
9 files changed, 64 insertions(+), 68 deletions(-)
diff --git
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandFlinkArgs.java
b/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandFlinkArgs.java
index 58f17b8..95cf813 100644
---
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandFlinkArgs.java
+++
b/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandFlinkArgs.java
@@ -19,6 +19,8 @@ package org.apache.seatunnel.config.command;
import com.beust.jcommander.Parameter;
+import java.util.List;
+
public class CommandFlinkArgs {
@Parameter(names = {"-c", "--config"},
@@ -28,7 +30,7 @@ public class CommandFlinkArgs {
@Parameter(names = {"-i", "--variable"},
description = "variable substitution, such as -i city=beijing, or -i
date=20190318")
- private String variable = null;
+ private List<String> variables = null;
@Parameter(names = {"-t", "--check"},
description = "check config")
@@ -42,7 +44,7 @@ public class CommandFlinkArgs {
return testConfig;
}
- public String getVariable() {
- return variable;
+ public List<String> getVariables() {
+ return variables;
}
}
diff --git
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineArgs.java
b/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineArgs.java
index 009dc0f..5e9513b 100644
---
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineArgs.java
+++
b/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineArgs.java
@@ -17,17 +17,19 @@
package org.apache.seatunnel.config.command;
+import java.util.List;
+
public class CommandLineArgs {
private String deployMode = "client";
private final String configFile;
private final boolean testConfig;
- private String variable;
+ private List<String> variables;
- public CommandLineArgs(String configFile, boolean testConfig, String
variable) {
+ public CommandLineArgs(String configFile, boolean testConfig, List<String>
variables) {
this.configFile = configFile;
this.testConfig = testConfig;
- this.variable = variable;
+ this.variables = variables;
}
public CommandLineArgs(String deployMode, String configFile, boolean
testConfig) {
@@ -48,8 +50,8 @@ public class CommandLineArgs {
return testConfig;
}
- public String getVariable() {
- return variable;
+ public List<String> getVariables() {
+ return variables;
}
}
diff --git
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineUtils.java
b/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineUtils.java
index 41d7751..412f5d4 100644
---
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineUtils.java
+++
b/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineUtils.java
@@ -48,7 +48,7 @@ public final class CommandLineUtils {
return new CommandLineArgs(
commandFlinkArgs.getConfigFile(),
commandFlinkArgs.isTestConfig(),
- commandFlinkArgs.getVariable()
+ commandFlinkArgs.getVariables()
);
}
diff --git
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandSparkArgs.java
b/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandSparkArgs.java
index 1b1f689..35d7c16 100644
---
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandSparkArgs.java
+++
b/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandSparkArgs.java
@@ -19,6 +19,8 @@ package org.apache.seatunnel.config.command;
import com.beust.jcommander.Parameter;
+import java.util.List;
+
public class CommandSparkArgs {
@Parameter(names = {"-c", "--config"},
@@ -39,7 +41,7 @@ public class CommandSparkArgs {
@Parameter(names = {"-i", "--variable"},
description = "variable substitution, such as -i city=beijing, or -i
date=20190318")
- private String variable = null;
+ private List<String> variables = null;
@Parameter(names = {"-t", "--check"},
description = "check config")
@@ -57,4 +59,11 @@ public class CommandSparkArgs {
return testConfig;
}
+ public String getMaster() {
+ return master;
+ }
+
+ public List<String> getVariables() {
+ return variables;
+ }
}
diff --git
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandFlinkArgs.java
b/seatunnel-core/seatunnel-core-base/src/test/java/org/apache/seatunnel/config/command/CommandFlinkArgsTest.java
similarity index 54%
copy from
seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandFlinkArgs.java
copy to
seatunnel-core/seatunnel-core-base/src/test/java/org/apache/seatunnel/config/command/CommandFlinkArgsTest.java
index 58f17b8..e446bb4 100644
---
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandFlinkArgs.java
+++
b/seatunnel-core/seatunnel-core-base/src/test/java/org/apache/seatunnel/config/command/CommandFlinkArgsTest.java
@@ -17,32 +17,24 @@
package org.apache.seatunnel.config.command;
-import com.beust.jcommander.Parameter;
-
-public class CommandFlinkArgs {
-
- @Parameter(names = {"-c", "--config"},
- description = "config file",
- required = true)
- private String configFile = "application.conf";
-
- @Parameter(names = {"-i", "--variable"},
- description = "variable substitution, such as -i city=beijing, or -i
date=20190318")
- private String variable = null;
-
- @Parameter(names = {"-t", "--check"},
- description = "check config")
- private boolean testConfig = false;
-
- public String getConfigFile() {
- return configFile;
- }
-
- public boolean isTestConfig() {
- return testConfig;
- }
-
- public String getVariable() {
- return variable;
+import com.beust.jcommander.JCommander;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Arrays;
+
+public class CommandFlinkArgsTest {
+
+ @Test
+ public void testParseFlinkArgs() {
+ String[] args = {"-c", "app.conf", "-t", "-i", "city=shenyang", "-i",
"date=20200202"};
+ CommandFlinkArgs flinkArgs = new CommandFlinkArgs();
+ JCommander.newBuilder()
+ .addObject(flinkArgs)
+ .build()
+ .parse(args);
+ Assert.assertEquals("app.conf", flinkArgs.getConfigFile());
+ Assert.assertTrue(flinkArgs.isTestConfig());
+ Assert.assertEquals(Arrays.asList("city=shenyang", "date=20200202"),
flinkArgs.getVariables());
}
}
diff --git
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineUtils.java
b/seatunnel-core/seatunnel-core-base/src/test/java/org/apache/seatunnel/config/command/CommandSparkArgsTest.java
similarity index 52%
copy from
seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineUtils.java
copy to
seatunnel-core/seatunnel-core-base/src/test/java/org/apache/seatunnel/config/command/CommandSparkArgsTest.java
index 41d7751..0548f2e 100644
---
a/seatunnel-core/seatunnel-core-base/src/main/java/org/apache/seatunnel/config/command/CommandLineUtils.java
+++
b/seatunnel-core/seatunnel-core-base/src/test/java/org/apache/seatunnel/config/command/CommandSparkArgsTest.java
@@ -18,38 +18,24 @@
package org.apache.seatunnel.config.command;
import com.beust.jcommander.JCommander;
+import org.junit.Assert;
+import org.junit.Test;
-public final class CommandLineUtils {
+import java.util.Arrays;
- private CommandLineUtils() {
- }
+public class CommandSparkArgsTest {
- public static CommandLineArgs parseSparkArgs(String[] args) {
- CommandSparkArgs commandSparkArgs = new CommandSparkArgs();
+ @Test
+ public void testParseSparkArgs() {
+ String[] args = {"-c", "app.conf", "-e", "client", "-m", "yarn", "-i",
"city=shijiazhuang", "-i", "name=Tom"};
+ CommandSparkArgs sparkArgs = new CommandSparkArgs();
JCommander.newBuilder()
- .addObject(commandSparkArgs)
+ .addObject(sparkArgs)
.build()
.parse(args);
-
- return new CommandLineArgs(
- commandSparkArgs.getDeployMode(),
- commandSparkArgs.getConfigFile(),
- commandSparkArgs.isTestConfig()
- );
+ Assert.assertEquals("app.conf", sparkArgs.getConfigFile());
+ Assert.assertEquals("client", sparkArgs.getDeployMode());
+ Assert.assertEquals("yarn", sparkArgs.getMaster());
+ Assert.assertEquals(Arrays.asList("city=shijiazhuang", "name=Tom"),
sparkArgs.getVariables());
}
-
- public static CommandLineArgs parseFlinkArgs(String[] args) {
- CommandFlinkArgs commandFlinkArgs = new CommandFlinkArgs();
- JCommander.newBuilder()
- .addObject(commandFlinkArgs)
- .build()
- .parse(args);
-
- return new CommandLineArgs(
- commandFlinkArgs.getConfigFile(),
- commandFlinkArgs.isTestConfig(),
- commandFlinkArgs.getVariable()
- );
- }
-
}
diff --git
a/seatunnel-core/seatunnel-core-sql/src/main/java/org/apache/seatunnel/core/sql/SeatunnelSql.java
b/seatunnel-core/seatunnel-core-sql/src/main/java/org/apache/seatunnel/core/sql/SeatunnelSql.java
index 7b09e5a..9e67f1a 100644
---
a/seatunnel-core/seatunnel-core-sql/src/main/java/org/apache/seatunnel/core/sql/SeatunnelSql.java
+++
b/seatunnel-core/seatunnel-core-sql/src/main/java/org/apache/seatunnel/core/sql/SeatunnelSql.java
@@ -40,7 +40,7 @@ public class SeatunnelSql {
String configFilePath = flinkArgs.getConfigFile();
String jobContent = FileUtils.readFileToString(new
File(configFilePath), StandardCharsets.UTF_8);
JobInfo jobInfo = new JobInfo(jobContent);
- jobInfo.substitute(flinkArgs.getVariable());
+ jobInfo.substitute(flinkArgs.getVariables());
return jobInfo;
}
diff --git
a/seatunnel-core/seatunnel-core-sql/src/main/java/org/apache/seatunnel/core/sql/job/JobInfo.java
b/seatunnel-core/seatunnel-core-sql/src/main/java/org/apache/seatunnel/core/sql/job/JobInfo.java
index 0ed5a6f..6458551 100644
---
a/seatunnel-core/seatunnel-core-sql/src/main/java/org/apache/seatunnel/core/sql/job/JobInfo.java
+++
b/seatunnel-core/seatunnel-core-sql/src/main/java/org/apache/seatunnel/core/sql/job/JobInfo.java
@@ -17,6 +17,8 @@
package org.apache.seatunnel.core.sql.job;
+import java.util.List;
+
public class JobInfo {
private static final String JOB_NAME = "default sql job";
@@ -44,8 +46,11 @@ public class JobInfo {
return jobContent;
}
- public void substitute(String variable) {
- if (variable != null) {
+ public void substitute(List<String> variables) {
+ if (variables == null) {
+ return;
+ }
+ for (String variable : variables) {
String[] s = variable.split(DELIMITER);
if (s.length == 2) {
jobContent = jobContent.replaceAll(String.format(VAR_REGEX,
s[0].trim()), s[1].trim());
diff --git
a/seatunnel-core/seatunnel-core-sql/src/test/java/org/apache/seatunnel/core/sql/SqlVariableSubstitutionTest.java
b/seatunnel-core/seatunnel-core-sql/src/test/java/org/apache/seatunnel/core/sql/SqlVariableSubstitutionTest.java
index b639a73..30ada8a 100644
---
a/seatunnel-core/seatunnel-core-sql/src/test/java/org/apache/seatunnel/core/sql/SqlVariableSubstitutionTest.java
+++
b/seatunnel-core/seatunnel-core-sql/src/test/java/org/apache/seatunnel/core/sql/SqlVariableSubstitutionTest.java
@@ -42,7 +42,7 @@ public class SqlVariableSubstitutionTest {
JobInfo jobInfo = new JobInfo(jobContent);
Assert.assertFalse(jobInfo.getJobContent().contains("events"));
- jobInfo.substitute(flinkArgs.getVariable());
+ jobInfo.substitute(flinkArgs.getVariables());
Assert.assertTrue(jobInfo.getJobContent().contains("events"));
}