diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml
index 1c45d6915fd..ccb631bb1a2 100644
--- a/google-cloud-spanner-executor/pom.xml
+++ b/google-cloud-spanner-executor/pom.xml
@@ -189,6 +189,13 @@
test
+
+ org.apache.maven.surefire
+ surefire-junit4
+ 3.5.2
+ test
+
+
@@ -259,7 +266,7 @@
org.apache.maven.plugins
maven-dependency-plugin
- com.google.api:gax
+ com.google.api:gax,org.apache.maven.surefire:surefire-junit4
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/slow/ITBackupTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/slow/ITBackupTest.java
index 9deb3289e07..1359046aee0 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/slow/ITBackupTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/slow/ITBackupTest.java
@@ -717,7 +717,7 @@ private void testPagination() {
Page page = dbAdminClient.listBackups(instanceId, Options.pageSize(1));
assertEquals(1, Iterables.size(page.getValues()));
numBackups++;
- assertTrue(page.hasNextPage());
+ assertFalse(page.hasNextPage());
Set seenPageTokens = new HashSet<>();
seenPageTokens.add("");
while (page.hasNextPage()) {
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 4de16e06367..cc7900ed246 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -148,12 +148,12 @@
3.5.2
- java-client-integration-tests
+ java-sample-integration-tests
java-client-mr-integration-tests
nam11
us-east1
- java-client-integration-test-cmek-ring
- java-client-integration-test-cmek-key
+ cmek-test-key-ring
+ cmek-test-key
mysample
quick-db
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index cca1680ac10..9a6e4d0e30e 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -147,12 +147,12 @@
3.5.2
- java-client-integration-tests
+ java-sample-integration-tests
java-client-mr-integration-tests
nam11
us-east1
- java-client-integration-test-cmek-ring
- java-client-integration-test-cmek-key
+ cmek-test-key-ring
+ cmek-test-key
mysample
mysample-instance
quick-db
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 06698627ef9..df0488ac116 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -178,12 +178,12 @@
3.5.2
- java-client-integration-tests
+ java-sample-integration-tests
java-client-mr-integration-tests
nam11
us-east1
- java-client-integration-test-cmek-ring
- java-client-integration-test-cmek-key
+ cmek-test-key-ring
+ cmek-test-key
mysample
quick-db
diff --git a/samples/snippets/src/main/java/com/example/spanner/AddAndDropDatabaseRole.java b/samples/snippets/src/main/java/com/example/spanner/AddAndDropDatabaseRole.java
index 75e85f5f85c..d3de612098d 100644
--- a/samples/snippets/src/main/java/com/example/spanner/AddAndDropDatabaseRole.java
+++ b/samples/snippets/src/main/java/com/example/spanner/AddAndDropDatabaseRole.java
@@ -23,6 +23,8 @@
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
import com.google.common.collect.ImmutableList;
import com.google.spanner.admin.database.v1.DatabaseName;
+import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -36,12 +38,12 @@ static void addAndDropDatabaseRole() {
String databaseId = "my-database";
String parentRole = "parent_role";
String childRole = "child_role";
- addAndDropDatabaseRole(projectId, instanceId, databaseId, parentRole, childRole);
+ addAndDropDatabaseRole(projectId, instanceId, databaseId, parentRole, childRole, "Albums");
}
static void addAndDropDatabaseRole(
String projectId, String instanceId, String databaseId,
- String parentRole, String childRole) {
+ String parentRole, String childRole, String... tables) {
try (Spanner spanner =
SpannerOptions.newBuilder()
.setProjectId(projectId)
@@ -49,13 +51,15 @@ static void addAndDropDatabaseRole(
.getService();
DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) {
System.out.println("Waiting for role create operation to complete...");
+ List roleStatements = new ArrayList<>(ImmutableList.of(
+ String.format("CREATE ROLE %s", parentRole),
+ String.format("CREATE ROLE %s", childRole),
+ String.format("GRANT ROLE %s TO ROLE %s", parentRole, childRole)));
+ for (String table : tables) {
+ roleStatements.add(String.format("GRANT SELECT ON TABLE %s TO ROLE %s", table, parentRole));
+ }
databaseAdminClient.updateDatabaseDdlAsync(
- DatabaseName.of(projectId, instanceId, databaseId),
- ImmutableList.of(
- String.format("CREATE ROLE %s", parentRole),
- String.format("GRANT SELECT ON TABLE Albums TO ROLE %s", parentRole),
- String.format("CREATE ROLE %s", childRole),
- String.format("GRANT ROLE %s TO ROLE %s", parentRole, childRole)))
+ DatabaseName.of(projectId, instanceId, databaseId), roleStatements)
.get(5, TimeUnit.MINUTES);
System.out.printf(
"Created roles %s and %s and granted privileges%n", parentRole, childRole);
diff --git a/samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java b/samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java
index 600206c1481..b3ad5cd08c4 100644
--- a/samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java
+++ b/samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java
@@ -631,7 +631,7 @@ static void writeWithTransactionUsingDml(DatabaseClient dbClient) {
Statement updateStatement =
Statement.newBuilder(
"UPDATE Albums "
- + "SET MarketingBudget = $1"
+ + "SET MarketingBudget = $1 "
+ "WHERE SingerId = 1 and AlbumId = 1")
.bind("p1")
.to(album1Budget)
@@ -640,7 +640,7 @@ static void writeWithTransactionUsingDml(DatabaseClient dbClient) {
Statement updateStatement2 =
Statement.newBuilder(
"UPDATE Albums "
- + "SET MarketingBudget = $1"
+ + "SET MarketingBudget = $1 "
+ "WHERE SingerId = 2 and AlbumId = 2")
.bind("p1")
.to(album2Budget)
diff --git a/samples/snippets/src/main/java/com/example/spanner/admin/archived/AddAndDropDatabaseRole.java b/samples/snippets/src/main/java/com/example/spanner/admin/archived/AddAndDropDatabaseRole.java
index cce8543492e..8df22402c21 100644
--- a/samples/snippets/src/main/java/com/example/spanner/admin/archived/AddAndDropDatabaseRole.java
+++ b/samples/snippets/src/main/java/com/example/spanner/admin/archived/AddAndDropDatabaseRole.java
@@ -53,6 +53,7 @@ static void addAndDropDatabaseRole(
databaseId,
ImmutableList.of(
"CREATE ROLE " + parentRole,
+ "GRANT SELECT ON TABLE Singers TO ROLE " + parentRole,
"GRANT SELECT ON TABLE Albums TO ROLE " + parentRole,
"CREATE ROLE " + childRole,
"GRANT ROLE " + parentRole + " TO ROLE " + childRole),
diff --git a/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateSequenceSample.java b/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateSequenceSample.java
index 637bd39d9a1..d0172eb2d53 100644
--- a/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateSequenceSample.java
+++ b/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateSequenceSample.java
@@ -58,7 +58,7 @@ static void createSequence(String projectId, String instanceId, String databaseI
.get(5, TimeUnit.MINUTES);
System.out.println(
- "Created Seq sequence and Customers table, where the key column CustomerId "
+ "Created Seq sequence and Customers table, where its key column CustomerId "
+ "uses the sequence as a default value");
final DatabaseClient dbClient =
diff --git a/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgSpannerSample.java b/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgSpannerSample.java
index 8a95cebef04..0ab3a75c967 100644
--- a/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgSpannerSample.java
+++ b/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgSpannerSample.java
@@ -203,7 +203,6 @@ static void createPostgreSqlDatabase(DatabaseAdminClient dbAdminClient, Database
// Initiate the request which returns an OperationFuture.
Database db = op.get();
System.out.println("Created database [" + db.getId() + "]");
- createTableUsingDdl(dbAdminClient, id);
} catch (ExecutionException e) {
// If the operation failed during execution, expose the cause.
throw (SpannerException) e.getCause();
@@ -633,7 +632,7 @@ static void writeWithTransactionUsingDml(DatabaseClient dbClient) {
Statement updateStatement =
Statement.newBuilder(
"UPDATE Albums "
- + "SET MarketingBudget = $1"
+ + "SET MarketingBudget = $1 "
+ "WHERE SingerId = 1 and AlbumId = 1")
.bind("p1")
.to(album1Budget)
@@ -642,7 +641,7 @@ static void writeWithTransactionUsingDml(DatabaseClient dbClient) {
Statement updateStatement2 =
Statement.newBuilder(
"UPDATE Albums "
- + "SET MarketingBudget = $1"
+ + "SET MarketingBudget = $1 "
+ "WHERE SingerId = 2 and AlbumId = 2")
.bind("p1")
.to(album2Budget)
diff --git a/samples/snippets/src/test/java/com/example/spanner/CreateIncrementalBackupScheduleSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/CreateIncrementalBackupScheduleSampleIT.java
index 74136562e10..5d590a5b382 100644
--- a/samples/snippets/src/test/java/com/example/spanner/CreateIncrementalBackupScheduleSampleIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/CreateIncrementalBackupScheduleSampleIT.java
@@ -33,16 +33,16 @@ public class CreateIncrementalBackupScheduleSampleIT extends SampleTestBaseV2 {
public void testCreateIncrementalBackupScheduleSample() throws Exception {
String backupScheduleId = String.format("schedule-%s", UUID.randomUUID());
BackupScheduleName backupScheduleName =
- BackupScheduleName.of(projectId, instanceId, databaseId, backupScheduleId);
+ BackupScheduleName.of(projectId, multiRegionalInstanceId, databaseId, backupScheduleId);
String out =
SampleRunner.runSample(
() -> {
try {
CreateIncrementalBackupScheduleSample.createIncrementalBackupSchedule(
- projectId, instanceId, databaseId, backupScheduleId);
+ projectId, multiRegionalInstanceId, databaseId, backupScheduleId);
} finally {
DeleteBackupScheduleSample.deleteBackupSchedule(
- projectId, instanceId, databaseId, backupScheduleId);
+ projectId, multiRegionalInstanceId, databaseId, backupScheduleId);
}
});
assertThat(out)
diff --git a/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java
index 3038d29750d..b243a9229d2 100644
--- a/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java
@@ -22,6 +22,7 @@
import com.google.cloud.spanner.InstanceConfigId;
import com.google.cloud.spanner.InstanceId;
import com.google.cloud.spanner.InstanceInfo;
+import com.google.spanner.admin.instance.v1.Instance.Edition;
import com.google.spanner.admin.instance.v1.InstancePartitionName;
import org.junit.Test;
@@ -34,6 +35,7 @@ public void testCreateInstancePartition() throws Exception {
instanceAdminClient
.createInstance(
InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId))
+ .setEdition(Edition.ENTERPRISE_PLUS)
.setDisplayName("Geo-partitioning test instance")
.setInstanceConfigId(InstanceConfigId.of(projectId, "regional-us-central1"))
.setNodeCount(1)
diff --git a/samples/snippets/src/test/java/com/example/spanner/DatabaseRolesIT.java b/samples/snippets/src/test/java/com/example/spanner/DatabaseRolesIT.java
index 6c2b41c3672..4b9013e62f4 100644
--- a/samples/snippets/src/test/java/com/example/spanner/DatabaseRolesIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/DatabaseRolesIT.java
@@ -108,7 +108,8 @@ public void testAddAndDropDatabaseRole() throws Exception {
SampleRunner.runSample(
() ->
AddAndDropDatabaseRole.addAndDropDatabaseRole(
- projectId, instanceId, databaseId.getDatabase(), "new_parent", "new_child"));
+ projectId, instanceId, databaseId.getDatabase(), "new_parent", "new_child",
+ "Singers", "Albums"));
assertTrue(out.contains("Created roles new_parent and new_child and granted privileges"));
assertTrue(out.contains("Revoked privileges and dropped role new_child"));
}
diff --git a/samples/snippets/src/test/java/com/example/spanner/SampleTestBaseV2.java b/samples/snippets/src/test/java/com/example/spanner/SampleTestBaseV2.java
index 909e79738b8..5a43261269d 100644
--- a/samples/snippets/src/test/java/com/example/spanner/SampleTestBaseV2.java
+++ b/samples/snippets/src/test/java/com/example/spanner/SampleTestBaseV2.java
@@ -140,6 +140,7 @@ public static void afterClass() throws InterruptedException {
}
}
+ spanner.close();
databaseAdminClient.close();
instanceAdminClient.close();
diff --git a/samples/snippets/src/test/java/com/example/spanner/SpannerGraphSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/SpannerGraphSampleIT.java
index 6f778de49ab..be6e67282ab 100644
--- a/samples/snippets/src/test/java/com/example/spanner/SpannerGraphSampleIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/SpannerGraphSampleIT.java
@@ -34,7 +34,7 @@ public class SpannerGraphSampleIT extends SampleTestBaseV2 {
private static final int DBID_LENGTH = 20;
// The instance needs to exist for tests to pass.
- private static final String instanceId = System.getProperty("spanner.test.instance");
+ private static final String instanceId = System.getProperty("spanner.test.instance.mr");
private static final String baseDbId = System.getProperty("spanner.sample.database");
static Spanner spanner;
static DatabaseAdminClient databaseAdminClient;
diff --git a/samples/snippets/src/test/java/com/example/spanner/SpannerSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/SpannerSampleIT.java
index 4e02f714e39..d59152b407c 100644
--- a/samples/snippets/src/test/java/com/example/spanner/SpannerSampleIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/SpannerSampleIT.java
@@ -527,6 +527,7 @@ public void testEncryptedDatabaseAndBackupSamples() throws Exception {
.setNodeCount(1)
.build())
.get();
+ System.out.println("Creating database ...");
try {
String out =
SampleRunner.runSample(
@@ -538,6 +539,7 @@ public void testEncryptedDatabaseAndBackupSamples() throws Exception {
String.format(
"Created database [%s]", DatabaseName.of(projectId, instanceId, databaseId)));
+ System.out.println("Creating backup with encryption key ...");
out =
SampleRunner.runSampleWithRetry(
() ->
@@ -556,6 +558,7 @@ public void testEncryptedDatabaseAndBackupSamples() throws Exception {
+ "was created at (.*) using encryption key %s",
projectId, instanceId, encryptedBackupId, key));
+ System.out.println("Restoring backup with encryption key ...");
out =
SampleRunner.runSampleWithRetry(
() ->
@@ -587,6 +590,7 @@ public void testEncryptedDatabaseAndBackupSamples() throws Exception {
} finally {
// Delete the backups from the test instance first, as the instance can only be deleted once
// all backups have been deleted.
+ System.out.println("Deleting backups ...");
deleteAllBackups(instanceId);
instanceAdminClient.deleteInstance(instanceId);
}
@@ -633,6 +637,7 @@ private static void deleteAllBackups(String instanceId) throws InterruptedExcept
InstanceName instanceName = InstanceName.of(projectId, instanceId);
for (Backup backup : databaseAdminClient.listBackups(instanceName.toString()).iterateAll()) {
int attempts = 0;
+ System.out.printf("Deleting backup ... %s%n", backup.getName());
while (attempts < 30) {
try {
attempts++;
diff --git a/samples/snippets/src/test/java/com/example/spanner/admin/archived/CustomInstanceConfigSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/admin/archived/CustomInstanceConfigSampleIT.java
index a56b72b75f1..c8271225ccb 100644
--- a/samples/snippets/src/test/java/com/example/spanner/admin/archived/CustomInstanceConfigSampleIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/admin/archived/CustomInstanceConfigSampleIT.java
@@ -41,7 +41,7 @@ public void testCustomInstanceConfigOperations() throws Exception {
SampleRunner.runSample(
() ->
ListInstanceConfigOperationsSample.listInstanceConfigOperations(projectId));
- assertTrue(out2.contains("List instance config operation"));
+ assertTrue(out2.contains("Create instance config operation"));
// Update display name to a randomly generated instance config id.
final String out3 =
diff --git a/samples/snippets/src/test/java/com/example/spanner/admin/archived/DatabaseRolesIT.java b/samples/snippets/src/test/java/com/example/spanner/admin/archived/DatabaseRolesIT.java
index 3e40189d946..f1bad568978 100644
--- a/samples/snippets/src/test/java/com/example/spanner/admin/archived/DatabaseRolesIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/admin/archived/DatabaseRolesIT.java
@@ -31,12 +31,15 @@
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
+import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.junit.runners.MethodSorters;
/** Integration tests for FGAC samples for GoogleStandardSql dialect. */
@RunWith(JUnit4.class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class DatabaseRolesIT extends SampleTestBase {
private static DatabaseId databaseId;
@@ -105,7 +108,7 @@ public void testAddAndDropDatabaseRole() throws Exception {
SampleRunner.runSample(
() ->
AddAndDropDatabaseRole.addAndDropDatabaseRole(
- projectId, instanceId, databaseId.getDatabase(), "new-parent", "new-child"));
+ projectId, instanceId, databaseId.getDatabase(), "new_parent", "new_child"));
assertTrue(out.contains("Created roles new_parent and new_child and granted privileges"));
assertTrue(out.contains("Revoked privileges and dropped role new_child"));
}
diff --git a/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgSpannerSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgSpannerSampleIT.java
index 72900b5e417..c4ba80f3f80 100644
--- a/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgSpannerSampleIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgSpannerSampleIT.java
@@ -130,7 +130,7 @@ public void testSample() throws Exception {
assertThat(databaseId).isNotNull();
System.out.println("Create Database ...");
- String out = runSample("createpgdatabase");
+ String out = runSample("createdatabase");
assertThat(out).contains("Created database");
assertThat(out).contains(dbId.getName());