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());