Skip to content

Commit e89ba1a

Browse files
committed
1KShardLT
1 parent f409aed commit e89ba1a

File tree

15 files changed

+1854
-20
lines changed

15 files changed

+1854
-20
lines changed

it/google-cloud-platform/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@
6161
<artifactId>google-api-services-dataflow</artifactId>
6262
<version>${dataflow-api.version}</version>
6363
</dependency>
64+
<dependency>
65+
<groupId>com.google.apis</groupId>
66+
<artifactId>google-api-services-sqladmin</artifactId>
67+
<version>${sqladmin-api.version}</version>
68+
</dependency>
6469

6570
<!-- JDBC dependencies for CloudSQL -->
6671
<dependency>

it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/cloudsql/CloudMySQLResourceManager.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,27 @@ protected void configurePort() {
6262
}
6363
}
6464

65+
@Override
66+
public Builder maybeUseStaticInstance(String host, int port, String userName, String password) {
67+
super.maybeUseStaticInstance(host, port, userName, password);
68+
return this;
69+
}
70+
71+
public Builder setProjectId(String projectId) {
72+
this.projectId = projectId;
73+
return this;
74+
}
75+
76+
public Builder setRegion(String region) {
77+
this.region = region;
78+
return this;
79+
}
80+
81+
public Builder setCredentials(com.google.auth.oauth2.GoogleCredentials credentials) {
82+
this.credentials = credentials;
83+
return this;
84+
}
85+
6586
@Override
6687
public @NonNull CloudMySQLResourceManager build() {
6788
return new CloudMySQLResourceManager(this);

it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/cloudsql/CloudPostgresResourceManager.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,27 @@ protected void configurePort() {
364364
}
365365
}
366366

