| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package featuretests_test |
| |
| import ( |
| "testing" |
| |
| "v.io/v23/syncbase" |
| "v.io/x/ref/lib/v23test" |
| ) |
| |
| func TestV23SyncbasedPutGet(t *testing.T) { |
| sh := v23test.NewShell(t, v23test.Opts{Large: true}) |
| defer sh.Cleanup() |
| sh.StartRootMountTable() |
| |
| // Start syncbased. |
| serverCreds := sh.ForkCredentials("server") |
| sh.StartSyncbase(serverCreds, testSbName, "", `{"Read": {"In":["root:server", "root:client"]}, "Write": {"In":["root:server", "root:client"]}}`) |
| |
| // Create app, database and table. |
| // TODO(ivanpi): Use setupAppA. |
| ctx := sh.ForkContext("client") |
| a := syncbase.NewService(testSbName).App("a") |
| if err := a.Create(ctx, nil); err != nil { |
| t.Fatalf("unable to create an app: %v", err) |
| } |
| d := a.NoSQLDatabase("d", nil) |
| if err := d.Create(ctx, nil); err != nil { |
| t.Fatalf("unable to create a database: %v", err) |
| } |
| tb := d.Table("tb") |
| if err := tb.Create(ctx, nil); err != nil { |
| t.Fatalf("unable to create a table: %v", err) |
| } |
| |
| // Do a Put followed by a Get. |
| r := tb.Row("r") |
| if err := r.Put(ctx, "testkey"); err != nil { |
| t.Fatalf("r.Put() failed: %v", err) |
| } |
| var result string |
| if err := r.Get(ctx, &result); err != nil { |
| t.Fatalf("r.Get() failed: %v", err) |
| } |
| if got, want := result, "testkey"; got != want { |
| t.Fatalf("unexpected value: got %q, want %q", got, want) |
| } |
| } |