in lib/dsstore/itest/datastore.go [62:147]
func scenarioSimple(ctx context.Context, c *datastore.Client) {
// Scenario: write, read-check, read-modify-write, read-check, delete, read-check
id := "fake-id-simple-" + uuid.New()
s := dsstore.New(c, *fakeProjectID, fakeServiceName, fakeConfigPath)
{
// Write
tx, err := s.Tx(true)
if err != nil {
glog.Exitf("store.Tx(true) failed: %v", err)
}
entity := &dpb.Duration{Seconds: 60}
if err := s.WriteTx(fakeDataType, fakeRealm, fakeUser, id, storage.LatestRev, entity, nil, tx); err != nil {
glog.Exitf("store.WriteTx(...) failed: %v", err)
}
if err := tx.Finish(); err != nil {
glog.Exitf("tx.Finish() failed: %v", err)
}
}
{
// Read to check it is created.
got := &dpb.Duration{}
if err := s.Read(fakeDataType, fakeRealm, fakeUser, id, storage.LatestRev, got); err != nil {
glog.Exitf("store.Read(...) failed: %v", err)
}
want := &dpb.Duration{Seconds: 60}
if got.GetSeconds() != want.GetSeconds() {
glog.Exitf("store.Read(...) = %v, want %v", got, want)
}
}
{
// RMW
tx, err := s.Tx(true)
if err != nil {
glog.Exitf("store.Tx(true) failed: %v", err)
}
resp := &dpb.Duration{}
if err := s.ReadTx(fakeDataType, fakeRealm, fakeUser, id, storage.LatestRev, resp, tx); err != nil {
glog.Exitf("store.ReadTx(...) failed: %v", err)
}
resp.Seconds = resp.Seconds + 60
if err := s.WriteTx(fakeDataType, fakeRealm, fakeUser, id, storage.LatestRev, resp, nil, tx); err != nil {
glog.Exitf("store.WriteTx(...) failed: %v", err)
}
if err := tx.Finish(); err != nil {
glog.Exitf("tx.Finish() failed: %v", err)
}
}
{
// Read to check it is updated.
got := &dpb.Duration{}
if err := s.Read(fakeDataType, fakeRealm, fakeUser, id, storage.LatestRev, got); err != nil {
glog.Exitf("store.Read(...) failed: %v", err)
}
want := &dpb.Duration{Seconds: 120}
if got.GetSeconds() != want.GetSeconds() {
glog.Exitf("store.Read(...) = %v, want %v", got, want)
}
}
{
// Delete
tx, err := s.Tx(true)
if err != nil {
glog.Exitf("store.Tx(true) failed: %v", err)
}
if err := s.DeleteTx(fakeDataType, fakeRealm, fakeUser, id, storage.LatestRev, tx); err != nil {
glog.Exitf("store.DeleteTx(...) failed: %v", err)
}
if err := tx.Finish(); err != nil {
glog.Exitf("tx.Finish() failed: %v", err)
}
}
{
// Read to check it is deleted.
if err := s.Read(fakeDataType, fakeRealm, fakeUser, id, storage.LatestRev, &dpb.Duration{}); status.Code(err) != codes.NotFound {
glog.Exitf("store.Read(...) = %v, want error with code %v", err, codes.NotFound)
}
}
}