367+
@Override
368+
public Builder maybeUseStaticInstance(String host, int port, String userName, String password) {
369+
super.maybeUseStaticInstance(host, port, userName, password);
370+
return this;
371+
}
372+
373+
public Builder setProjectId(String projectId) {
374+
this.projectId = projectId;
375+
return this;
376+
}
377+
378+
public Builder setRegion(String region) {
379+
this.region = region;
380+
return this;
381+
}
382+
383+
public Builder setCredentials(com.google.auth.oauth2.GoogleCredentials credentials) {
384+
this.credentials = credentials;
385+
return this;
386+
}
387+
367388
@Override
368389
public @NonNull CloudPostgresResourceManager build() {
369390
return new CloudPostgresResourceManager(this);

it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/cloudsql/CloudSqlResourceManager.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import static org.apache.beam.it.gcp.cloudsql.CloudSqlResourceManagerUtils.generateDatabaseName;
2121

22+
import com.google.auth.oauth2.GoogleCredentials;
2223
import java.util.ArrayList;
2324
import java.util.List;
2425
import org.apache.beam.it.jdbc.AbstractJDBCResourceManager;
@@ -151,6 +152,10 @@ public void cleanupAll() {
151152
public abstract static class Builder
152153
extends AbstractJDBCResourceManager.Builder<@NonNull CloudSqlContainer<?>> {
153154

155+
protected String projectId;
156+
protected String region;
157+
protected GoogleCredentials credentials;
158+
154159
private String dbName;
155160
private boolean usingCustomDb;
156161

@@ -174,6 +179,31 @@ public Builder maybeUseStaticInstance() {
174179
return this;
175180
}
176181

182+
public Builder maybeUseStaticInstance(String host, int port, String userName, String password) {
183+
this.setHost(host);
184+
this.setPort(port);
185+
this.setUsername(userName);
186+
this.setPassword(password);
187+
this.useStaticContainer();
188+
189+
return this;
190+
}
191+
192+
public Builder setProjectId(String projectId) {
193+
this.projectId = projectId;
194+
return this;
195+
}
196+
197+
public Builder setRegion(String region) {
198+
this.region = region;
199+
return this;
200+
}
201+
202+
public Builder setCredentials(GoogleCredentials credentials) {
203+
this.credentials = credentials;
204+
return this;
205+
}
206+
177207
protected String getDefaultUsername() {
178208
return DEFAULT_JDBC_USERNAME;
179209
}

it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/cloudsql/CloudMySQLResourceManagerTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,21 @@ public void setUp() {
5454
public void testGetJDBCPrefixReturnsCorrectValue() {
5555
assertThat(testManager.getJDBCPrefix()).isEqualTo("mysql");
5656
}
57+
58+
@Test
59+
public void testBuilder() {
60+
CloudMySQLResourceManager.Builder builder = CloudMySQLResourceManager.builder(TEST_ID);
61+
62+
com.google.auth.oauth2.GoogleCredentials credentials =
63+
org.mockito.Mockito.mock(com.google.auth.oauth2.GoogleCredentials.class);
64+
builder
65+
.setProjectId("test-project")
66+
.setRegion("test-region")
67+
.setCredentials(credentials)
68+
.maybeUseStaticInstance("1.1.1.1", 3306, "u", "p");
69+
70+
assertThat(builder.projectId).isEqualTo("test-project");
71+
assertThat(builder.region).isEqualTo("test-region");
72+
assertThat(builder.credentials).isEqualTo(credentials);
73+
}
5774
}

it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/cloudsql/CloudPostgresResourceManagerTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,23 @@ public void testCreateLogicalReplicationRollbackOnError() throws SQLException {
155155
verify(mockConnection).rollback();
156156
}
157157

158+
@Test
159+
public void testBuilder() {
160+
CloudPostgresResourceManager.Builder builder = CloudPostgresResourceManager.builder(TEST_ID);
161+
162+
com.google.auth.oauth2.GoogleCredentials credentials =
163+
org.mockito.Mockito.mock(com.google.auth.oauth2.GoogleCredentials.class);
164+
builder
165+
.setProjectId("test-project")
166+
.setRegion("test-region")
167+
.setCredentials(credentials)
168+
.maybeUseStaticInstance("1.1.1.1", 5432, "u", "p");
169+
170+
assertThat(builder.projectId).isEqualTo("test-project");
171+
assertThat(builder.region).isEqualTo("test-region");
172+
assertThat(builder.credentials).isEqualTo(credentials);
173+
}
174+
158175
/** Helper mock implementation of {@link CloudPostgresResourceManager} for testing. */
159176
private static class MockCloudPostgresResourceManager extends CloudPostgresResourceManager {
160177

it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/cloudsql/CloudSqlResourceManagerTest.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,16 @@ private static class MockCloudSqlResourceManager extends CloudSqlResourceManager
4848
private final boolean initialized;
4949
private boolean createdDatabase;
5050
private String lastRunSqlCommand;
51+
private final String projectId;
52+
private final String region;
53+
private final com.google.auth.oauth2.GoogleCredentials credentials;
5154

5255
private MockCloudSqlResourceManager(Builder builder) {
5356
super(builder);
5457
this.initialized = true;
58+
this.projectId = builder.projectId;
59+
this.region = builder.region;
60+
this.credentials = builder.credentials;
5561
}
5662

5763
@Override
@@ -183,6 +189,59 @@ public void testCleanupAllRemovesAllTablesWhenDBNotCreated() {
183189
assertThat(testManager.createdTables).isEmpty();
184190
}
185191

192+
@Test
193+
public void testMaybeUseStaticInstanceWithHost() {
194+
CloudSqlResourceManager.Builder builder =
195+
new CloudSqlResourceManager.Builder(TEST_ID) {
196+
@Override
197+
public @NonNull CloudSqlResourceManager build() {
198+
return new MockCloudSqlResourceManager(this);
199+
}
200+
201+
@Override
202+
protected void configurePort() {
203+
this.setPort(1234);
204+
}
205+
};
206+
207+
String customHost = "10.1.1.1";
208+
builder.maybeUseStaticInstance(customHost, 1234, "testUser", "testPassword");
209+
CloudSqlResourceManager manager = (CloudSqlResourceManager) builder.build();
210+
211+
assertThat(manager.getHost()).isEqualTo(customHost);
212+
}
213+
214+
@Test
215+
public void testBuilder() {
216+
CloudSqlResourceManager.Builder builder =
217+
new CloudSqlResourceManager.Builder(TEST_ID) {
218+
@Override
219+
public @NonNull CloudSqlResourceManager build() {
220+
return new MockCloudSqlResourceManager(this);
221+
}
222+
223+
@Override
224+
protected void configurePort() {
225+
this.setPort(1234);
226+
}
227+
};
228+
229+
com.google.auth.oauth2.GoogleCredentials credentials =
230+
org.mockito.Mockito.mock(com.google.auth.oauth2.GoogleCredentials.class);
231+
builder
232+
.setProjectId("test-project")
233+
.setRegion("test-region")
234+
.setCredentials(credentials)
235+
.setHost(HOST)
236+
.setPort(Integer.parseInt(PORT));
237+
238+
MockCloudSqlResourceManager manager = (MockCloudSqlResourceManager) builder.build();
239+
240+
assertThat(manager.projectId).isEqualTo("test-project");
241+
assertThat(manager.region).isEqualTo("test-region");
242+
assertThat(manager.credentials).isEqualTo(credentials);
243+
}
244+
186245
/*
187246
* Currently only supports static Cloud SQL instance which means jdbc port uses system property.
188247
*/

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@
9696
<truth.version>1.4.5</truth.version>
9797
<netty.version>4.2.12.Final</netty.version>
9898
<zookeeper.version>3.9.5</zookeeper.version>
99+
<sqladmin-api.version>v1beta4-rev20240115-2.0.0</sqladmin-api.version>
99100

100101
<!-- Drop pinned version once maven-dependency-plugin gets past plexus-archiver 4.8.0 -->
101102
<plexus-archiver.version>4.8.0</plexus-archiver.version>

v2/sourcedb-to-spanner/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@
103103
<version>${project.version}</version>
104104
<scope>test</scope>
105105
</dependency>
106+
<dependency>
107+
<groupId>com.google.apis</groupId>
108+
<artifactId>google-api-services-sqladmin</artifactId>
109+
<version>${sqladmin-api.version}</version>
110+
<scope>test</scope>
111+
</dependency>
106112
<dependency>
107113
<groupId>org.apache.beam</groupId>
108114
<artifactId>beam-it-jdbc</artifactId>

0 commit comments

Comments
 (0)