syncbase/v23: simple integration test
Change-Id: I70b3c10ea3f4581918ec64063da2e76d238053ad
diff --git a/services/syncbase/server/dispatcher.go b/services/syncbase/server/dispatcher.go
index 17fb042..46f7f7e 100644
--- a/services/syncbase/server/dispatcher.go
+++ b/services/syncbase/server/dispatcher.go
@@ -9,6 +9,7 @@
wire "v.io/syncbase/v23/services/syncbase"
pubutil "v.io/syncbase/v23/syncbase/util"
+ "v.io/syncbase/x/ref/services/syncbase/server/interfaces"
"v.io/syncbase/x/ref/services/syncbase/server/nosql"
"v.io/syncbase/x/ref/services/syncbase/server/util"
"v.io/v23/rpc"
@@ -36,7 +37,7 @@
}
if parts[0] == util.SyncbaseSuffix {
- return disp.s.sync, nil, nil
+ return interfaces.SyncServer(disp.s.sync), nil, nil
}
// Validate all key atoms up front, so that we can avoid doing so in all our
diff --git a/services/syncbase/server/interfaces/sync.vdl b/services/syncbase/server/interfaces/sync.vdl
index fe64066..082d645 100644
--- a/services/syncbase/server/interfaces/sync.vdl
+++ b/services/syncbase/server/interfaces/sync.vdl
@@ -6,6 +6,7 @@
import (
wire "v.io/syncbase/v23/services/syncbase/nosql"
+ "v.io/v23/security/access"
)
// Sync defines methods for data exchange between Syncbases.
@@ -14,21 +15,21 @@
// GetDeltas returns the responder's current generation vector
// and all the missing log records when compared to the
// initiator's generation vector.
- GetDeltas() error
+ GetDeltas() error {access.Read}
// SyncGroup-related methods.
// PublishSyncGroup is typically invoked on a "central" peer
// to publish the SyncGroup.
- PublishSyncGroup(sg SyncGroup) error
+ PublishSyncGroup(sg SyncGroup) error {access.Write}
// JoinSyncGroupAtAdmin is invoked by a prospective SyncGroup member's
// Syncbase on a SyncGroup admin. It checks whether the requestor is
// allowed to join the named SyncGroup, and if so, adds the requestor to
// the SyncGroup.
- JoinSyncGroupAtAdmin(sgName, joinerName string, myInfo wire.SyncGroupMemberInfo) (SyncGroup | error)
+ JoinSyncGroupAtAdmin(sgName, joinerName string, myInfo wire.SyncGroupMemberInfo) (SyncGroup | error) {access.Read}
// BlobSync methods.
// FetchBlob returns the requested blob.
- FetchBlob() error
+ FetchBlob() error {access.Read}
}
diff --git a/services/syncbase/server/interfaces/sync.vdl.go b/services/syncbase/server/interfaces/sync.vdl.go
index de16181..594ab0f 100644
--- a/services/syncbase/server/interfaces/sync.vdl.go
+++ b/services/syncbase/server/interfaces/sync.vdl.go
@@ -12,9 +12,11 @@
"v.io/v23"
"v.io/v23/context"
"v.io/v23/rpc"
+ "v.io/v23/vdl"
// VDL user imports
"v.io/syncbase/v23/services/syncbase/nosql"
+ "v.io/v23/security/access"
)
// SyncClientMethods is the client interface
@@ -169,6 +171,7 @@
{
Name: "GetDeltas",
Doc: "// GetDeltas returns the responder's current generation vector\n// and all the missing log records when compared to the\n// initiator's generation vector.",
+ Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
},
{
Name: "PublishSyncGroup",
@@ -176,6 +179,7 @@
InArgs: []rpc.ArgDesc{
{"sg", ``}, // SyncGroup
},
+ Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Write"))},
},
{
Name: "JoinSyncGroupAtAdmin",
@@ -188,10 +192,12 @@
OutArgs: []rpc.ArgDesc{
{"", ``}, // SyncGroup
},
+ Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
},
{
Name: "FetchBlob",
Doc: "// BlobSync methods.\n// FetchBlob returns the requested blob.",
+ Tags: []*vdl.Value{vdl.ValueOf(access.Tag("Read"))},
},
},
}
diff --git a/services/syncbase/vsync/syncgroup.go b/services/syncbase/vsync/syncgroup.go
index 3a9a6fb..823aeb1 100644
--- a/services/syncbase/vsync/syncgroup.go
+++ b/services/syncbase/vsync/syncgroup.go
@@ -334,7 +334,7 @@
func getSGNameEntry(ctx *context.T, st store.StoreReader, name string) (interfaces.GroupId, error) {
var gid interfaces.GroupId
if err := util.GetObject(st, sgNameKey(name), &gid); err != nil {
- return gid, verror.New(verror.ErrInternal, ctx, err)
+ return gid, verror.New(verror.ErrNoExist, ctx, err)
}
return gid, nil
}
@@ -474,6 +474,7 @@
ss := sd.db.App().Service().Sync().(*syncService)
// Contact a SyncGroup Admin to join the SyncGroup.
+ sg = &interfaces.SyncGroup{}
*sg, err = sd.joinSyncGroupAtAdmin(ctx, call, sgName, ss.name, myInfo)
if err != nil {
return nullSpec, err