From 00abb99773bd81c2d63e26bb9a65339cfd7cf88a Mon Sep 17 00:00:00 2001 From: Juan Lara Date: Thu, 4 Aug 2022 00:38:13 +0000 Subject: [PATCH 1/3] Add sample snippet for snapshot reads --- .../datastore/snippets/ConceptsTest.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java b/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java index b22efc6fb..d9162d369 100644 --- a/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java +++ b/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java @@ -1145,4 +1145,33 @@ public void testInQuerySorted() { // [END datastore_in_query_sorted] assertValidQueryRealBackend(query); } + + @Test + public void testSnapshotReads() { + setUpQueryTestsRealBackend(); + Datastore datastoreClient = datastoreRealBackend; + // [START datastore_snapshot_read] + Key taskKey = + datastoreClient + .newKeyFactory() + .setKind("Task") + .addAncestors(PathElement.of("TaskList", "default")) + .newKey("someTask"); + + // Create a timestamp for two minutes ago + Timestamp now = Timestamp.now(); + Timestamp twoMinutesAgo = + Timestamp.ofTimeSecondsAndNanos(now.getSeconds() - 120l, now.getNanos()); + // Create a readOption to read at time twoMinutesAgo + ReadOption readOption = ReadOption.readTime(twoMinutesAgo); + // Use readOption to Fetch entity at time twoMinutesAgo + Entity entity = datastoreClient.get(taskKey, readOption); + + // Use readOption to Query kind Task at time twoMinutesAgo + Query query = Query.newEntityQueryBuilder().setKind("Task").setLimit(10).build(); + QueryResults results = datastoreClient.run(query, readOption); + Entity result = results.next(); + // [END datastore_snapshot_read] + assertValidQueryRealBackend(query); + } } From bd6af93aa3a284f9bcaaa142c013a627bfc99d11 Mon Sep 17 00:00:00 2001 From: Juan Lara Date: Thu, 4 Aug 2022 00:51:34 +0000 Subject: [PATCH 2/3] Fix linting error --- .../test/java/com/google/datastore/snippets/ConceptsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java b/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java index d9162d369..16f7ec68b 100644 --- a/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java +++ b/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java @@ -1161,7 +1161,7 @@ public void testSnapshotReads() { // Create a timestamp for two minutes ago Timestamp now = Timestamp.now(); Timestamp twoMinutesAgo = - Timestamp.ofTimeSecondsAndNanos(now.getSeconds() - 120l, now.getNanos()); + Timestamp.ofTimeSecondsAndNanos(now.getSeconds() - 120L, now.getNanos()); // Create a readOption to read at time twoMinutesAgo ReadOption readOption = ReadOption.readTime(twoMinutesAgo); // Use readOption to Fetch entity at time twoMinutesAgo From 31fe0d00729167d7a5cbe1c8f3fe82a3f86649a0 Mon Sep 17 00:00:00 2001 From: Juan Lara Date: Thu, 15 Sep 2022 23:57:06 +0000 Subject: [PATCH 3/3] Change readtime to 15 seconds ago. Incorporate feedback. --- .../datastore/snippets/ConceptsTest.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java b/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java index 16f7ec68b..4013dbe04 100644 --- a/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java +++ b/samples/snippets/src/test/java/com/google/datastore/snippets/ConceptsTest.java @@ -1147,10 +1147,10 @@ public void testInQuerySorted() { } @Test - public void testSnapshotReads() { + public void testStaleReads() { setUpQueryTestsRealBackend(); Datastore datastoreClient = datastoreRealBackend; - // [START datastore_snapshot_read] + // [START datastore_stale_read] Key taskKey = datastoreClient .newKeyFactory() @@ -1158,20 +1158,18 @@ public void testSnapshotReads() { .addAncestors(PathElement.of("TaskList", "default")) .newKey("someTask"); - // Create a timestamp for two minutes ago - Timestamp now = Timestamp.now(); - Timestamp twoMinutesAgo = - Timestamp.ofTimeSecondsAndNanos(now.getSeconds() - 120L, now.getNanos()); - // Create a readOption to read at time twoMinutesAgo - ReadOption readOption = ReadOption.readTime(twoMinutesAgo); - // Use readOption to Fetch entity at time twoMinutesAgo + Timestamp fifteenSecondsAgo = + Timestamp.ofTimeSecondsAndNanos(Timestamp.now().getSeconds() - 15L, 0); + // Create a readOption with read time fifteenSecondsAgo + ReadOption readOption = ReadOption.readTime(fifteenSecondsAgo); + // Use the readOption to Fetch entity Entity entity = datastoreClient.get(taskKey, readOption); - // Use readOption to Query kind Task at time twoMinutesAgo + // Use the readOption to Query kind Task Query query = Query.newEntityQueryBuilder().setKind("Task").setLimit(10).build(); QueryResults results = datastoreClient.run(query, readOption); Entity result = results.next(); - // [END datastore_snapshot_read] + // [END datastore_stale_read] assertValidQueryRealBackend(query); } }