datastore: use a strongly consistent query for TestIntegration_Project_TimestampStoreAndRetrieve
This removes the need for retry logic.
Change-Id: I49b893c3d0aed6620bf669c366d93cb5d2351e96
Reviewed-on: https://code-review.googlesource.com/c/gocloud/+/46950
Reviewed-by: Tyler Bui-Palsulich <tbp@google.com>
Reviewed-by: kokoro <noreply+kokoro@google.com>
diff --git a/datastore/integration_test.go b/datastore/integration_test.go
index 0129190..7c9d2c9 100644
--- a/datastore/integration_test.go
+++ b/datastore/integration_test.go
@@ -1317,25 +1317,17 @@
}
}()
+ // Without .Ancestor, this query is eventually consistent (so this test
+ // would be flakey). Ancestor queries, however, are strongly consistent.
+ // See more at https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/.
+ q := NewQuery(k.Kind).Ancestor(k)
res := []T{}
- // Datastore has eventual consistency, meaning we can't trust the key to
- // be immediately queryable after the Put call. So, we'll try a few times
- // to get the key. See: https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/.
- for i := 0; i < 10; i++ {
- q := NewQuery(k.Kind)
- if _, err := client.GetAll(ctx, q, &res); err != nil {
- t.Fatal(err)
- }
- if len(res) != 1 {
- time.Sleep(500 * time.Millisecond)
- continue
- }
- break
+ if _, err := client.GetAll(ctx, q, &res); err != nil {
+ t.Fatal(err)
}
if len(res) != 1 {
t.Fatalf("expected 1 result, got %d", len(res))
}
-
if got, want := res[0].Created.Unix(), now.Unix(); got != want {
t.Fatalf("got %v, want %v", got, want)
}