Skip to content

Commit

Permalink
test: add CUD instance config integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rajatbhatta committed Mar 24, 2022
1 parent ec44bd5 commit 7fa5ef4
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
* Copyright 2022 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.example.spanner;

import static org.junit.Assert.assertTrue;
import org.junit.Test;

public class CreateUpdateDeleteInstanceConfigSampleIT extends SampleTestBase {

@Test
public void testCreateUpdateDeleteInstanceConfig() throws Exception {
String customInstanceConfigId = idGenerator.generateInstanceConfigId();

// Create a random instance config. Display name is set to the instance config id in sample.
final String out1 = SampleRunner.runSample(() ->
CreateInstanceConfigSample.createInstanceConfig(projectId, instanceConfigIdCmmr, customInstanceConfigId)
);
assertTrue(
"Expected instance config " + customInstanceConfigId + " to be created."
+ " Output received was " + out1,
out1.contains(customInstanceConfigId)
);

// Update display name to a randomly generated instance config id.
String newDisplayName = idGenerator.generateInstanceConfigId();
final String out2 = SampleRunner.runSample(() ->
UpdateInstanceConfigSample.updateInstanceConfig(projectId, customInstanceConfigId, newDisplayName)
);
assertTrue(
"Expected display name to be updated from" + customInstanceConfigId + " to " + newDisplayName
+ " for instance config " + customInstanceConfigId + "."
+ " Output received was " + out2,
out2.contains(newDisplayName)
);

// Delete the created instance config.
final String out3 = SampleRunner.runSample(() ->
DeleteInstanceConfigSample.deleteInstanceConfig(projectId, customInstanceConfigId)
);
assertTrue(
"Expected instance config " + customInstanceConfigId + " to be deleted."
+ " Output received was " + out3,
out3.contains(customInstanceConfigId)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,21 @@ public class SampleIdGenerator {

private static final int DATABASE_NAME_MAX_LENGTH = 30;
private static final int BACKUP_NAME_MAX_LENGTH = 30;
private static final int INSTANCE_CONFIG_ID_MAX_LENGTH = 30;
private final List<String> databaseIds;
private final List<String> backupIds;
private final List<String> instanceConfigIds;
private final String baseDatabaseId;
private final String baseBackupId;
private final String baseInstanceConfigId;

public SampleIdGenerator(String baseDatabaseId, String baseBackupId) {
public SampleIdGenerator(String baseDatabaseId, String baseBackupId, String baseInstanceConfigId) {
this.baseDatabaseId = baseDatabaseId;
this.baseBackupId = baseBackupId;
this.baseInstanceConfigId = baseInstanceConfigId;
this.databaseIds = new ArrayList<>();
this.backupIds = new ArrayList<>();
this.instanceConfigIds = new ArrayList<>();
}

public String generateDatabaseId() {
Expand All @@ -62,11 +67,27 @@ public String generateBackupId() {
return databaseId;
}

public String generateInstanceConfigId() {
final String instanceConfigId = (
"custom-"
+ baseInstanceConfigId
+ "-"
+ UUID.randomUUID().toString().replaceAll("-", "")
).substring(0, INSTANCE_CONFIG_ID_MAX_LENGTH);

instanceConfigIds.add(instanceConfigId);
return instanceConfigId;
}

public List<String> getDatabaseIds() {
return databaseIds;
}

public List<String> getBackupIds() {
return backupIds;
}

public List<String> getInstanceConfigIds() {
return instanceConfigIds;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.google.cloud.spanner.InstanceAdminClient;
import com.google.cloud.spanner.Spanner;
import com.google.cloud.spanner.SpannerOptions;
import java.awt.SystemTray;
import org.junit.AfterClass;
import org.junit.BeforeClass;

Expand All @@ -33,6 +34,7 @@ public class SampleTestBase {
"sampledb"
);
private static final String BASE_BACKUP_ID = "samplebk";
private static final String BASE_INSTANCE_CONFIG_ID = "sampleconfig";

protected static Spanner spanner;
protected static DatabaseAdminClient databaseAdminClient;
Expand All @@ -43,19 +45,22 @@ public class SampleTestBase {
System.getProperty("spanner.test.instance.mr");
protected static final String instanceConfigName = System
.getProperty("spanner.test.instance.config");
protected static final String instanceConfigIdCmmr = System
.getProperty("spanner.test.instance.config.cmmr");
protected static SampleIdGenerator idGenerator;

@BeforeClass
public static void beforeClass() {
final SpannerOptions options = SpannerOptions
.newBuilder()
.setHost("https://staging-wrenchworks.sandbox.googleapis.com")
.setAutoThrottleAdministrativeRequests()
.build();
projectId = options.getProjectId();
spanner = options.getService();
databaseAdminClient = spanner.getDatabaseAdminClient();
instanceAdminClient = spanner.getInstanceAdminClient();
idGenerator = new SampleIdGenerator(BASE_DATABASE_ID, BASE_BACKUP_ID);
idGenerator = new SampleIdGenerator(BASE_DATABASE_ID, BASE_BACKUP_ID, BASE_INSTANCE_CONFIG_ID);
}

@AfterClass
Expand Down Expand Up @@ -83,6 +88,16 @@ public static void afterClass() {
);
}
}
for (String configId : idGenerator.getInstanceConfigIds()) {
try {
// If the config is not found, it is ignored (no exception is thrown)
instanceAdminClient.deleteInstanceConfig(configId);
} catch (Exception e) {
System.out.println(
"Failed to delete instance config " + configId + " due to " + e.getMessage() + ", skipping..."
);
}
}
spanner.close();
}
}

0 comments on commit 7fa5ef4

Please sign in to comment.