Skip to content

Commit 5d36d13

Browse files
committed
Add parameter summaries to derivative connectors
1 parent ca68223 commit 5d36d13

File tree

6 files changed

+62
-3
lines changed

6 files changed

+62
-3
lines changed

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/AbstractSnowflakeConnector.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import com.google.edwmigration.dumper.application.dumper.annotations.RespectsInput;
3232
import com.google.edwmigration.dumper.application.dumper.annotations.RespectsInputs;
3333
import com.google.edwmigration.dumper.application.dumper.connector.AbstractJdbcConnector;
34+
import com.google.edwmigration.dumper.application.dumper.connector.Connector;
3435
import com.google.edwmigration.dumper.application.dumper.handle.Handle;
3536
import com.google.edwmigration.dumper.application.dumper.handle.JdbcHandle;
3637
import com.google.edwmigration.dumper.application.dumper.task.AbstractJdbcTask;
@@ -244,4 +245,10 @@ String sanitizeDatabaseName(@Nonnull String databaseName) throws MetadataDumperU
244245
}
245246
return trimmedName;
246247
}
248+
249+
static String describeAsDelegate(Connector connector, String baseName) {
250+
String summary = String.format("* %s - %s\n", connector.getName(), connector.getDescription());
251+
String details = String.format("%8s[same options as '%s']\n", "", baseName);
252+
return summary + details;
253+
}
247254
}

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeAccountUsageLogsConnector.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@
2020

2121
import com.google.auto.service.AutoService;
2222
import com.google.edwmigration.dumper.application.dumper.connector.Connector;
23+
import java.io.IOException;
2324
import javax.annotation.Nonnull;
2425

2526
/** @author shevek */
2627
@AutoService(Connector.class)
27-
public class SnowflakeAccountUsageLogsConnector extends SnowflakeLogsConnector {
28+
public final class SnowflakeAccountUsageLogsConnector extends SnowflakeLogsConnector {
2829

2930
public SnowflakeAccountUsageLogsConnector() {
3031
super("snowflake-account-usage-logs", USAGE_ONLY_SOURCE);
@@ -35,4 +36,9 @@ public SnowflakeAccountUsageLogsConnector() {
3536
public String getDescription() {
3637
return "Dumps logs from Snowflake, using ACCOUNT_USAGE only.";
3738
}
39+
40+
@Override
41+
public void printHelp(@Nonnull Appendable out) throws IOException {
42+
out.append(AbstractSnowflakeConnector.describeAsDelegate(this, "snowflake-logs"));
43+
}
3844
}

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeAccountUsageMetadataConnector.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.google.auto.service.AutoService;
2222
import com.google.edwmigration.dumper.application.dumper.connector.Connector;
23+
import java.io.IOException;
2324
import javax.annotation.Nonnull;
2425

2526
/** @author shevek */
@@ -35,4 +36,9 @@ public SnowflakeAccountUsageMetadataConnector() {
3536
public String getDescription() {
3637
return "Dumps metadata from Snowflake, using ACCOUNT_USAGE only.";
3738
}
39+
40+
@Override
41+
public void printHelp(@Nonnull Appendable out) throws IOException {
42+
out.append(AbstractSnowflakeConnector.describeAsDelegate(this, "snowflake"));
43+
}
3844
}

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeInformationSchemaLogsConnector.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.google.auto.service.AutoService;
2222
import com.google.edwmigration.dumper.application.dumper.connector.Connector;
23+
import java.io.IOException;
2324
import javax.annotation.Nonnull;
2425

2526
/**
@@ -39,4 +40,9 @@ public SnowflakeInformationSchemaLogsConnector() {
3940
public String getDescription() {
4041
return "Dumps logs from Snowflake, using INFORMATION_SCHEMA only.";
4142
}
43+
44+
@Override
45+
public void printHelp(@Nonnull Appendable out) throws IOException {
46+
out.append(AbstractSnowflakeConnector.describeAsDelegate(this, "snowflake-logs"));
47+
}
4248
}

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeInformationSchemaMetadataConnector.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.google.auto.service.AutoService;
2222
import com.google.edwmigration.dumper.application.dumper.connector.Connector;
23+
import java.io.IOException;
2324
import javax.annotation.Nonnull;
2425

2526
/** @author shevek */
@@ -35,4 +36,9 @@ public SnowflakeInformationSchemaMetadataConnector() {
3536
public String getDescription() {
3637
return "Dumps metadata from Snowflake, using INFORMATION_SCHEMA only.";
3738
}
39+
40+
@Override
41+
public void printHelp(@Nonnull Appendable out) throws IOException {
42+
out.append(AbstractSnowflakeConnector.describeAsDelegate(this, "snowflake"));
43+
}
3844
}

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

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@
2828
import java.util.stream.IntStream;
2929
import org.junit.Assert;
3030
import org.junit.Test;
31+
import org.junit.experimental.theories.Theories;
32+
import org.junit.experimental.theories.Theory;
3133
import org.junit.runner.RunWith;
32-
import org.junit.runners.JUnit4;
3334

34-
@RunWith(JUnit4.class)
35+
@RunWith(Theories.class)
3536
public class AbstractSnowflakeConnectorTest extends AbstractConnectorTest {
3637
private static final ImmutableList<String> ARGS =
3738
ImmutableList.of(
@@ -43,6 +44,33 @@ public class AbstractSnowflakeConnectorTest extends AbstractConnectorTest {
4344

4445
private final SnowflakeMetadataConnector metadataConnector = new SnowflakeMetadataConnector();
4546

47+
public enum TestCase {
48+
LOGS(SnowflakeLogsConnector.class),
49+
LOGS_AU(SnowflakeAccountUsageLogsConnector.class),
50+
LOGS_IS(SnowflakeInformationSchemaLogsConnector.class),
51+
META(SnowflakeMetadataConnector.class),
52+
META_AU(SnowflakeAccountUsageMetadataConnector.class),
53+
META_IS(SnowflakeInformationSchemaMetadataConnector.class);
54+
55+
final Class<? extends AbstractSnowflakeConnector> subclass;
56+
57+
TestCase(Class<? extends AbstractSnowflakeConnector> subclass) {
58+
this.subclass = subclass;
59+
}
60+
}
61+
62+
@Theory
63+
public void describeAsDelegate_success(TestCase testCase) throws Exception {
64+
AbstractSnowflakeConnector connector = testCase.subclass.newInstance();
65+
66+
String description = AbstractSnowflakeConnector.describeAsDelegate(connector, "test-connector");
67+
68+
assertTrue(description, description.contains(connector.getName()));
69+
assertTrue(description, description.contains(connector.getDescription()));
70+
assertTrue(description, description.contains("[same options as 'test-connector']"));
71+
assertTrue(description, description.endsWith("\n"));
72+
}
73+
4674
@Test
4775
public void openConnection_failsForVeryLongInput() throws IOException {
4876
// 262 characters

0 commit comments

Comments
 (0)