bvaradar commented on a change in pull request #1898:
URL: https://github.com/apache/hudi/pull/1898#discussion_r464564500
##########
File path:
hudi-utilities/src/main/java/org/apache/hudi/utilities/deltastreamer/HoodieDeltaStreamer.java
##########
@@ -306,16 +317,106 @@ public boolean isInlineCompactionEnabled() {
return !continuousMode && !forceDisableCompaction
&&
HoodieTableType.MERGE_ON_READ.equals(HoodieTableType.valueOf(tableType));
}
+
Review comment:
Question : Any specific reason why equals/hashcode are added ? Was it
added as part of general best-practices ?
##########
File path:
hudi-utilities/src/test/java/org/apache/hudi/utilities/functional/TestHoodieDeltaStreamer.java
##########
@@ -394,6 +414,95 @@ public void testProps() {
props.getString("hoodie.datasource.write.keygenerator.class"));
}
+ private static HoodieDeltaStreamer.Config getBaseConfig() {
+ // Base config with all required fields
+ HoodieDeltaStreamer.Config base = new HoodieDeltaStreamer.Config();
+ base.targetBasePath = TGT_BASE_PATH_VALUE;
+ base.tableType = TABLE_TYPE_VALUE;
+ base.targetTableName = TARGET_TABLE_VALUE;
+ return base;
+ }
+
+ private static Stream<Arguments> provideValidCliArgs() {
+
+ HoodieDeltaStreamer.Config base = getBaseConfig();
+ // String parameter
+ HoodieDeltaStreamer.Config conf1 = getBaseConfig();
+ conf1.baseFileFormat = BASE_FILE_FORMAT_VALUE;
+
+ // Integer parameter
+ HoodieDeltaStreamer.Config conf2 = getBaseConfig();
+ conf2.sourceLimit = Long.parseLong(SOURCE_LIMIT_VALUE);
+
+ // Boolean Parameter
+ HoodieDeltaStreamer.Config conf3 = getBaseConfig();
+ conf3.enableHiveSync = true;
+
+ // ArrayList Parameter with 1 value
+ HoodieDeltaStreamer.Config conf4 = getBaseConfig();
+ conf4.configs = Arrays.asList(HOODIE_CONF_VALUE1);
+
+ // ArrayList Parameter with comma separated values
+ HoodieDeltaStreamer.Config conf5 = getBaseConfig();
+ conf5.configs = Arrays.asList(HOODIE_CONF_VALUE2);
+
+ // Multiple ArrayList values
+ HoodieDeltaStreamer.Config conf6 = getBaseConfig();
+ conf6.configs = Arrays.asList(HOODIE_CONF_VALUE1, HOODIE_CONF_VALUE2);
+
+ // Super set of all cases
+ HoodieDeltaStreamer.Config conf = getBaseConfig();
+ conf.baseFileFormat = BASE_FILE_FORMAT_VALUE;
+ conf.sourceLimit = Long.parseLong(SOURCE_LIMIT_VALUE);
+ conf.enableHiveSync = true;
+ conf.configs = Arrays.asList(HOODIE_CONF_VALUE1, HOODIE_CONF_VALUE2);
+
+ String[] allConfig = new String[]{TGT_BASE_PATH_PARAM,
TGT_BASE_PATH_VALUE, SOURCE_LIMIT_PARAM,
+ SOURCE_LIMIT_VALUE, TABLE_TYPE_PARAM, TABLE_TYPE_VALUE,
TARGET_TABLE_PARAM, TARGET_TABLE_VALUE,
+ BASE_FILE_FORMAT_PARAM, BASE_FILE_FORMAT_VALUE,
ENABLE_HIVE_SYNC_PARAM, HOODIE_CONF_PARAM, HOODIE_CONF_VALUE1,
+ HOODIE_CONF_PARAM, HOODIE_CONF_VALUE2};
+
+ return Stream.of(
+ // Base
+ Arguments.of(new String[] {TGT_BASE_PATH_PARAM,
TGT_BASE_PATH_VALUE,
+ TABLE_TYPE_PARAM, TABLE_TYPE_VALUE, TARGET_TABLE_PARAM,
TARGET_TABLE_VALUE}, base),
+ // String
+ Arguments.of(new String[] {TGT_BASE_PATH_PARAM,
TGT_BASE_PATH_VALUE,
+ TABLE_TYPE_PARAM, TABLE_TYPE_VALUE, TARGET_TABLE_PARAM,
TARGET_TABLE_VALUE,
+ BASE_FILE_FORMAT_PARAM, BASE_FILE_FORMAT_VALUE}, conf1),
+ // Integer
+ Arguments.of(new String[] {TGT_BASE_PATH_PARAM,
TGT_BASE_PATH_VALUE,
+ TABLE_TYPE_PARAM, TABLE_TYPE_VALUE, TARGET_TABLE_PARAM,
TARGET_TABLE_VALUE,
+ SOURCE_LIMIT_PARAM, SOURCE_LIMIT_VALUE}, conf2),
+ // Boolean
+ Arguments.of(new String[] {TGT_BASE_PATH_PARAM,
TGT_BASE_PATH_VALUE,
+ TABLE_TYPE_PARAM, TABLE_TYPE_VALUE, TARGET_TABLE_PARAM,
TARGET_TABLE_VALUE,
+ ENABLE_HIVE_SYNC_PARAM}, conf3),
+ // Array List 1
+ Arguments.of(new String[] {TGT_BASE_PATH_PARAM,
TGT_BASE_PATH_VALUE,
+ TABLE_TYPE_PARAM, TABLE_TYPE_VALUE, TARGET_TABLE_PARAM,
TARGET_TABLE_VALUE,
+ HOODIE_CONF_PARAM, HOODIE_CONF_VALUE1}, conf4),
+ // Array List with comma
+ Arguments.of(new String[] {TGT_BASE_PATH_PARAM,
TGT_BASE_PATH_VALUE,
+ TABLE_TYPE_PARAM, TABLE_TYPE_VALUE, TARGET_TABLE_PARAM,
TARGET_TABLE_VALUE,
+ HOODIE_CONF_PARAM, HOODIE_CONF_VALUE2}, conf5),
+ // Array list with multiple values
+ Arguments.of(new String[] {TGT_BASE_PATH_PARAM,
TGT_BASE_PATH_VALUE,
+ TABLE_TYPE_PARAM, TABLE_TYPE_VALUE, TARGET_TABLE_PARAM,
TARGET_TABLE_VALUE,
+ HOODIE_CONF_PARAM, HOODIE_CONF_VALUE1, HOODIE_CONF_PARAM,
HOODIE_CONF_VALUE2}, conf6),
+ // All
+ Arguments.of(allConfig, conf)
+ );
+ }
+
+ @ParameterizedTest
+ @MethodSource("provideValidCliArgs")
+ public void testValidCommandLineArgs(String[] args,
HoodieDeltaStreamer.Config expected) {
+ System.out.println("Expected: ");
Review comment:
can be removed.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]