2727import com .google .cloud .bigtable .admin .v2 .models .CreateClusterRequest ;
2828import com .google .cloud .bigtable .admin .v2 .models .CreateInstanceRequest ;
2929import com .google .cloud .bigtable .admin .v2 .models .Instance ;
30+ import com .google .cloud .bigtable .admin .v2 .models .Instance .Type ;
3031import com .google .cloud .bigtable .admin .v2 .models .StorageType ;
3132import com .google .cloud .bigtable .admin .v2 .models .UpdateAppProfileRequest ;
3233import com .google .cloud .bigtable .admin .v2 .models .UpdateInstanceRequest ;
@@ -110,18 +111,18 @@ public void iamUpdateTest() {
110111 assertThat (permissions ).hasSize (2 );
111112 }
112113
114+ /** To optimize test run time, instance & cluster creation is tested at the same time */
113115 @ Test
114- public void instanceCreationDeletionTest () {
116+ public void instanceAndClusterCreationDeletionTest () {
115117 String newInstanceId = AbstractTestEnv .TEST_INSTANCE_PREFIX + Instant .now ().getEpochSecond ();
116118 String newClusterId = newInstanceId + "-c1" ;
117119
118120 client .createInstance (
119121 CreateInstanceRequest .of (newInstanceId )
120- .addDevelopmentCluster (
121- newClusterId , testEnvRule .env ().getPrimaryZone (), StorageType .SSD )
122+ .addCluster (newClusterId , testEnvRule .env ().getPrimaryZone (), 3 , StorageType .SSD )
122123 .setDisplayName ("Fresh-Instance-Name" )
123124 .addLabel ("state" , "readytodelete" )
124- .setType (Instance . Type .DEVELOPMENT ));
125+ .setType (Type .PRODUCTION ));
125126
126127 try {
127128 assertThat (client .exists (newInstanceId )).isTrue ();
@@ -134,6 +135,8 @@ public void instanceCreationDeletionTest() {
134135
135136 assertThat (client .listInstances ()).contains (instance );
136137
138+ clusterCreationDeletionTestHelper (newInstanceId );
139+
137140 client .deleteInstance (newInstanceId );
138141 assertThat (client .exists (newInstanceId )).isFalse ();
139142 } finally {
@@ -143,29 +146,25 @@ public void instanceCreationDeletionTest() {
143146 }
144147 }
145148
146- @ Test
147- public void clusterCreationDeletionTest () {
148- Instance currentInstance = client .getInstance (instanceId );
149- assume ()
150- .withMessage ("cluster replication test can only run on PRODUCTION instance" )
151- .that (currentInstance .getType ())
152- .isEqualTo (Instance .Type .PRODUCTION );
153-
149+ // To improve test runtime, piggyback off the instance creation/deletion test's fresh instance.
150+ // This will avoid the need to copy any existing tables and will also reduce flakiness in case a
151+ // previous run failed to clean up a cluster in the secondary zone.
152+ public void clusterCreationDeletionTestHelper (String newInstanceId ) {
154153 String newClusterId = AbstractTestEnv .TEST_CLUSTER_PREFIX + Instant .now ().getEpochSecond ();
155154 boolean isClusterDeleted = false ;
156155 client .createCluster (
157- CreateClusterRequest .of (instanceId , newClusterId )
156+ CreateClusterRequest .of (newInstanceId , newClusterId )
158157 .setZone (testEnvRule .env ().getSecondaryZone ())
159158 .setStorageType (StorageType .SSD )
160159 .setServeNodes (3 ));
161160 try {
162- assertThat (client .getCluster (instanceId , newClusterId )).isNotNull ();
161+ assertThat (client .getCluster (newInstanceId , newClusterId )).isNotNull ();
163162
164- client .deleteCluster (instanceId , newClusterId );
163+ client .deleteCluster (newInstanceId , newClusterId );
165164 isClusterDeleted = true ;
166165 } finally {
167166 if (!isClusterDeleted ) {
168- client .deleteCluster (instanceId , newClusterId );
167+ client .deleteCluster (newInstanceId , newClusterId );
169168 }
170169 }
171170 }
@@ -203,7 +202,8 @@ public void basicClusterOperationTest() {
203202 Cluster resizeCluster = client .resizeCluster (instanceId , clusterId , freshNumOfNodes );
204203 assertThat (resizeCluster .getServeNodes ()).isEqualTo (freshNumOfNodes );
205204
206- assertThat (client .resizeCluster (instanceId , clusterId , existingClusterNodeSize ))
205+ assertThat (
206+ client .resizeCluster (instanceId , clusterId , existingClusterNodeSize ).getServeNodes ())
207207 .isEqualTo (existingClusterNodeSize );
208208 }
209209 }
0 commit comments