From 9c5635d8204b4a93fc8ab4a8aa8857c3a2576a7e Mon Sep 17 00:00:00 2001 From: Tim Swast Date: Mon, 24 Oct 2016 17:29:58 -0700 Subject: [PATCH] Add integration tests for Datastore quickstart. --- bigquery/cloud-client/pom.xml | 2 +- datastore/cloud-client/README.md | 26 +++++++ datastore/cloud-client/pom.xml | 14 ++++ .../example/datastore/QuickstartSample.java | 4 +- .../example/datastore/QuickstartSampleIT.java | 72 +++++++++++++++++++ 5 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 datastore/cloud-client/README.md create mode 100644 datastore/cloud-client/src/test/java/com/example/datastore/QuickstartSampleIT.java diff --git a/bigquery/cloud-client/pom.xml b/bigquery/cloud-client/pom.xml index 680e3436154..887e1446cbb 100644 --- a/bigquery/cloud-client/pom.xml +++ b/bigquery/cloud-client/pom.xml @@ -50,7 +50,7 @@ com.google.truth truth - 0.29 + 0.30 test diff --git a/datastore/cloud-client/README.md b/datastore/cloud-client/README.md new file mode 100644 index 00000000000..26557f4e0ae --- /dev/null +++ b/datastore/cloud-client/README.md @@ -0,0 +1,26 @@ +# Getting Started with Cloud Datastore and the Google Cloud Client libraries + +[Google Cloud Datastore][Datastore] is a highly-scalable NoSQL database for your applications. +These sample Java applications demonstrate how to access the Datastore API using +the [Google Cloud Client Library for Java][google-cloud-java]. + +[Datastore]: https://cloud.google.com/datastore/ +[google-cloud-java]: https://github.com/GoogleCloudPlatform/google-cloud-java + +## Quickstart + +Install [Maven](http://maven.apache.org/). + +Build your project with: + + mvn clean package -DskipTests + +You can then run a given `ClassName` via: + + mvn exec:java -Dexec.mainClass=com.example.bigquery.ClassName \ + -DpropertyName=propertyValue \ + -Dexec.args="any arguments to the app" + +### Creating a new entity (using the quickstart sample) + + mvn exec:java -Dexec.mainClass=com.example.datastore.QuickstartSample diff --git a/datastore/cloud-client/pom.xml b/datastore/cloud-client/pom.xml index 4cd8b09d92a..105ac0f8bb9 100644 --- a/datastore/cloud-client/pom.xml +++ b/datastore/cloud-client/pom.xml @@ -39,5 +39,19 @@ google-cloud-datastore 0.4.0 + + + + junit + junit + 4.12 + test + + + com.google.truth + truth + 0.30 + test + diff --git a/datastore/cloud-client/src/main/java/com/example/datastore/QuickstartSample.java b/datastore/cloud-client/src/main/java/com/example/datastore/QuickstartSample.java index 397e842d547..1864a1e8f10 100644 --- a/datastore/cloud-client/src/main/java/com/example/datastore/QuickstartSample.java +++ b/datastore/cloud-client/src/main/java/com/example/datastore/QuickstartSample.java @@ -37,8 +37,8 @@ public static void main(String... args) throws Exception { // Prepares the new entity Entity task = Entity.builder(taskKey) - .set("description", "Buy milk") - .build(); + .set("description", "Buy milk") + .build(); // Saves the entity datastore.put(task); diff --git a/datastore/cloud-client/src/test/java/com/example/datastore/QuickstartSampleIT.java b/datastore/cloud-client/src/test/java/com/example/datastore/QuickstartSampleIT.java new file mode 100644 index 00000000000..cd7d8adc00d --- /dev/null +++ b/datastore/cloud-client/src/test/java/com/example/datastore/QuickstartSampleIT.java @@ -0,0 +1,72 @@ +/* + Copyright 2016, Google, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package com.example.datastore; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.datastore.Datastore; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.Key; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +/** + * Tests for quickstart sample. + */ +@RunWith(JUnit4.class) +@SuppressWarnings("checkstyle:abbreviationaswordinname") +public class QuickstartSampleIT { + private ByteArrayOutputStream bout; + private PrintStream out; + + private static final void deleteTestEntity() { + Datastore datastore = DatastoreOptions.defaultInstance().service(); + String kind = "Task"; + String name = "sampletask1"; + Key taskKey = datastore.newKeyFactory().kind(kind).newKey(name); + datastore.delete(taskKey); + } + + @Before + public void setUp() { + deleteTestEntity(); + + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + System.setOut(out); + } + + @After + public void tearDown() { + System.setOut(null); + deleteTestEntity(); + } + + @Test + public void testQuickstart() throws Exception { + QuickstartSample.main(); + String got = bout.toString(); + assertThat(got).contains("Saved sampletask1: Buy milk"); + } +} +// [END datastore_quickstart]