diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index d4cca25d3c..4744333966 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -21,6 +21,9 @@
1.8
1.8
UTF-8
+ 0.26.0
+ 1.1.0
+ 1.100.1
@@ -32,6 +35,60 @@
2.0.1
+
+
+ io.opencensus
+ opencensus-api
+ ${opencensus.version}
+
+
+ io.opencensus
+ opencensus-impl
+ ${opencensus.version}
+ runtime
+
+
+ io.opencensus
+ opencensus-contrib-zpages
+ ${opencensus.version}
+
+
+ io.opencensus
+ opencensus-exporter-trace-stackdriver
+ ${opencensus.version}
+
+
+ com.google.cloud
+ google-cloud-trace
+
+
+
+
+ io.opencensus
+ opencensus-exporter-stats-stackdriver
+ ${opencensus.version}
+
+
+ com.google.cloud
+ google-cloud-monitoring
+
+
+
+
+ io.opencensus
+ opencensus-contrib-grpc-metrics
+ ${opencensus.version}
+
+
+ com.google.cloud
+ google-cloud-trace
+ ${trace.version}
+
+
+ com.google.cloud
+ google-cloud-monitoring
+ ${cloudmonitoring.version}
+
junit
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 0bce44187e..8b6362d311 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -21,6 +21,9 @@
1.8
1.8
UTF-8
+ 0.26.0
+ 1.1.0
+ 1.100.1
@@ -31,6 +34,60 @@
2.0.3-SNAPSHOT
+
+
+ io.opencensus
+ opencensus-api
+ ${opencensus.version}
+
+
+ io.opencensus
+ opencensus-impl
+ ${opencensus.version}
+ runtime
+
+
+ io.opencensus
+ opencensus-contrib-zpages
+ ${opencensus.version}
+
+
+ io.opencensus
+ opencensus-exporter-trace-stackdriver
+ ${opencensus.version}
+
+
+ com.google.cloud
+ google-cloud-trace
+
+
+
+
+ io.opencensus
+ opencensus-exporter-stats-stackdriver
+ ${opencensus.version}
+
+
+ com.google.cloud
+ google-cloud-monitoring
+
+
+
+
+ io.opencensus
+ opencensus-contrib-grpc-metrics
+ ${opencensus.version}
+
+
+ com.google.cloud
+ google-cloud-trace
+ ${trace.version}
+
+
+ com.google.cloud
+ google-cloud-monitoring
+ ${cloudmonitoring.version}
+
junit
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index bb111adc0e..b717da4d08 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -21,6 +21,7 @@
1.8
1.8
UTF-8
+ 0.26.0
@@ -43,7 +44,61 @@
google-cloud-spanner
-
+
+
+ io.opencensus
+ opencensus-api
+ ${opencensus.version}
+
+
+ io.opencensus
+ opencensus-impl
+ ${opencensus.version}
+ runtime
+
+
+ io.opencensus
+ opencensus-contrib-zpages
+ ${opencensus.version}
+
+
+ io.opencensus
+ opencensus-exporter-trace-stackdriver
+ ${opencensus.version}
+
+
+ com.google.cloud
+ google-cloud-trace
+
+
+
+
+ io.opencensus
+ opencensus-exporter-stats-stackdriver
+ ${opencensus.version}
+
+
+ com.google.cloud
+ google-cloud-monitoring
+
+
+
+
+ io.opencensus
+ opencensus-contrib-grpc-metrics
+ ${opencensus.version}
+
+
+
+ com.google.cloud
+ google-cloud-trace
+
+
+
+ com.google.cloud
+ google-cloud-monitoring
+
+
junit
junit
diff --git a/samples/snippets/src/main/java/com/example/spanner/AsyncQueryToListAsyncExample.java b/samples/snippets/src/main/java/com/example/spanner/AsyncQueryToListAsyncExample.java
index 78397d62fe..76b3a12352 100644
--- a/samples/snippets/src/main/java/com/example/spanner/AsyncQueryToListAsyncExample.java
+++ b/samples/snippets/src/main/java/com/example/spanner/AsyncQueryToListAsyncExample.java
@@ -17,6 +17,7 @@
package com.example.spanner;
// [START spanner_async_query_to_list]
+
import com.google.api.core.ApiFuture;
import com.google.cloud.spanner.AsyncResultSet;
import com.google.cloud.spanner.DatabaseClient;
@@ -24,7 +25,7 @@
import com.google.cloud.spanner.Spanner;
import com.google.cloud.spanner.SpannerOptions;
import com.google.cloud.spanner.Statement;
-import com.google.common.collect.ImmutableList;
+import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -62,7 +63,7 @@ static void asyncQueryToList() throws InterruptedException, ExecutionException,
static void asyncQueryToList(DatabaseClient client)
throws InterruptedException, ExecutionException, TimeoutException {
ExecutorService executor = Executors.newSingleThreadExecutor();
- ApiFuture> albums;
+ ApiFuture> albums;
try (AsyncResultSet resultSet =
client
.singleUse()
diff --git a/samples/snippets/src/main/java/com/example/spanner/CreateInstanceExample.java b/samples/snippets/src/main/java/com/example/spanner/CreateInstanceExample.java
index fe7e6ec424..a455ac6f19 100644
--- a/samples/snippets/src/main/java/com/example/spanner/CreateInstanceExample.java
+++ b/samples/snippets/src/main/java/com/example/spanner/CreateInstanceExample.java
@@ -16,7 +16,7 @@
package com.example.spanner;
-//[START spanner_create_instance]
+// [START spanner_create_instance]
import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.spanner.Instance;
import com.google.cloud.spanner.InstanceAdminClient;
@@ -38,34 +38,36 @@ static void createInstance() {
}
static void createInstance(String projectId, String instanceId) {
- Spanner spanner = SpannerOptions.newBuilder().setProjectId(projectId).build().getService();
- InstanceAdminClient instanceAdminClient = spanner.getInstanceAdminClient();
+ try (Spanner spanner =
+ SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) {
+ InstanceAdminClient instanceAdminClient = spanner.getInstanceAdminClient();
- // Set Instance configuration.
- String configId = "regional-us-central1";
- int nodeCount = 2;
- String displayName = "Descriptive name";
+ // Set Instance configuration.
+ String configId = "regional-us-central1";
+ int nodeCount = 2;
+ String displayName = "Descriptive name";
- // Create an InstanceInfo object that will be used to create the instance.
- InstanceInfo instanceInfo =
- InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId))
- .setInstanceConfigId(InstanceConfigId.of(projectId, configId))
- .setNodeCount(nodeCount)
- .setDisplayName(displayName)
- .build();
- OperationFuture operation =
- instanceAdminClient.createInstance(instanceInfo);
- try {
- // Wait for the createInstance operation to finish.
- Instance instance = operation.get();
- System.out.printf("Instance %s was successfully created%n", instance.getId());
- } catch (ExecutionException e) {
- System.out.printf(
- "Error: Creating instance %s failed with error message %s%n",
- instanceInfo.getId(), e.getMessage());
- } catch (InterruptedException e) {
- System.out.println("Error: Waiting for createInstance operation to finish was interrupted");
+ // Create an InstanceInfo object that will be used to create the instance.
+ InstanceInfo instanceInfo =
+ InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId))
+ .setInstanceConfigId(InstanceConfigId.of(projectId, configId))
+ .setNodeCount(nodeCount)
+ .setDisplayName(displayName)
+ .build();
+ OperationFuture operation =
+ instanceAdminClient.createInstance(instanceInfo);
+ try {
+ // Wait for the createInstance operation to finish.
+ Instance instance = operation.get();
+ System.out.printf("Instance %s was successfully created%n", instance.getId());
+ } catch (ExecutionException e) {
+ System.out.printf(
+ "Error: Creating instance %s failed with error message %s%n",
+ instanceInfo.getId(), e.getMessage());
+ } catch (InterruptedException e) {
+ System.out.println("Error: Waiting for createInstance operation to finish was interrupted");
+ }
}
}
}
-//[END spanner_create_instance]
+// [END spanner_create_instance]
diff --git a/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java b/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java
index 0c4e0a28b8..ed2922aa16 100644
--- a/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java
+++ b/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java
@@ -177,6 +177,9 @@ static String createRestoredSampleDbId(DatabaseId database) {
if (restoredDbId.length() > 30) {
restoredDbId = restoredDbId.substring(0, 30);
}
+ if (restoredDbId.endsWith("-")) {
+ restoredDbId = restoredDbId.substring(0, restoredDbId.length() - 1);
+ }
return restoredDbId;
}
diff --git a/samples/snippets/src/test/java/com/example/spanner/QuickstartSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/QuickstartSampleIT.java
index 707018d71c..a032fb469b 100644
--- a/samples/snippets/src/test/java/com/example/spanner/QuickstartSampleIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/QuickstartSampleIT.java
@@ -18,29 +18,59 @@
import static com.google.common.truth.Truth.assertThat;
+import com.google.cloud.spanner.InstanceAdminClient;
+import com.google.cloud.spanner.InstanceConfig;
+import com.google.cloud.spanner.InstanceId;
+import com.google.cloud.spanner.InstanceInfo;
+import com.google.cloud.spanner.Spanner;
+import com.google.cloud.spanner.SpannerException;
+import com.google.cloud.spanner.SpannerOptions;
+import com.google.common.collect.ImmutableList;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
+import java.util.concurrent.ExecutionException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-/**
- * Tests for quickstart sample.
- */
+/** Tests for quickstart sample. */
@RunWith(JUnit4.class)
-@SuppressWarnings("checkstyle:abbreviationaswordinname")
public class QuickstartSampleIT {
+ private boolean ownedInstance = false;
private String instanceId = System.getProperty("spanner.test.instance");
- // This database needs to exist for test to pass.
- private String dbId = System.getProperty("spanner.quickstart.database");
+ private String dbId =
+ System.getProperty("spanner.quickstart.database", SpannerSampleIT.formatForTest("sample"));
private ByteArrayOutputStream bout;
private PrintStream stdOut = System.out;
private PrintStream out;
@Before
- public void setUp() {
+ public void setUp() throws SpannerException, InterruptedException, ExecutionException {
+ if (instanceId == null) {
+ instanceId = SpannerSampleIT.formatForTest("quick");
+ SpannerOptions options = SpannerOptions.newBuilder().build();
+ try (Spanner spanner = options.getService()) {
+ InstanceAdminClient instanceAdmin = spanner.getInstanceAdminClient();
+ // Get first available instance config and create an instance.
+ InstanceConfig config = instanceAdmin.listInstanceConfigs().iterateAll().iterator().next();
+ instanceAdmin
+ .createInstance(
+ InstanceInfo.newBuilder(InstanceId.of(options.getProjectId(), instanceId))
+ .setDisplayName("samples-test")
+ .setInstanceConfigId(config.getId())
+ .setNodeCount(1)
+ .build())
+ .get();
+ ownedInstance = true;
+ // Create a test database.
+ spanner
+ .getDatabaseAdminClient()
+ .createDatabase(instanceId, dbId, ImmutableList.of())
+ .get();
+ }
+ }
bout = new ByteArrayOutputStream();
out = new PrintStream(bout);
System.setOut(out);
@@ -49,6 +79,12 @@ public void setUp() {
@After
public void tearDown() {
System.setOut(stdOut);
+ if (ownedInstance) {
+ SpannerOptions options = SpannerOptions.newBuilder().build();
+ try (Spanner spanner = options.getService()) {
+ spanner.getInstanceAdminClient().deleteInstance(instanceId);
+ }
+ }
}
@Test
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 21a307fe42..a889ab97b2 100644
--- a/samples/snippets/src/test/java/com/example/spanner/SpannerSampleIT.java
+++ b/samples/snippets/src/test/java/com/example/spanner/SpannerSampleIT.java
@@ -18,11 +18,15 @@
import static com.google.common.truth.Truth.assertThat;
+import com.google.cloud.spanner.Backup;
import com.google.cloud.spanner.BackupId;
import com.google.cloud.spanner.DatabaseAdminClient;
import com.google.cloud.spanner.DatabaseId;
import com.google.cloud.spanner.ErrorCode;
+import com.google.cloud.spanner.InstanceAdminClient;
+import com.google.cloud.spanner.InstanceConfig;
import com.google.cloud.spanner.InstanceId;
+import com.google.cloud.spanner.InstanceInfo;
import com.google.cloud.spanner.Spanner;
import com.google.cloud.spanner.SpannerException;
import com.google.cloud.spanner.SpannerOptions;
@@ -42,12 +46,11 @@
/** Unit tests for {@code SpannerSample} */
@RunWith(JUnit4.class)
-@SuppressWarnings("checkstyle:abbreviationaswordinname")
public class SpannerSampleIT {
- // The instance needs to exist for tests to pass.
- private static final String instanceId = System.getProperty("spanner.test.instance");
+ private static boolean ownedInstance = false;
+ private static String instanceId = System.getProperty("spanner.test.instance");
private static final String databaseId =
- formatForTest(System.getProperty("spanner.sample.database"));
+ formatForTest(System.getProperty("spanner.sample.database", "my-sample"));
static Spanner spanner;
static DatabaseId dbId;
static DatabaseAdminClient dbClient;
@@ -67,6 +70,22 @@ private String runSample(String command) throws Exception {
public static void setUp() throws Exception {
SpannerOptions options = SpannerOptions.newBuilder().build();
spanner = options.getService();
+ if (instanceId == null) {
+ instanceId = formatForTest("samples");
+ InstanceAdminClient instanceAdmin = spanner.getInstanceAdminClient();
+ // Get first available instance config and create an instance.
+ InstanceConfig config = instanceAdmin.listInstanceConfigs().iterateAll().iterator().next();
+ instanceAdmin
+ .createInstance(
+ InstanceInfo.newBuilder(InstanceId.of(options.getProjectId(), instanceId))
+ .setDisplayName("samples-test")
+ .setInstanceConfigId(config.getId())
+ .setNodeCount(1)
+ .build())
+ .get();
+ ownedInstance = true;
+ }
+
dbClient = spanner.getDatabaseAdminClient();
dbId = DatabaseId.of(options.getProjectId(), instanceId, databaseId);
dbClient.dropDatabase(dbId.getInstanceId().getInstance(), dbId.getDatabase());
@@ -76,9 +95,16 @@ public static void setUp() throws Exception {
@AfterClass
public static void tearDown() throws Exception {
- dbClient.dropDatabase(dbId.getInstanceId().getInstance(), dbId.getDatabase());
- dbClient.dropDatabase(
- dbId.getInstanceId().getInstance(), SpannerSample.createRestoredSampleDbId(dbId));
+ if (ownedInstance) {
+ for (Backup backup : dbClient.listBackups(instanceId).iterateAll()) {
+ dbClient.deleteBackup(instanceId, backup.getId().getBackup());
+ }
+ spanner.getInstanceAdminClient().deleteInstance(instanceId);
+ } else {
+ dbClient.dropDatabase(dbId.getInstanceId().getInstance(), dbId.getDatabase());
+ dbClient.dropDatabase(
+ dbId.getInstanceId().getInstance(), SpannerSample.createRestoredSampleDbId(dbId));
+ }
}
@Test
@@ -259,36 +285,34 @@ public void testSample() throws Exception {
String backupName =
String.format(
- "%s_%02d",
- dbId.getDatabase(), LocalDate.now().get(ChronoField.ALIGNED_WEEK_OF_YEAR));
+ "%s_%02d", dbId.getDatabase(), LocalDate.now().get(ChronoField.ALIGNED_WEEK_OF_YEAR));
BackupId backupId = BackupId.of(dbId.getInstanceId(), backupName);
out = runSample("createbackup");
assertThat(out).contains("Created backup [" + backupId + "]");
out = runSample("cancelcreatebackup");
- assertThat(out).contains(
- "Backup operation for [" + backupId + "_cancel] successfully cancelled");
+ assertThat(out)
+ .contains("Backup operation for [" + backupId + "_cancel] successfully cancelled");
out = runSample("listbackupoperations");
- assertThat(out).contains(
- String.format(
- "Backup %s on database %s pending:",
- backupId.getName(),
- dbId.getName()));
+ assertThat(out)
+ .contains(
+ String.format("Backup %s on database %s pending:", backupId.getName(), dbId.getName()));
out = runSample("listbackups");
assertThat(out).contains("All backups:");
- assertThat(out).contains(
- String.format("All backups with backup name containing \"%s\":", backupId.getBackup()));
- assertThat(out).contains(String.format(
- "All backups for databases with a name containing \"%s\":",
- dbId.getDatabase()));
- assertThat(out).contains(
- String.format("All backups that expire before"));
+ assertThat(out)
+ .contains(
+ String.format("All backups with backup name containing \"%s\":", backupId.getBackup()));
+ assertThat(out)
+ .contains(
+ String.format(
+ "All backups for databases with a name containing \"%s\":", dbId.getDatabase()));
+ assertThat(out).contains(String.format("All backups that expire before"));
assertThat(out).contains("All backups with size greater than 100 bytes:");
- assertThat(out).containsMatch(
- Pattern.compile("All databases created after (.+) and that are ready:"));
+ assertThat(out)
+ .containsMatch(Pattern.compile("All databases created after (.+) and that are ready:"));
assertThat(out).contains("All backups, listed using pagination:");
// All the above tests should include the created backup exactly once, i.e. exactly 7 times.
assertThat(countOccurrences(out, backupId.getName())).isEqualTo(7);
@@ -300,12 +324,9 @@ public void testSample() throws Exception {
while (true) {
try {
out = runSample("restorebackup");
- assertThat(out).contains(
- "Restored database ["
- + dbId.getName()
- + "] from ["
- + backupId.getName()
- + "]");
+ assertThat(out)
+ .contains(
+ "Restored database [" + dbId.getName() + "] from [" + backupId.getName() + "]");
break;
} catch (SpannerException e) {
if (e.getErrorCode() == ErrorCode.FAILED_PRECONDITION
@@ -315,7 +336,7 @@ public void testSample() throws Exception {
if (restoreAttempts == 10) {
System.out.println(
"Restore operation failed 10 times because of other pending restores. "
- + "Giving up restore.");
+ + "Giving up restore.");
break;
}
Uninterruptibles.sleepUninterruptibly(60L, TimeUnit.SECONDS);
@@ -326,17 +347,15 @@ public void testSample() throws Exception {
}
out = runSample("listdatabaseoperations");
- assertThat(out).contains(
- String.format(
- "Database %s restored from backup",
- DatabaseId.of(
- dbId.getInstanceId(),
- SpannerSample.createRestoredSampleDbId(dbId))
- .getName()));
+ assertThat(out)
+ .contains(
+ String.format(
+ "Database %s restored from backup",
+ DatabaseId.of(dbId.getInstanceId(), SpannerSample.createRestoredSampleDbId(dbId))
+ .getName()));
out = runSample("updatebackup");
- assertThat(out).contains(
- String.format("Updated backup [" + backupId + "]"));
+ assertThat(out).contains(String.format("Updated backup [" + backupId + "]"));
// Drop the restored database before we try to delete the backup.
// Otherwise the delete backup operation might fail as the backup is still in use by
@@ -385,7 +404,11 @@ private static int countOccurrences(String input, String search) {
return input.split(search).length - 1;
}
- private static String formatForTest(String name) {
- return name + "-" + UUID.randomUUID().toString().substring(0, 20);
+ static String formatForTest(String name) {
+ String res = name + "-" + UUID.randomUUID().toString().substring(0, 20);
+ if (res.endsWith("-")) {
+ res = res.substring(0, res.length() - 1);
+ }
+ return res;
}
}