Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,9 @@
import com.google.api.gax.rpc.NotFoundException;
import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClient;
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient;
import com.google.cloud.bigtable.admin.v2.models.CreateInstanceRequest;
import com.google.cloud.bigtable.admin.v2.models.CreateMaterializedViewRequest;
import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest;
import com.google.cloud.bigtable.admin.v2.models.MaterializedView;
import com.google.cloud.bigtable.admin.v2.models.StorageType;
import com.google.cloud.bigtable.admin.v2.models.Table;
import com.google.cloud.bigtable.admin.v2.models.UpdateMaterializedViewRequest;
import com.google.cloud.bigtable.test_helpers.env.EmulatorEnv;
Expand All @@ -38,7 +36,6 @@
import java.io.IOException;
import java.util.List;
import java.util.logging.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
Expand All @@ -55,9 +52,8 @@ public class BigtableMaterializedViewIT {
private static final int[] BACKOFF_DURATION = {2, 4, 8, 16, 32, 64, 128, 256, 512, 1024};

private BigtableInstanceAdminClient client;
private BigtableTableAdminClient tableAdminClient;
private Table testTable;
private String instanceId = "";
private String instanceId = testEnvRule.env().getInstanceId();

// TODO: Update this test once emulator supports InstanceAdmin operation
// https://github.com/googleapis/google-cloud-go/issues/1069
Expand All @@ -72,23 +68,7 @@ public static void validatePlatform() throws IOException {
@Before
public void setUp() throws InterruptedException, IOException {
client = testEnvRule.env().getInstanceAdminClient();

instanceId = new PrefixGenerator().newPrefix();
client.createInstance(
CreateInstanceRequest.of(instanceId)
.setDisplayName("BigtableMaterializedViewIT")
.addCluster(
instanceId + "-c1", testEnvRule.env().getPrimaryZone(), 1, StorageType.SSD));
tableAdminClient = testEnvRule.env().getTableAdminClientForInstance(instanceId);

testTable = createTestTable(tableAdminClient);
}

@After
public void deleteInstance() {
if (!instanceId.isEmpty()) {
client.deleteInstance(instanceId);
}
testTable = createTestTable(testEnvRule.env().getTableAdminClient());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,12 @@
import com.google.cloud.bigtable.admin.v2.models.AppProfile;
import com.google.cloud.bigtable.admin.v2.models.Cluster;
import com.google.cloud.bigtable.admin.v2.models.Instance;
import com.google.cloud.bigtable.admin.v2.models.LogicalView;
import com.google.cloud.bigtable.admin.v2.models.MaterializedView;
import com.google.cloud.bigtable.admin.v2.models.Table;
import com.google.cloud.bigtable.admin.v2.models.UpdateAuthorizedViewRequest;
import com.google.cloud.bigtable.admin.v2.models.UpdateLogicalViewRequest;
import com.google.cloud.bigtable.admin.v2.models.UpdateMaterializedViewRequest;
import com.google.cloud.bigtable.admin.v2.models.UpdateTableRequest;
import com.google.common.collect.ImmutableSet;
import java.io.IOException;
Expand Down Expand Up @@ -161,8 +165,6 @@ void cleanUpStale() throws ExecutionException, InterruptedException, IOException
/**
* Clean up AppProfile that were dynamically created in the default instance that have been
* orphaned.
*
* @param stalePrefix
*/
private void cleanupStaleTables(String stalePrefix) {
LOGGER.info("Start cleaning up stale tables with stalePrefix=" + stalePrefix);
Expand Down Expand Up @@ -213,8 +215,6 @@ private void prepTableForDelete(String tableId) {
/**
* Clean up AppProfile that were dynamically created in the default instance that have been
* orphaned.
*
* @param stalePrefix
*/
private void cleanUpStaleAppProfile(String stalePrefix) {
for (AppProfile appProfile :
Expand All @@ -239,8 +239,6 @@ private void cleanUpStaleAppProfile(String stalePrefix) {
/**
* Clean up clusters that were dynamically created in the default instance that have been
* orphaned.
*
* @param stalePrefix
*/
private void cleanUpStaleClusters(String stalePrefix)
throws ExecutionException, InterruptedException {
Expand All @@ -264,11 +262,36 @@ private void cleanUpStaleClusters(String stalePrefix)
}
}

/**
* Clean up dynamically created (non-default) instances that have been orphaned.
*
* @param stalePrefix
*/
private void prepInstanceForDelete(String instanceId) {
if (env() instanceof EmulatorEnv) {
return;
}
// Unprotected MaterializedViews.
for (MaterializedView materializedView :
env().getInstanceAdminClient().listMaterializedViews(instanceId)) {
try {
env()
.getInstanceAdminClient()
.updateMaterializedView(
UpdateMaterializedViewRequest.of(instanceId, materializedView.getId())
.setDeletionProtection(false));
} catch (NotFoundException ignored) {
}
}
// Unprotected LogicalViews.
for (LogicalView logicalView : env().getInstanceAdminClient().listLogicalViews(instanceId)) {
try {
env()
.getInstanceAdminClient()
.updateLogicalView(
UpdateLogicalViewRequest.of(instanceId, logicalView.getId())
.setDeletionProtection(false));
} catch (NotFoundException ignored) {
}
}
}

/** Clean up dynamically created (non-default) instances that have been orphaned. */
private void cleanUpStaleInstances(String stalePrefix)
throws IOException, ExecutionException, InterruptedException {
for (Instance instance : env().getInstanceAdminClient().listInstances()) {
Expand All @@ -279,6 +302,7 @@ private void cleanUpStaleInstances(String stalePrefix)
if (isNewerThanStale) {
continue;
}
prepInstanceForDelete(instance.getId());
try {
deleteInstance(instance.getId());
} catch (NotFoundException ignored) {
Expand Down
Loading