Skip to content

Commit 4d821f8

Browse files
authoredOct 23, 2020
feat: Implement toString for Bigtable*Settings (#488)
* test: Refactor tests to extract common setup logic * test: minor fix
1 parent adefcc0 commit 4d821f8

File tree

8 files changed

+355
-0
lines changed

8 files changed

+355
-0
lines changed
 

‎google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettings.java

+34
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import com.google.api.gax.core.CredentialsProvider;
2121
import com.google.cloud.bigtable.admin.v2.stub.BigtableInstanceAdminStubSettings;
22+
import com.google.common.base.MoreObjects;
2223
import com.google.common.base.Preconditions;
2324
import com.google.common.base.Verify;
2425
import java.io.IOException;
@@ -74,6 +75,39 @@ public BigtableInstanceAdminStubSettings getStubSettings() {
7475
return stubSettings;
7576
}
7677

78+
@Override
79+
public String toString() {
80+
return MoreObjects.toStringHelper(this)
81+
.add("projectId", projectId)
82+
.add("createInstanceSettings", stubSettings.createInstanceSettings())
83+
.add("createInstanceOperationSettings", stubSettings.createInstanceOperationSettings())
84+
.add("getInstanceSettings", stubSettings.getInstanceSettings())
85+
.add("listInstancesSettings", stubSettings.listInstancesSettings())
86+
.add("partialUpdateInstanceSettings", stubSettings.partialUpdateInstanceSettings())
87+
.add(
88+
"partialUpdateInstanceOperationSettings",
89+
stubSettings.partialUpdateInstanceOperationSettings())
90+
.add("deleteInstanceSettings", stubSettings.deleteInstanceSettings())
91+
.add("createClusterSettings", stubSettings.createClusterSettings())
92+
.add("createClusterOperationSettings", stubSettings.createClusterOperationSettings())
93+
.add("getClusterSettings", stubSettings.getClusterSettings())
94+
.add("listClustersSettings", stubSettings.listClustersSettings())
95+
.add("updateClusterSettings", stubSettings.updateClusterSettings())
96+
.add("updateClusterOperationSettings", stubSettings.updateClusterOperationSettings())
97+
.add("deleteClusterSettings", stubSettings.deleteClusterSettings())
98+
.add("createAppProfileSettings", stubSettings.createAppProfileSettings())
99+
.add("getAppProfileSettings", stubSettings.getAppProfileSettings())
100+
.add("listAppProfilesSettings", stubSettings.listAppProfilesSettings())
101+
.add("updateAppProfileSettings", stubSettings.updateAppProfileSettings())
102+
.add("updateAppProfileOperationSettings", stubSettings.updateAppProfileOperationSettings())
103+
.add("deleteAppProfileSettings", stubSettings.deleteAppProfileSettings())
104+
.add("getIamPolicySettings", stubSettings.getIamPolicySettings())
105+
.add("setIamPolicySettings", stubSettings.setIamPolicySettings())
106+
.add("testIamPermissionsSettings", stubSettings.testIamPermissionsSettings())
107+
.add("stubSettings", stubSettings)
108+
.toString();
109+
}
110+
77111
/** Returns a builder containing all the values of this settings class. */
78112
public Builder toBuilder() {
79113
return new Builder(this);

‎google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettings.java

+38
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.google.api.gax.core.NoCredentialsProvider;
2121
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
2222
import com.google.cloud.bigtable.admin.v2.stub.BigtableTableAdminStubSettings;
23+
import com.google.common.base.MoreObjects;
2324
import com.google.common.base.Preconditions;
2425
import com.google.common.base.Strings;
2526
import com.google.common.base.Verify;
@@ -85,6 +86,43 @@ public BigtableTableAdminStubSettings getStubSettings() {
8586
return stubSettings;
8687
}
8788

89+
@Override
90+
public String toString() {
91+
return MoreObjects.toStringHelper(this)
92+
.add("projectId", projectId)
93+
.add("instanceId", instanceId)
94+
.add("createTableSettings", stubSettings.createTableSettings())
95+
.add("createTableFromSnapshotSettings", stubSettings.createTableFromSnapshotSettings())
96+
.add(
97+
"createTableFromSnapshotOperationSettings",
98+
stubSettings.createTableFromSnapshotOperationSettings())
99+
.add("listTablesSettings", stubSettings.listTablesSettings())
100+
.add("getTableSettings", stubSettings.getTableSettings())
101+
.add("deleteTableSettings", stubSettings.deleteTableSettings())
102+
.add("modifyColumnFamiliesSettings", stubSettings.modifyColumnFamiliesSettings())
103+
.add("dropRowRangeSettings", stubSettings.dropRowRangeSettings())
104+
.add("generateConsistencyTokenSettings", stubSettings.generateConsistencyTokenSettings())
105+
.add("checkConsistencySettings", stubSettings.checkConsistencySettings())
106+
.add("getIamPolicySettings", stubSettings.getIamPolicySettings())
107+
.add("setIamPolicySettings", stubSettings.setIamPolicySettings())
108+
.add("testIamPermissionsSettings", stubSettings.testIamPermissionsSettings())
109+
.add("snapshotTableSettings", stubSettings.snapshotTableSettings())
110+
.add("snapshotTableOperationSettings", stubSettings.snapshotTableOperationSettings())
111+
.add("getSnapshotSettings", stubSettings.getSnapshotSettings())
112+
.add("listSnapshotsSettings", stubSettings.listSnapshotsSettings())
113+
.add("deleteSnapshotSettings", stubSettings.deleteSnapshotSettings())
114+
.add("createBackupSettings", stubSettings.createBackupSettings())
115+
.add("createBackupOperationSettings", stubSettings.createBackupOperationSettings())
116+
.add("getBackupSettings", stubSettings.getBackupSettings())
117+
.add("listBackupsSettings", stubSettings.listBackupsSettings())
118+
.add("updateBackupSettings", stubSettings.updateBackupSettings())
119+
.add("deleteBackupSettings", stubSettings.deleteBackupSettings())
120+
.add("restoreTableSettings", stubSettings.restoreTableSettings())
121+
.add("restoreTableOperationSettings", stubSettings.restoreTableOperationSettings())
122+
.add("stubSettings", stubSettings)
123+
.toString();
124+
}
125+
88126
/** Returns a builder containing all the values of this settings class. */
89127
public Builder toBuilder() {
90128
return new Builder(this);

‎google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java

+6
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.google.cloud.bigtable.data.v2.models.Query;
2525
import com.google.cloud.bigtable.data.v2.models.Row;
2626
import com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStubSettings;
27+
import com.google.common.base.MoreObjects;
2728
import com.google.common.base.Strings;
2829
import io.grpc.ManagedChannelBuilder;
2930
import java.util.List;
@@ -215,6 +216,11 @@ public UnaryCallSettings<Query, Row> readRowSettings() {
215216
return stubSettings.readRowSettings();
216217
}
217218

219+
@Override
220+
public String toString() {
221+
return MoreObjects.toStringHelper(this).add("stubSettings", stubSettings).toString();
222+
}
223+
218224
/** Returns a builder containing all the values of this settings class. */
219225
public Builder toBuilder() {
220226
return new Builder(this);

‎google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java

+21
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import com.google.cloud.bigtable.data.v2.models.RowMutation;
4141
import com.google.cloud.bigtable.data.v2.stub.mutaterows.MutateRowsBatchingDescriptor;
4242
import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsBatchingDescriptor;
43+
import com.google.common.base.MoreObjects;
4344
import com.google.common.base.Preconditions;
4445
import com.google.common.collect.ImmutableList;
4546
import com.google.common.collect.ImmutableMap;
@@ -811,4 +812,24 @@ public EnhancedBigtableStubSettings build() {
811812
}
812813
// </editor-fold>
813814
}
815+
816+
@Override
817+
public String toString() {
818+
return MoreObjects.toStringHelper(this)
819+
.add("projectId", projectId)
820+
.add("instanceId", instanceId)
821+
.add("appProfileId", appProfileId)
822+
.add("isRefreshingChannel", isRefreshingChannel)
823+
.add("primedTableIds", primedTableIds)
824+
.add("readRowsSettings", readRowsSettings)
825+
.add("readRowSettings", readRowSettings)
826+
.add("sampleRowKeysSettings", sampleRowKeysSettings)
827+
.add("mutateRowSettings", mutateRowSettings)
828+
.add("bulkMutateRowsSettings", bulkMutateRowsSettings)
829+
.add("bulkReadRowsSettings", bulkReadRowsSettings)
830+
.add("checkAndMutateRowSettings", checkAndMutateRowSettings)
831+
.add("readModifyWriteRowSettings", readModifyWriteRowSettings)
832+
.add("parent", super.toString())
833+
.toString();
834+
}
814835
}

‎google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettingsTest.java

+62
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@
1818
import static com.google.common.truth.Truth.assertThat;
1919

2020
import com.google.api.gax.core.CredentialsProvider;
21+
import com.google.api.gax.retrying.RetrySettings;
2122
import com.google.api.gax.rpc.StatusCode.Code;
23+
import com.google.cloud.bigtable.admin.v2.stub.BigtableInstanceAdminStubSettings;
2224
import java.io.IOException;
2325
import org.junit.Test;
2426
import org.junit.runner.RunWith;
2527
import org.junit.runners.JUnit4;
2628
import org.mockito.Mockito;
29+
import org.threeten.bp.Duration;
2730

2831
@RunWith(JUnit4.class)
2932
public class BigtableInstanceAdminSettingsTest {
@@ -95,4 +98,63 @@ public void testStubSettings() throws IOException {
9598
.getRetryableCodes())
9699
.containsExactly(Code.INVALID_ARGUMENT);
97100
}
101+
102+
static final String[] SETTINGS_LIST = {
103+
"createInstanceSettings",
104+
"createInstanceOperationSettings",
105+
"getInstanceSettings",
106+
"listInstancesSettings",
107+
"partialUpdateInstanceSettings",
108+
"partialUpdateInstanceOperationSettings",
109+
"deleteInstanceSettings",
110+
"createClusterSettings",
111+
"createClusterOperationSettings",
112+
"getClusterSettings",
113+
"listClustersSettings",
114+
"updateClusterSettings",
115+
"updateClusterOperationSettings",
116+
"deleteClusterSettings",
117+
"createAppProfileSettings",
118+
"getAppProfileSettings",
119+
"listAppProfilesSettings",
120+
"updateAppProfileSettings",
121+
"updateAppProfileOperationSettings",
122+
"deleteAppProfileSettings",
123+
"getIamPolicySettings",
124+
"setIamPolicySettings",
125+
"testIamPermissionsSettings",
126+
};
127+
128+
@Test
129+
public void testToString() throws IOException {
130+
BigtableInstanceAdminSettings defaultSettings =
131+
BigtableInstanceAdminSettings.newBuilder().setProjectId("our-project-212").build();
132+
133+
checkToString(defaultSettings);
134+
135+
BigtableInstanceAdminSettings.Builder builder = defaultSettings.toBuilder();
136+
BigtableInstanceAdminStubSettings.Builder stubSettings =
137+
builder.stubSettings().setEndpoint("example.com:1234");
138+
139+
stubSettings
140+
.getInstanceSettings()
141+
.setRetrySettings(
142+
RetrySettings.newBuilder().setTotalTimeout(Duration.ofMinutes(812)).build());
143+
144+
BigtableInstanceAdminSettings settings = builder.build();
145+
checkToString(settings);
146+
assertThat(settings.toString()).contains("endpoint=example.com:1234");
147+
assertThat(settings.toString()).contains("totalTimeout=PT13H32M");
148+
}
149+
150+
void checkToString(BigtableInstanceAdminSettings settings) {
151+
String projectId = settings.getProjectId();
152+
String toString = settings.toString();
153+
assertThat(toString).isEqualTo(settings.toString()); // no variety
154+
assertThat(toString).startsWith("BigtableInstanceAdminSettings{projectId=" + projectId);
155+
for (String subSettings : SETTINGS_LIST) {
156+
assertThat(toString).contains(subSettings + "=");
157+
}
158+
assertThat(toString.contains(settings.getStubSettings().toString()));
159+
}
98160
}

‎google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettingsTest.java

+84
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,17 @@
1818
import static com.google.common.truth.Truth.assertThat;
1919

2020
import com.google.api.gax.core.CredentialsProvider;
21+
import com.google.api.gax.retrying.RetrySettings;
2122
import com.google.api.gax.rpc.StatusCode.Code;
23+
import com.google.cloud.bigtable.admin.v2.stub.BigtableTableAdminStubSettings;
2224
import java.io.IOException;
25+
import java.lang.reflect.Field;
26+
import java.lang.reflect.Modifier;
2327
import org.junit.Test;
2428
import org.junit.runner.RunWith;
2529
import org.junit.runners.JUnit4;
2630
import org.mockito.Mockito;
31+
import org.threeten.bp.Duration;
2732

2833
@RunWith(JUnit4.class)
2934
public class BigtableTableAdminSettingsTest {
@@ -97,4 +102,83 @@ public void testStubSettings() throws IOException {
97102
.getRetryableCodes())
98103
.containsExactly(Code.INVALID_ARGUMENT);
99104
}
105+
106+
static final String[] SETTINGS_LIST = {
107+
"createTableSettings",
108+
"createTableFromSnapshotSettings",
109+
"createTableFromSnapshotOperationSettings",
110+
"listTablesSettings",
111+
"getTableSettings",
112+
"deleteTableSettings",
113+
"modifyColumnFamiliesSettings",
114+
"dropRowRangeSettings",
115+
"generateConsistencyTokenSettings",
116+
"checkConsistencySettings",
117+
"getIamPolicySettings",
118+
"setIamPolicySettings",
119+
"testIamPermissionsSettings",
120+
"snapshotTableSettings",
121+
"snapshotTableOperationSettings",
122+
"getSnapshotSettings",
123+
"listSnapshotsSettings",
124+
"deleteSnapshotSettings",
125+
"createBackupSettings",
126+
"createBackupOperationSettings",
127+
"getBackupSettings",
128+
"listBackupsSettings",
129+
"updateBackupSettings",
130+
"deleteBackupSettings",
131+
"restoreTableSettings",
132+
"restoreTableOperationSettings",
133+
};
134+
135+
@Test
136+
public void testToString() throws IOException {
137+
BigtableTableAdminSettings defaultSettings =
138+
BigtableTableAdminSettings.newBuilder()
139+
.setProjectId("our-project-85")
140+
.setInstanceId("our-instance-06")
141+
.build();
142+
143+
checkToString(defaultSettings);
144+
145+
BigtableTableAdminSettings.Builder builder = defaultSettings.toBuilder();
146+
BigtableTableAdminStubSettings.Builder stubSettings =
147+
builder.stubSettings().setEndpoint("example.com:1234");
148+
149+
stubSettings
150+
.getBackupSettings()
151+
.setRetrySettings(
152+
RetrySettings.newBuilder().setTotalTimeout(Duration.ofMinutes(812)).build());
153+
154+
BigtableTableAdminSettings settings = builder.build();
155+
checkToString(settings);
156+
assertThat(defaultSettings.toString()).doesNotContain("endpoint=example.com:1234");
157+
assertThat(settings.toString()).contains("endpoint=example.com:1234");
158+
assertThat(defaultSettings.toString()).doesNotContain("totalTimeout=PT13H32M");
159+
assertThat(settings.toString()).contains("totalTimeout=PT13H32M");
160+
161+
int nonStaticFields = 0;
162+
for (Field field : BigtableTableAdminStubSettings.class.getDeclaredFields()) {
163+
if (!Modifier.isStatic(field.getModifiers())) {
164+
nonStaticFields++;
165+
}
166+
}
167+
// failure will signal about adding a new settings property
168+
assertThat(SETTINGS_LIST.length).isEqualTo(nonStaticFields);
169+
}
170+
171+
void checkToString(BigtableTableAdminSettings settings) {
172+
String projectId = settings.getProjectId();
173+
String instanceId = settings.getInstanceId();
174+
String toString = settings.toString();
175+
assertThat(toString).isEqualTo(settings.toString()); // no variety
176+
assertThat(toString)
177+
.startsWith(
178+
"BigtableTableAdminSettings{projectId=" + projectId + ", instanceId=" + instanceId);
179+
for (String subSettings : SETTINGS_LIST) {
180+
assertThat(toString).contains(subSettings + "=");
181+
}
182+
assertThat(toString.contains(settings.getStubSettings().toString()));
183+
}
100184
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright 2020 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.google.cloud.bigtable.data.v2;
17+
18+
import static com.google.common.truth.Truth.assertThat;
19+
20+
import com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStubSettings;
21+
import org.junit.Test;
22+
23+
public class BigtableDataSettingsTest {
24+
25+
@Test
26+
public void testToString() {
27+
BigtableDataSettings settings =
28+
BigtableDataSettings.newBuilder()
29+
.setProjectId("our-project-2-12")
30+
.setInstanceId("our-instance-85")
31+
.setAppProfileId("our-appProfile-06")
32+
.build();
33+
EnhancedBigtableStubSettings stubSettings = settings.getStubSettings();
34+
assertThat(settings.toString())
35+
.isEqualTo("BigtableDataSettings{stubSettings=" + stubSettings.toString() + "}");
36+
}
37+
}

0 commit comments

Comments
 (0)