go.mercari.io/datastore@v1.8.2/testsuite/issue_degrade.go (about) 1 package testsuite 2 3 import ( 4 "context" 5 "testing" 6 7 "go.mercari.io/datastore" 8 ) 9 10 func checkIssue59(ctx context.Context, t *testing.T, client datastore.Client) { 11 defer func() { 12 err := client.Close() 13 if err != nil { 14 t.Fatal(err) 15 } 16 }() 17 18 // Issue description 19 // when using Cloud Datastore + storagecache 20 // Get → make cache on storage 21 // Put with Tx → expected: delete cache, actual: do nothing 22 // Get → hit old (unexpected) cache from storage 23 24 type TestEntity struct { 25 String string 26 } 27 28 key, err := client.Put(ctx, client.IncompleteKey("Test", nil), &TestEntity{String: "Test"}) 29 if err != nil { 30 t.Fatal(err) 31 } 32 33 entity := &TestEntity{} 34 err = client.Get(ctx, key, entity) 35 if err != nil { 36 t.Fatal(err) 37 } 38 if v := entity.String; v != "Test" { 39 t.Errorf("unexpected: %v", v) 40 } 41 42 _, err = client.RunInTransaction(ctx, func(tx datastore.Transaction) error { 43 entity.String = "Updated" 44 _, err = tx.Put(key, entity) 45 return err 46 }) 47 if err != nil { 48 t.Fatal(err) 49 } 50 entity = &TestEntity{} 51 err = client.Get(ctx, key, entity) 52 if err != nil { 53 t.Fatal(err) 54 } 55 if v := entity.String; v != "Updated" { 56 t.Errorf("unexpected: %v", v) 57 } 58 }