Skip to content

Commit 3083a2f

Browse files
committed
Add a better way to create ConnectorArguments
1 parent 626db30 commit 3083a2f

File tree

9 files changed

+71
-90
lines changed

9 files changed

+71
-90
lines changed

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/ConnectorArguments.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,10 +596,19 @@ public class ConnectorArguments extends DefaultArguments {
596596

597597
private ConnectorProperties connectorProperties;
598598

599-
private final PasswordReader passwordReader = new PasswordReader();
599+
private final PasswordReader passwordReader;
600600

601601
public ConnectorArguments(@Nonnull String... args) throws IOException {
602+
this(Arrays.asList(args), new PasswordReader());
603+
}
604+
605+
private ConnectorArguments(@Nonnull List<String> args, @Nonnull PasswordReader passwordReader) {
602606
super(args);
607+
this.passwordReader = passwordReader;
608+
}
609+
610+
public static ConnectorArguments create(@Nonnull List<String> args) {
611+
return new ConnectorArguments(args, new PasswordReader());
603612
}
604613

605614
@Override

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/DefaultArguments.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.io.PrintStream;
2424
import java.util.Arrays;
2525
import java.util.Comparator;
26+
import java.util.List;
2627
import java.util.Map;
2728
import java.util.Set;
2829
import java.util.TreeSet;
@@ -36,15 +37,10 @@
3637
import joptsimple.ValueConversionException;
3738
import joptsimple.ValueConverter;
3839
import org.anarres.jdiagnostics.ProductMetadata;
39-
import org.slf4j.Logger;
40-
import org.slf4j.LoggerFactory;
4140

4241
/** @author shevek */
4342
public class DefaultArguments {
4443

45-
@SuppressWarnings("UnusedVariable")
46-
private static final Logger logger = LoggerFactory.getLogger(DefaultArguments.class);
47-
4844
public static class BooleanValueConverter implements ValueConverter<Boolean> {
4945

5046
private final String[] V_TRUE = {"true", "t", "yes", "y", "1"};
@@ -96,9 +92,8 @@ public String valuePattern() {
9692
private final String[] args;
9793
private OptionSet options;
9894

99-
@SuppressWarnings("EI_EXPOSE_REP2")
100-
public DefaultArguments(@Nonnull String[] args) {
101-
this.args = args;
95+
DefaultArguments(@Nonnull List<String> args) {
96+
this.args = args.toArray(new String[0]);
10297
}
10398

10499
@Nonnull

dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/AbstractSnowflakeConnectorTest.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
*/
1717
package com.google.edwmigration.dumper.application.dumper.connector.snowflake;
1818

19-
import static java.util.Arrays.copyOf;
2019
import static org.junit.Assert.assertEquals;
2120
import static org.junit.Assert.assertThrows;
2221
import static org.junit.Assert.assertTrue;
@@ -26,7 +25,7 @@
2625
import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException;
2726
import com.google.edwmigration.dumper.application.dumper.connector.AbstractConnectorTest;
2827
import java.io.IOException;
29-
import java.util.stream.IntStream;
28+
import java.util.ArrayList;
3029
import org.junit.Assert;
3130
import org.junit.Test;
3231
import org.junit.experimental.theories.Theories;
@@ -159,13 +158,10 @@ public void checkJnaInClasspath_success() {
159158
}
160159

161160
private static ConnectorArguments makeArguments(String... extraArguments) {
162-
try {
163-
String[] arguments = copyOf(extraArguments, extraArguments.length + ARGS.size());
164-
IntStream.range(0, ARGS.size())
165-
.forEach(el -> arguments[el + extraArguments.length] = ARGS.get(el));
166-
return new ConnectorArguments(arguments);
167-
} catch (IOException e) {
168-
throw new RuntimeException(e);
161+
ArrayList<String> arguments = new ArrayList<>(ARGS);
162+
for (String item : extraArguments) {
163+
arguments.add(item);
169164
}
165+
return ConnectorArguments.create(arguments);
170166
}
171167
}

dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeAccountUsageMetadataConnectorTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
*/
1717
package com.google.edwmigration.dumper.application.dumper.connector.snowflake;
1818

19-
import static com.google.edwmigration.dumper.application.dumper.connector.snowflake.SnowflakeTestUtil.createArgs;
2019
import static org.junit.Assert.assertThrows;
2120

21+
import com.google.common.collect.ImmutableList;
2222
import com.google.edwmigration.dumper.application.dumper.ConnectorArguments;
2323
import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException;
2424
import com.google.edwmigration.dumper.application.dumper.connector.MetadataConnector;
@@ -73,15 +73,18 @@ public void testExecution() throws Exception {
7373

7474
@Test
7575
public void validate_success() {
76-
ConnectorArguments arguments = createArgs("--connector", "snowflake-account-usage-metadata");
76+
ConnectorArguments arguments =
77+
ConnectorArguments.create(
78+
ImmutableList.of("--connector", "snowflake-account-usage-metadata"));
7779

7880
connector.validate(arguments);
7981
}
8082

8183
@Test
8284
public void validate_assessmentFlagProvided_throwsException() {
8385
ConnectorArguments arguments =
84-
createArgs("--connector", "snowflake-account-usage-metadata", "--assessment");
86+
ConnectorArguments.create(
87+
ImmutableList.of("--connector", "snowflake-account-usage-metadata", "--assessment"));
8588

8689
assertThrows(MetadataDumperUsageException.class, () -> connector.validate(arguments));
8790
}

dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeInformationSchemaMetadataConnectorTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
*/
1717
package com.google.edwmigration.dumper.application.dumper.connector.snowflake;
1818

19-
import static com.google.edwmigration.dumper.application.dumper.connector.snowflake.SnowflakeTestUtil.createArgs;
2019
import static org.junit.Assert.assertThrows;
2120

21+
import com.google.common.collect.ImmutableList;
2222
import com.google.edwmigration.dumper.application.dumper.ConnectorArguments;
2323
import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException;
2424
import com.google.edwmigration.dumper.application.dumper.connector.MetadataConnector;
@@ -68,15 +68,18 @@ public void testExecution() throws Exception {
6868
@Test
6969
public void validate_success() {
7070
ConnectorArguments arguments =
71-
createArgs("--connector", "snowflake-information-schema-metadata");
71+
ConnectorArguments.create(
72+
ImmutableList.of("--connector", "snowflake-information-schema-metadata"));
7273

7374
connector.validate(arguments);
7475
}
7576

7677
@Test
7778
public void validate_assessmentFlagProvided_throwsException() {
7879
ConnectorArguments arguments =
79-
createArgs("--connector", "snowflake-information-schema-metadata", "--assessment");
80+
ConnectorArguments.create(
81+
ImmutableList.of(
82+
"--connector", "snowflake-information-schema-metadata", "--assessment"));
8083

8184
assertThrows(MetadataDumperUsageException.class, () -> connector.validate(arguments));
8285
}

dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeLiteConnectorTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import static org.junit.Assert.assertThrows;
2020

21+
import com.google.common.collect.ImmutableList;
2122
import com.google.edwmigration.dumper.application.dumper.ConnectorArguments;
2223
import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException;
2324
import org.junit.Test;
@@ -28,8 +29,9 @@
2829
public class SnowflakeLiteConnectorTest {
2930

3031
@Test
31-
public void validate_noAssessmentFlag_throwsUsageException() throws Exception {
32-
ConnectorArguments noFlagArguments = new ConnectorArguments("--connector", "snowflake-lite");
32+
public void validate_noAssessmentFlag_throwsUsageException() {
33+
ConnectorArguments noFlagArguments =
34+
ConnectorArguments.create(ImmutableList.of("--connector", "snowflake-lite"));
3335
SnowflakeLiteConnector connector = new SnowflakeLiteConnector();
3436

3537
assertThrows(MetadataDumperUsageException.class, () -> connector.validate(noFlagArguments));

dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeLogsConnectorTest.java

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@
2727
import static org.junit.Assert.assertThrows;
2828
import static org.junit.Assert.assertTrue;
2929

30+
import com.google.common.collect.ImmutableList;
3031
import com.google.edwmigration.dumper.application.dumper.ConnectorArguments;
3132
import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException;
3233
import com.google.edwmigration.dumper.application.dumper.connector.snowflake.SnowflakeLogsConnector.TimeSeriesView;
3334
import com.google.edwmigration.dumper.test.TestUtils;
3435
import java.io.File;
35-
import java.io.IOException;
3636
import org.junit.Test;
3737
import org.junit.experimental.theories.Theories;
3838
import org.junit.experimental.theories.Theory;
@@ -60,49 +60,49 @@ void test(File output) throws Exception {
6060
}
6161

6262
@Test
63-
public void addOverridesToQuery_fullQueryOverride_success() throws IOException {
63+
public void addOverridesToQuery_fullQueryOverride_success() {
6464
String override =
6565
"SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY\n"
6666
+ "WHERE end_time >= to_timestamp_ltz('%s')\n"
6767
+ "AND end_time <= to_timestamp_ltz('%s')\n";
6868
String property = String.format("-Dsnowflake.logs.query=%s", override);
6969
ConnectorArguments arguments =
70-
new ConnectorArguments("--connector", "snowflake-logs", property);
70+
ConnectorArguments.create(ImmutableList.of("--connector", "snowflake-logs", property));
7171

7272
String result = addOverridesToQuery(arguments, "SELECT 1");
7373

7474
assertEquals(override, result);
7575
}
7676

7777
@Test
78-
public void addOverridesToQuery_fullQueryOverrideWithBadValue_throwsException()
79-
throws IOException {
78+
public void addOverridesToQuery_fullQueryOverrideWithBadValue_throwsException() {
8079
String override = "text_with_no_format_specifiers";
8180
String property = String.format("-Dsnowflake.logs.query=%s", override);
8281
ConnectorArguments arguments =
83-
new ConnectorArguments("--connector", "snowflake-logs", property);
82+
ConnectorArguments.create(ImmutableList.of("--connector", "snowflake-logs", property));
8483

8584
assertThrows(
8685
MetadataDumperUsageException.class, () -> addOverridesToQuery(arguments, "SELECT 1"));
8786
}
8887

8988
@Test
90-
public void addOverridesToQuery_noOverrides_nothingChanges() throws IOException {
89+
public void addOverridesToQuery_noOverrides_nothingChanges() {
9190
String originalQuery = "SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY WHERE 1=1\n";
92-
ConnectorArguments arguments = new ConnectorArguments("--connector", "snowflake-logs");
91+
ConnectorArguments arguments =
92+
ConnectorArguments.create(ImmutableList.of("--connector", "snowflake-logs"));
9393

9494
String result = addOverridesToQuery(arguments, originalQuery);
9595

9696
assertEquals(originalQuery, result);
9797
}
9898

9999
@Test
100-
public void addOverridesToQuery_whereOverride_success() throws IOException {
100+
public void addOverridesToQuery_whereOverride_success() {
101101
String originalQuery = "SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY WHERE 1=1\n";
102102
String override = "rows_inserted > 0";
103103
String property = String.format("-Dsnowflake.logs.where=%s", override);
104104
ConnectorArguments arguments =
105-
new ConnectorArguments("--connector", "snowflake-logs", property);
105+
ConnectorArguments.create(ImmutableList.of("--connector", "snowflake-logs", property));
106106

107107
String result = addOverridesToQuery(arguments, originalQuery);
108108

@@ -112,22 +112,24 @@ public void addOverridesToQuery_whereOverride_success() throws IOException {
112112
}
113113

114114
@Test
115-
public void earliestTimestamp_notProvided_emptyResult() throws IOException {
116-
ConnectorArguments arguments = new ConnectorArguments("--connector", "snowflake-logs");
115+
public void earliestTimestamp_notProvided_emptyResult() {
116+
ConnectorArguments arguments =
117+
ConnectorArguments.create(ImmutableList.of("--connector", "snowflake-logs"));
117118

118119
String result = earliestTimestamp(arguments);
119120

120121
assertEquals("", result);
121122
}
122123

123124
@Test
124-
public void earliestTimestamp_provided_resultMatches() throws IOException {
125+
public void earliestTimestamp_provided_resultMatches() {
125126
ConnectorArguments arguments =
126-
new ConnectorArguments(
127-
"--connector",
128-
"snowflake-logs",
129-
"--" + ConnectorArguments.OPT_QUERY_LOG_EARLIEST_TIMESTAMP,
130-
"2024-03-21");
127+
ConnectorArguments.create(
128+
ImmutableList.of(
129+
"--connector",
130+
"snowflake-logs",
131+
"--" + ConnectorArguments.OPT_QUERY_LOG_EARLIEST_TIMESTAMP,
132+
"2024-03-21"));
131133

132134
String result = earliestTimestamp(arguments);
133135

@@ -151,7 +153,7 @@ public void formatPrefix_success() {
151153
}
152154

153155
@Test
154-
public void overrideableQuery_overrideAbsent_defaultUsed() throws IOException {
156+
public void overrideableQuery_overrideAbsent_defaultUsed() {
155157
String defaultSql = "SELECT event_name, query_id FROM WAREHOUSE_EVENTS_HISTORY";
156158

157159
String result = overrideableQuery(null, defaultSql, "timestamp");
@@ -160,7 +162,7 @@ public void overrideableQuery_overrideAbsent_defaultUsed() throws IOException {
160162
}
161163

162164
@Test
163-
public void overrideableQuery_overrideEmpty_resultEmpty() throws IOException {
165+
public void overrideableQuery_overrideEmpty_resultEmpty() {
164166
String defaultSql = "SELECT event_name, query_id FROM WAREHOUSE_EVENTS_HISTORY";
165167
String override = "";
166168

@@ -170,7 +172,7 @@ public void overrideableQuery_overrideEmpty_resultEmpty() throws IOException {
170172
}
171173

172174
@Test
173-
public void overrideableQuery_overridePresent_defaultIgnored() throws IOException {
175+
public void overrideableQuery_overridePresent_defaultIgnored() {
174176
String defaultSql = "SELECT event_name, query_id FROM WAREHOUSE_EVENTS_HISTORY";
175177
String override = "SELECT query_id FROM WAREHOUSE_EVENTS_HISTORY";
176178

@@ -180,15 +182,16 @@ public void overrideableQuery_overridePresent_defaultIgnored() throws IOExceptio
180182
}
181183

182184
@Test
183-
public void validate_unsupportedOption_throwsException() throws IOException {
185+
public void validate_unsupportedOption_throwsException() {
184186
SnowflakeLogsConnector connector = new SnowflakeLogsConnector();
185187
ConnectorArguments arguments =
186-
new ConnectorArguments(
187-
"--connector",
188-
"snowflake-logs",
189-
"--assessment",
190-
"--" + ConnectorArguments.OPT_QUERY_LOG_EARLIEST_TIMESTAMP,
191-
"2024");
188+
ConnectorArguments.create(
189+
ImmutableList.of(
190+
"--connector",
191+
"snowflake-logs",
192+
"--assessment",
193+
"--" + ConnectorArguments.OPT_QUERY_LOG_EARLIEST_TIMESTAMP,
194+
"2024"));
192195

193196
assertThrows(MetadataDumperUsageException.class, () -> connector.validate(arguments));
194197
}

dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeMetadataConnectorTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import java.util.Map;
4343
import java.util.Map.Entry;
4444
import javax.annotation.Nonnull;
45-
import org.apache.commons.lang3.ArrayUtils;
4645
import org.apache.commons.lang3.StringUtils;
4746
import org.junit.Assume;
4847
import org.junit.Test;
@@ -249,8 +248,12 @@ private static ImmutableMultimap<String, String> collectSqlStatementsAsMultimap(
249248
String... extraArgs) throws IOException {
250249
List<Task<?>> tasks = new ArrayList<>();
251250
SnowflakeMetadataConnector connector = new SnowflakeMetadataConnector();
252-
String[] args = ArrayUtils.addAll(new String[] {"--connector", connector.getName()}, extraArgs);
253-
connector.addTasksTo(tasks, new ConnectorArguments(args));
251+
ImmutableList<String> standardArgs = ImmutableList.of("--connector", connector.getName());
252+
ArrayList<String> args = new ArrayList<>(standardArgs);
253+
for (String item : extraArgs) {
254+
args.add(item);
255+
}
256+
connector.addTasksTo(tasks, ConnectorArguments.create(args));
254257
ImmutableMultimap.Builder<String, String> builder = ImmutableMultimap.builder();
255258
tasks.stream()
256259
.filter(t -> t instanceof JdbcSelectTask)

dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeTestUtil.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)