func scenarioSimple()

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)
		}
	}
}