Skip to content

Commit 90a1e4c

Browse files
authored
test: fix flaky tests for FGAC (#1981)
* test: fix flaky tests for FGAC * fix lint * incorporate requested changes * refactoring afterClass
1 parent 8034c67 commit 90a1e4c

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDatabaseRolePermissionTest.java

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.google.cloud.spanner.Database;
2626
import com.google.cloud.spanner.DatabaseAdminClient;
2727
import com.google.cloud.spanner.DatabaseClient;
28+
import com.google.cloud.spanner.DatabaseId;
2829
import com.google.cloud.spanner.ErrorCode;
2930
import com.google.cloud.spanner.IntegrationTestEnv;
3031
import com.google.cloud.spanner.ParallelIntegrationTest;
@@ -35,9 +36,12 @@
3536
import com.google.cloud.spanner.Statement;
3637
import com.google.cloud.spanner.testing.RemoteSpannerHelper;
3738
import com.google.common.collect.ImmutableList;
39+
import java.util.ArrayList;
3840
import java.util.Arrays;
41+
import java.util.List;
3942
import java.util.concurrent.TimeUnit;
40-
import org.junit.Before;
43+
import org.junit.AfterClass;
44+
import org.junit.BeforeClass;
4145
import org.junit.ClassRule;
4246
import org.junit.Test;
4347
import org.junit.experimental.categories.Category;
@@ -49,14 +53,30 @@
4953
@RunWith(JUnit4.class)
5054
public class ITDatabaseRolePermissionTest {
5155
@ClassRule public static IntegrationTestEnv env = new IntegrationTestEnv();
52-
private DatabaseAdminClient dbAdminClient;
53-
private RemoteSpannerHelper testHelper;
56+
private static DatabaseAdminClient dbAdminClient;
57+
private static RemoteSpannerHelper testHelper;
5458

55-
@Before
56-
public void setUp() {
59+
private static List<DatabaseId> databasesToDrop;
60+
61+
@BeforeClass
62+
public static void setUp() {
5763
assumeFalse("Emulator does not support database roles", isUsingEmulator());
5864
testHelper = env.getTestHelper();
5965
dbAdminClient = testHelper.getClient().getDatabaseAdminClient();
66+
databasesToDrop = new ArrayList<>();
67+
}
68+
69+
@AfterClass
70+
public static void cleanup() throws Exception {
71+
if (databasesToDrop != null) {
72+
for (DatabaseId id : databasesToDrop) {
73+
try {
74+
dbAdminClient.dropDatabase(id.getInstanceId().getInstance(), id.getDatabase());
75+
} catch (Exception e) {
76+
System.err.println("Failed to drop database " + id + ", skipping...: " + e.getMessage());
77+
}
78+
}
79+
}
6080
}
6181

6282
@Test
@@ -84,7 +104,6 @@ public void grantAndRevokeDatabaseRolePermissions() throws Exception {
84104

85105
Spanner spanner = options.getService();
86106
DatabaseClient dbClient = spanner.getDatabaseClient(createdDatabase.getId());
87-
DatabaseAdminClient dbAdminClient = spanner.getDatabaseAdminClient();
88107

89108
// Test SELECT permissions to role dbRoleParent on table T.
90109
// Query using dbRoleParent should return result.
@@ -103,7 +122,7 @@ public void grantAndRevokeDatabaseRolePermissions() throws Exception {
103122
dbAdminClient
104123
.updateDatabaseDdl(
105124
instanceId, databaseId, Arrays.asList(revokeSelectOnTableFromParent), null)
106-
.get();
125+
.get(5, TimeUnit.MINUTES);
107126

108127
// Test SELECT permissions to role dbRoleParent on table T.
109128
// Query using dbRoleParent should return PermissionDeniedException.
@@ -118,7 +137,8 @@ public void grantAndRevokeDatabaseRolePermissions() throws Exception {
118137
final String dropRoleParent = String.format("DROP ROLE %s", dbRoleParent);
119138
dbAdminClient
120139
.updateDatabaseDdl(instanceId, databaseId, Arrays.asList(dropTableT, dropRoleParent), null)
121-
.get();
140+
.get(5, TimeUnit.MINUTES);
141+
databasesToDrop.add(createdDatabase.getId());
122142
}
123143

124144
@Test
@@ -141,7 +161,6 @@ public void roleWithNoPermissions() throws Exception {
141161

142162
Spanner spanner = options.getService();
143163
DatabaseClient dbClient = spanner.getDatabaseClient(createdDatabase.getId());
144-
DatabaseAdminClient dbAdminClient = spanner.getDatabaseAdminClient();
145164

146165
// Test SELECT permissions to role dbRoleOrphan on table T.
147166
// Query using dbRoleOrphan should return PermissionDeniedException.
@@ -156,6 +175,7 @@ public void roleWithNoPermissions() throws Exception {
156175
final String dropRoleParent = String.format("DROP ROLE %s", dbRoleOrphan);
157176
dbAdminClient
158177
.updateDatabaseDdl(instanceId, databaseId, Arrays.asList(dropTableT, dropRoleParent), null)
159-
.get();
178+
.get(5, TimeUnit.MINUTES);
179+
databasesToDrop.add(createdDatabase.getId());
160180
}
161181
}

0 commit comments

Comments
 (0)