Test sync tree
This commit is contained in:
parent
e1784aa2fb
commit
3f90011c10
@ -19,5 +19,5 @@ func (r *rpcHandler) HeadSync(ctx context.Context, req *spacesyncproto.HeadSyncR
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *rpcHandler) Stream(stream spacesyncproto.DRPCSpace_StreamStream) (err error) {
|
func (r *rpcHandler) Stream(stream spacesyncproto.DRPCSpace_StreamStream) (err error) {
|
||||||
return r.s.SyncService().SyncClient().AddAndReadStreamSync(stream)
|
return r.s.SyncService().StreamPool().AddAndReadStreamSync(stream)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
//go:generate mockgen -destination mock_syncservice/mock_syncservice.go github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice SyncClient
|
|
||||||
package syncservice
|
package syncservice
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
// Code generated by MockGen. DO NOT EDIT.
|
// Code generated by MockGen. DO NOT EDIT.
|
||||||
// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice (interfaces: SyncClient)
|
// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree (interfaces: SyncClient)
|
||||||
|
|
||||||
// Package mock_syncservice is a generated GoMock package.
|
// Package mock_synctree is a generated GoMock package.
|
||||||
package mock_syncservice
|
package mock_synctree
|
||||||
|
|
||||||
import (
|
import (
|
||||||
reflect "reflect"
|
reflect "reflect"
|
||||||
time "time"
|
time "time"
|
||||||
|
|
||||||
spacesyncproto "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto"
|
|
||||||
tree "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree"
|
tree "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree"
|
||||||
treechangeproto "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/treechangeproto"
|
treechangeproto "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/treechangeproto"
|
||||||
gomock "github.com/golang/mock/gomock"
|
gomock "github.com/golang/mock/gomock"
|
||||||
@ -37,34 +36,8 @@ func (m *MockSyncClient) EXPECT() *MockSyncClientMockRecorder {
|
|||||||
return m.recorder
|
return m.recorder
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddAndReadStreamAsync mocks base method.
|
|
||||||
func (m *MockSyncClient) AddAndReadStreamAsync(arg0 spacesyncproto.DRPCSpace_StreamStream) {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
m.ctrl.Call(m, "AddAndReadStreamAsync", arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddAndReadStreamAsync indicates an expected call of AddAndReadStreamAsync.
|
|
||||||
func (mr *MockSyncClientMockRecorder) AddAndReadStreamAsync(arg0 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddAndReadStreamAsync", reflect.TypeOf((*MockSyncClient)(nil).AddAndReadStreamAsync), arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddAndReadStreamSync mocks base method.
|
|
||||||
func (m *MockSyncClient) AddAndReadStreamSync(arg0 spacesyncproto.DRPCSpace_StreamStream) error {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
ret := m.ctrl.Call(m, "AddAndReadStreamSync", arg0)
|
|
||||||
ret0, _ := ret[0].(error)
|
|
||||||
return ret0
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddAndReadStreamSync indicates an expected call of AddAndReadStreamSync.
|
|
||||||
func (mr *MockSyncClientMockRecorder) AddAndReadStreamSync(arg0 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddAndReadStreamSync", reflect.TypeOf((*MockSyncClient)(nil).AddAndReadStreamSync), arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BroadcastAsync mocks base method.
|
// BroadcastAsync mocks base method.
|
||||||
func (m *MockSyncClient) BroadcastAsync(arg0 *spacesyncproto.ObjectSyncMessage) error {
|
func (m *MockSyncClient) BroadcastAsync(arg0 *treechangeproto.TreeSyncMessage) error {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
ret := m.ctrl.Call(m, "BroadcastAsync", arg0)
|
ret := m.ctrl.Call(m, "BroadcastAsync", arg0)
|
||||||
ret0, _ := ret[0].(error)
|
ret0, _ := ret[0].(error)
|
||||||
@ -78,7 +51,7 @@ func (mr *MockSyncClientMockRecorder) BroadcastAsync(arg0 interface{}) *gomock.C
|
|||||||
}
|
}
|
||||||
|
|
||||||
// BroadcastAsyncOrSendResponsible mocks base method.
|
// BroadcastAsyncOrSendResponsible mocks base method.
|
||||||
func (m *MockSyncClient) BroadcastAsyncOrSendResponsible(arg0 *spacesyncproto.ObjectSyncMessage) error {
|
func (m *MockSyncClient) BroadcastAsyncOrSendResponsible(arg0 *treechangeproto.TreeSyncMessage) error {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
ret := m.ctrl.Call(m, "BroadcastAsyncOrSendResponsible", arg0)
|
ret := m.ctrl.Call(m, "BroadcastAsyncOrSendResponsible", arg0)
|
||||||
ret0, _ := ret[0].(error)
|
ret0, _ := ret[0].(error)
|
||||||
@ -91,55 +64,41 @@ func (mr *MockSyncClientMockRecorder) BroadcastAsyncOrSendResponsible(arg0 inter
|
|||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BroadcastAsyncOrSendResponsible", reflect.TypeOf((*MockSyncClient)(nil).BroadcastAsyncOrSendResponsible), arg0)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BroadcastAsyncOrSendResponsible", reflect.TypeOf((*MockSyncClient)(nil).BroadcastAsyncOrSendResponsible), arg0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close mocks base method.
|
|
||||||
func (m *MockSyncClient) Close() error {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
ret := m.ctrl.Call(m, "Close")
|
|
||||||
ret0, _ := ret[0].(error)
|
|
||||||
return ret0
|
|
||||||
}
|
|
||||||
|
|
||||||
// Close indicates an expected call of Close.
|
|
||||||
func (mr *MockSyncClientMockRecorder) Close() *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockSyncClient)(nil).Close))
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateFullSyncRequest mocks base method.
|
// CreateFullSyncRequest mocks base method.
|
||||||
func (m *MockSyncClient) CreateFullSyncRequest(arg0 tree.ObjectTree, arg1, arg2 []string, arg3 string) (*spacesyncproto.ObjectSyncMessage, error) {
|
func (m *MockSyncClient) CreateFullSyncRequest(arg0 tree.ObjectTree, arg1, arg2 []string) (*treechangeproto.TreeSyncMessage, error) {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
ret := m.ctrl.Call(m, "CreateFullSyncRequest", arg0, arg1, arg2, arg3)
|
ret := m.ctrl.Call(m, "CreateFullSyncRequest", arg0, arg1, arg2)
|
||||||
ret0, _ := ret[0].(*spacesyncproto.ObjectSyncMessage)
|
ret0, _ := ret[0].(*treechangeproto.TreeSyncMessage)
|
||||||
ret1, _ := ret[1].(error)
|
ret1, _ := ret[1].(error)
|
||||||
return ret0, ret1
|
return ret0, ret1
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateFullSyncRequest indicates an expected call of CreateFullSyncRequest.
|
// CreateFullSyncRequest indicates an expected call of CreateFullSyncRequest.
|
||||||
func (mr *MockSyncClientMockRecorder) CreateFullSyncRequest(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
|
func (mr *MockSyncClientMockRecorder) CreateFullSyncRequest(arg0, arg1, arg2 interface{}) *gomock.Call {
|
||||||
mr.mock.ctrl.T.Helper()
|
mr.mock.ctrl.T.Helper()
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFullSyncRequest", reflect.TypeOf((*MockSyncClient)(nil).CreateFullSyncRequest), arg0, arg1, arg2, arg3)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFullSyncRequest", reflect.TypeOf((*MockSyncClient)(nil).CreateFullSyncRequest), arg0, arg1, arg2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateFullSyncResponse mocks base method.
|
// CreateFullSyncResponse mocks base method.
|
||||||
func (m *MockSyncClient) CreateFullSyncResponse(arg0 tree.ObjectTree, arg1, arg2 []string, arg3 string) (*spacesyncproto.ObjectSyncMessage, error) {
|
func (m *MockSyncClient) CreateFullSyncResponse(arg0 tree.ObjectTree, arg1, arg2 []string) (*treechangeproto.TreeSyncMessage, error) {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
ret := m.ctrl.Call(m, "CreateFullSyncResponse", arg0, arg1, arg2, arg3)
|
ret := m.ctrl.Call(m, "CreateFullSyncResponse", arg0, arg1, arg2)
|
||||||
ret0, _ := ret[0].(*spacesyncproto.ObjectSyncMessage)
|
ret0, _ := ret[0].(*treechangeproto.TreeSyncMessage)
|
||||||
ret1, _ := ret[1].(error)
|
ret1, _ := ret[1].(error)
|
||||||
return ret0, ret1
|
return ret0, ret1
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateFullSyncResponse indicates an expected call of CreateFullSyncResponse.
|
// CreateFullSyncResponse indicates an expected call of CreateFullSyncResponse.
|
||||||
func (mr *MockSyncClientMockRecorder) CreateFullSyncResponse(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
|
func (mr *MockSyncClientMockRecorder) CreateFullSyncResponse(arg0, arg1, arg2 interface{}) *gomock.Call {
|
||||||
mr.mock.ctrl.T.Helper()
|
mr.mock.ctrl.T.Helper()
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFullSyncResponse", reflect.TypeOf((*MockSyncClient)(nil).CreateFullSyncResponse), arg0, arg1, arg2, arg3)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFullSyncResponse", reflect.TypeOf((*MockSyncClient)(nil).CreateFullSyncResponse), arg0, arg1, arg2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateHeadUpdate mocks base method.
|
// CreateHeadUpdate mocks base method.
|
||||||
func (m *MockSyncClient) CreateHeadUpdate(arg0 tree.ObjectTree, arg1 []*treechangeproto.RawTreeChangeWithId) *spacesyncproto.ObjectSyncMessage {
|
func (m *MockSyncClient) CreateHeadUpdate(arg0 tree.ObjectTree, arg1 []*treechangeproto.RawTreeChangeWithId) *treechangeproto.TreeSyncMessage {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
ret := m.ctrl.Call(m, "CreateHeadUpdate", arg0, arg1)
|
ret := m.ctrl.Call(m, "CreateHeadUpdate", arg0, arg1)
|
||||||
ret0, _ := ret[0].(*spacesyncproto.ObjectSyncMessage)
|
ret0, _ := ret[0].(*treechangeproto.TreeSyncMessage)
|
||||||
return ret0
|
return ret0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,31 +109,17 @@ func (mr *MockSyncClientMockRecorder) CreateHeadUpdate(arg0, arg1 interface{}) *
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateNewTreeRequest mocks base method.
|
// CreateNewTreeRequest mocks base method.
|
||||||
func (m *MockSyncClient) CreateNewTreeRequest(arg0 string) *spacesyncproto.ObjectSyncMessage {
|
func (m *MockSyncClient) CreateNewTreeRequest() *treechangeproto.TreeSyncMessage {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
ret := m.ctrl.Call(m, "CreateNewTreeRequest", arg0)
|
ret := m.ctrl.Call(m, "CreateNewTreeRequest")
|
||||||
ret0, _ := ret[0].(*spacesyncproto.ObjectSyncMessage)
|
ret0, _ := ret[0].(*treechangeproto.TreeSyncMessage)
|
||||||
return ret0
|
return ret0
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateNewTreeRequest indicates an expected call of CreateNewTreeRequest.
|
// CreateNewTreeRequest indicates an expected call of CreateNewTreeRequest.
|
||||||
func (mr *MockSyncClientMockRecorder) CreateNewTreeRequest(arg0 interface{}) *gomock.Call {
|
func (mr *MockSyncClientMockRecorder) CreateNewTreeRequest() *gomock.Call {
|
||||||
mr.mock.ctrl.T.Helper()
|
mr.mock.ctrl.T.Helper()
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNewTreeRequest", reflect.TypeOf((*MockSyncClient)(nil).CreateNewTreeRequest), arg0)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNewTreeRequest", reflect.TypeOf((*MockSyncClient)(nil).CreateNewTreeRequest))
|
||||||
}
|
|
||||||
|
|
||||||
// HasActiveStream mocks base method.
|
|
||||||
func (m *MockSyncClient) HasActiveStream(arg0 string) bool {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
ret := m.ctrl.Call(m, "HasActiveStream", arg0)
|
|
||||||
ret0, _ := ret[0].(bool)
|
|
||||||
return ret0
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasActiveStream indicates an expected call of HasActiveStream.
|
|
||||||
func (mr *MockSyncClientMockRecorder) HasActiveStream(arg0 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasActiveStream", reflect.TypeOf((*MockSyncClient)(nil).HasActiveStream), arg0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// LastUsage mocks base method.
|
// LastUsage mocks base method.
|
||||||
@ -192,30 +137,15 @@ func (mr *MockSyncClientMockRecorder) LastUsage() *gomock.Call {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SendAsync mocks base method.
|
// SendAsync mocks base method.
|
||||||
func (m *MockSyncClient) SendAsync(arg0 []string, arg1 *spacesyncproto.ObjectSyncMessage) error {
|
func (m *MockSyncClient) SendAsync(arg0 string, arg1 *treechangeproto.TreeSyncMessage, arg2 string) error {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
ret := m.ctrl.Call(m, "SendAsync", arg0, arg1)
|
ret := m.ctrl.Call(m, "SendAsync", arg0, arg1, arg2)
|
||||||
ret0, _ := ret[0].(error)
|
ret0, _ := ret[0].(error)
|
||||||
return ret0
|
return ret0
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendAsync indicates an expected call of SendAsync.
|
// SendAsync indicates an expected call of SendAsync.
|
||||||
func (mr *MockSyncClientMockRecorder) SendAsync(arg0, arg1 interface{}) *gomock.Call {
|
func (mr *MockSyncClientMockRecorder) SendAsync(arg0, arg1, arg2 interface{}) *gomock.Call {
|
||||||
mr.mock.ctrl.T.Helper()
|
mr.mock.ctrl.T.Helper()
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendAsync", reflect.TypeOf((*MockSyncClient)(nil).SendAsync), arg0, arg1)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendAsync", reflect.TypeOf((*MockSyncClient)(nil).SendAsync), arg0, arg1, arg2)
|
||||||
}
|
|
||||||
|
|
||||||
// SendSync mocks base method.
|
|
||||||
func (m *MockSyncClient) SendSync(arg0 string, arg1 *spacesyncproto.ObjectSyncMessage) (*spacesyncproto.ObjectSyncMessage, error) {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
ret := m.ctrl.Call(m, "SendSync", arg0, arg1)
|
|
||||||
ret0, _ := ret[0].(*spacesyncproto.ObjectSyncMessage)
|
|
||||||
ret1, _ := ret[1].(error)
|
|
||||||
return ret0, ret1
|
|
||||||
}
|
|
||||||
|
|
||||||
// SendSync indicates an expected call of SendSync.
|
|
||||||
func (mr *MockSyncClientMockRecorder) SendSync(arg0, arg1 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendSync", reflect.TypeOf((*MockSyncClient)(nil).SendSync), arg0, arg1)
|
|
||||||
}
|
}
|
||||||
@ -14,10 +14,10 @@ type RequestFactory interface {
|
|||||||
CreateFullSyncResponse(t tree.ObjectTree, theirHeads, theirSnapshotPath []string) (*treechangeproto.TreeSyncMessage, error)
|
CreateFullSyncResponse(t tree.ObjectTree, theirHeads, theirSnapshotPath []string) (*treechangeproto.TreeSyncMessage, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
var factory = &requestFactory{}
|
var sharedFactory = &requestFactory{}
|
||||||
|
|
||||||
func GetRequestFactory() RequestFactory {
|
func GetRequestFactory() RequestFactory {
|
||||||
return factory
|
return sharedFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
type requestFactory struct{}
|
type requestFactory struct{}
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
//go:generate mockgen -destination mock_synctree/mock_synctree.go github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree SyncClient
|
||||||
package synctree
|
package synctree
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@ -33,6 +33,7 @@ var log = logger.NewNamed("commonspace.synctree").Sugar()
|
|||||||
var createDerivedObjectTree = tree.CreateDerivedObjectTree
|
var createDerivedObjectTree = tree.CreateDerivedObjectTree
|
||||||
var createObjectTree = tree.CreateObjectTree
|
var createObjectTree = tree.CreateObjectTree
|
||||||
var buildObjectTree = tree.BuildObjectTree
|
var buildObjectTree = tree.BuildObjectTree
|
||||||
|
var createSyncClient = newSyncClient
|
||||||
|
|
||||||
type CreateDeps struct {
|
type CreateDeps struct {
|
||||||
SpaceId string
|
SpaceId string
|
||||||
@ -63,11 +64,11 @@ func DeriveSyncTree(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
syncClient := newSyncClient(
|
syncClient := createSyncClient(
|
||||||
deps.SpaceId,
|
deps.SpaceId,
|
||||||
deps.StreamPool,
|
deps.StreamPool,
|
||||||
deps.HeadNotifiable,
|
deps.HeadNotifiable,
|
||||||
GetRequestFactory(),
|
sharedFactory,
|
||||||
deps.Configuration)
|
deps.Configuration)
|
||||||
syncTree := &SyncTree{
|
syncTree := &SyncTree{
|
||||||
ObjectTree: t,
|
ObjectTree: t,
|
||||||
@ -90,7 +91,7 @@ func CreateSyncTree(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
syncClient := newSyncClient(
|
syncClient := createSyncClient(
|
||||||
deps.SpaceId,
|
deps.SpaceId,
|
||||||
deps.StreamPool,
|
deps.StreamPool,
|
||||||
deps.HeadNotifiable,
|
deps.HeadNotifiable,
|
||||||
@ -176,7 +177,7 @@ func buildSyncTree(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
syncClient := newSyncClient(
|
syncClient := createSyncClient(
|
||||||
deps.SpaceId,
|
deps.SpaceId,
|
||||||
deps.StreamPool,
|
deps.StreamPool,
|
||||||
deps.HeadNotifiable,
|
deps.HeadNotifiable,
|
||||||
@ -236,10 +237,10 @@ func (s *SyncTree) AddRawChanges(ctx context.Context, changes ...*treechangeprot
|
|||||||
s.listener.Rebuild(s)
|
s.listener.Rebuild(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if res.Mode != tree.Nothing {
|
//if res.Mode != tree.Nothing {
|
||||||
headUpdate := s.syncClient.CreateHeadUpdate(s, res.Added)
|
headUpdate := s.syncClient.CreateHeadUpdate(s, res.Added)
|
||||||
err = s.syncClient.BroadcastAsync(headUpdate)
|
err = s.syncClient.BroadcastAsync(headUpdate)
|
||||||
}
|
//}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,7 +256,3 @@ func (s *SyncTree) Close() (err error) {
|
|||||||
s.isClosed = true
|
s.isClosed = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SyncTree) Tree() tree.ObjectTree {
|
|
||||||
return s
|
|
||||||
}
|
|
||||||
|
|||||||
@ -2,15 +2,16 @@ package synctree
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto"
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/diffservice"
|
||||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice/mock_syncservice"
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/syncservice"
|
||||||
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/mock_synctree"
|
||||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener"
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener"
|
||||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener/mock_updatelistener"
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener/mock_updatelistener"
|
||||||
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf"
|
||||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list"
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list"
|
||||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list/mock_list"
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/list/mock_list"
|
||||||
storage2 "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage"
|
storage2 "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage"
|
||||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage/mock_storage"
|
tree "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree"
|
||||||
tree2 "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree"
|
|
||||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree/mock_objecttree"
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree/mock_objecttree"
|
||||||
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/treechangeproto"
|
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/treechangeproto"
|
||||||
"github.com/golang/mock/gomock"
|
"github.com/golang/mock/gomock"
|
||||||
@ -19,7 +20,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type syncTreeMatcher struct {
|
type syncTreeMatcher struct {
|
||||||
objTree tree2.ObjectTree
|
objTree tree.ObjectTree
|
||||||
client SyncClient
|
client SyncClient
|
||||||
listener updatelistener.UpdateListener
|
listener updatelistener.UpdateListener
|
||||||
}
|
}
|
||||||
@ -42,21 +43,25 @@ func Test_DeriveSyncTree(t *testing.T) {
|
|||||||
defer ctrl.Finish()
|
defer ctrl.Finish()
|
||||||
|
|
||||||
updateListenerMock := mock_updatelistener.NewMockUpdateListener(ctrl)
|
updateListenerMock := mock_updatelistener.NewMockUpdateListener(ctrl)
|
||||||
syncClientMock := mock_syncservice.NewMockSyncClient(ctrl)
|
syncClientMock := mock_synctree.NewMockSyncClient(ctrl)
|
||||||
aclListMock := mock_list.NewMockACLList(ctrl)
|
aclListMock := mock_list.NewMockACLList(ctrl)
|
||||||
createStorage := storage2.TreeStorageCreatorFunc(func(payload storage2.TreeStorageCreatePayload) (storage2.TreeStorage, error) {
|
|
||||||
return nil, nil
|
|
||||||
})
|
|
||||||
objTreeMock := mock_tree.NewMockObjectTree(ctrl)
|
objTreeMock := mock_tree.NewMockObjectTree(ctrl)
|
||||||
createDerivedObjectTree = func(payload tree2.ObjectTreeCreatePayload, l list.ACLList, create storage2.TreeStorageCreatorFunc) (objTree tree2.ObjectTree, err error) {
|
spaceId := "spaceId"
|
||||||
|
expectedPayload := tree.ObjectTreeCreatePayload{SpaceId: spaceId}
|
||||||
|
createDerivedObjectTree = func(payload tree.ObjectTreeCreatePayload, l list.ACLList, create storage2.TreeStorageCreatorFunc) (objTree tree.ObjectTree, err error) {
|
||||||
require.Equal(t, l, aclListMock)
|
require.Equal(t, l, aclListMock)
|
||||||
|
require.Equal(t, expectedPayload, payload)
|
||||||
return objTreeMock, nil
|
return objTreeMock, nil
|
||||||
}
|
}
|
||||||
headUpdate := &spacesyncproto.ObjectSyncMessage{}
|
createSyncClient = func(spaceId string, pool syncservice.StreamPool, notifiable diffservice.HeadNotifiable, factory RequestFactory, configuration nodeconf.Configuration) SyncClient {
|
||||||
|
return syncClientMock
|
||||||
|
}
|
||||||
|
headUpdate := &treechangeproto.TreeSyncMessage{}
|
||||||
syncClientMock.EXPECT().CreateHeadUpdate(syncTreeMatcher{objTreeMock, syncClientMock, updateListenerMock}, gomock.Nil()).Return(headUpdate)
|
syncClientMock.EXPECT().CreateHeadUpdate(syncTreeMatcher{objTreeMock, syncClientMock, updateListenerMock}, gomock.Nil()).Return(headUpdate)
|
||||||
syncClientMock.EXPECT().BroadcastAsync(gomock.Eq(headUpdate)).Return(nil)
|
syncClientMock.EXPECT().BroadcastAsync(gomock.Eq(headUpdate)).Return(nil)
|
||||||
|
deps := CreateDeps{AclList: aclListMock, SpaceId: spaceId, Payload: expectedPayload, Listener: updateListenerMock}
|
||||||
|
|
||||||
_, err := DeriveSyncTree(ctx, tree2.ObjectTreeCreatePayload{}, syncClientMock, updateListenerMock, aclListMock, createStorage)
|
_, err := DeriveSyncTree(ctx, deps)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,21 +71,25 @@ func Test_CreateSyncTree(t *testing.T) {
|
|||||||
defer ctrl.Finish()
|
defer ctrl.Finish()
|
||||||
|
|
||||||
updateListenerMock := mock_updatelistener.NewMockUpdateListener(ctrl)
|
updateListenerMock := mock_updatelistener.NewMockUpdateListener(ctrl)
|
||||||
syncClientMock := mock_syncservice.NewMockSyncClient(ctrl)
|
syncClientMock := mock_synctree.NewMockSyncClient(ctrl)
|
||||||
aclListMock := mock_list.NewMockACLList(ctrl)
|
aclListMock := mock_list.NewMockACLList(ctrl)
|
||||||
createStorage := storage2.TreeStorageCreatorFunc(func(payload storage2.TreeStorageCreatePayload) (storage2.TreeStorage, error) {
|
|
||||||
return nil, nil
|
|
||||||
})
|
|
||||||
objTreeMock := mock_tree.NewMockObjectTree(ctrl)
|
objTreeMock := mock_tree.NewMockObjectTree(ctrl)
|
||||||
createObjectTree = func(payload tree2.ObjectTreeCreatePayload, l list.ACLList, create storage2.TreeStorageCreatorFunc) (objTree tree2.ObjectTree, err error) {
|
spaceId := "spaceId"
|
||||||
|
expectedPayload := tree.ObjectTreeCreatePayload{SpaceId: spaceId}
|
||||||
|
createObjectTree = func(payload tree.ObjectTreeCreatePayload, l list.ACLList, create storage2.TreeStorageCreatorFunc) (objTree tree.ObjectTree, err error) {
|
||||||
require.Equal(t, l, aclListMock)
|
require.Equal(t, l, aclListMock)
|
||||||
|
require.Equal(t, expectedPayload, payload)
|
||||||
return objTreeMock, nil
|
return objTreeMock, nil
|
||||||
}
|
}
|
||||||
headUpdate := &spacesyncproto.ObjectSyncMessage{}
|
createSyncClient = func(spaceId string, pool syncservice.StreamPool, notifiable diffservice.HeadNotifiable, factory RequestFactory, configuration nodeconf.Configuration) SyncClient {
|
||||||
|
return syncClientMock
|
||||||
|
}
|
||||||
|
headUpdate := &treechangeproto.TreeSyncMessage{}
|
||||||
syncClientMock.EXPECT().CreateHeadUpdate(syncTreeMatcher{objTreeMock, syncClientMock, updateListenerMock}, gomock.Nil()).Return(headUpdate)
|
syncClientMock.EXPECT().CreateHeadUpdate(syncTreeMatcher{objTreeMock, syncClientMock, updateListenerMock}, gomock.Nil()).Return(headUpdate)
|
||||||
syncClientMock.EXPECT().BroadcastAsync(gomock.Eq(headUpdate)).Return(nil)
|
syncClientMock.EXPECT().BroadcastAsync(gomock.Eq(headUpdate)).Return(nil)
|
||||||
|
deps := CreateDeps{AclList: aclListMock, SpaceId: spaceId, Payload: expectedPayload, Listener: updateListenerMock}
|
||||||
|
|
||||||
_, err := CreateSyncTree(ctx, tree2.ObjectTreeCreatePayload{}, syncClientMock, updateListenerMock, aclListMock, createStorage)
|
_, err := CreateSyncTree(ctx, deps)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,27 +99,22 @@ func Test_BuildSyncTree(t *testing.T) {
|
|||||||
defer ctrl.Finish()
|
defer ctrl.Finish()
|
||||||
|
|
||||||
updateListenerMock := mock_updatelistener.NewMockUpdateListener(ctrl)
|
updateListenerMock := mock_updatelistener.NewMockUpdateListener(ctrl)
|
||||||
syncClientMock := mock_syncservice.NewMockSyncClient(ctrl)
|
syncClientMock := mock_synctree.NewMockSyncClient(ctrl)
|
||||||
aclListMock := mock_list.NewMockACLList(ctrl)
|
|
||||||
storageMock := mock_storage.NewMockTreeStorage(ctrl)
|
|
||||||
objTreeMock := mock_tree.NewMockObjectTree(ctrl)
|
objTreeMock := mock_tree.NewMockObjectTree(ctrl)
|
||||||
buildObjectTree = func(store storage2.TreeStorage, l list.ACLList) (objTree tree2.ObjectTree, err error) {
|
tr := &SyncTree{
|
||||||
require.Equal(t, aclListMock, l)
|
ObjectTree: objTreeMock,
|
||||||
require.Equal(t, store, storageMock)
|
SyncHandler: nil,
|
||||||
return objTreeMock, nil
|
syncClient: syncClientMock,
|
||||||
|
listener: updateListenerMock,
|
||||||
|
isClosed: false,
|
||||||
}
|
}
|
||||||
headUpdate := &spacesyncproto.ObjectSyncMessage{}
|
|
||||||
syncClientMock.EXPECT().CreateHeadUpdate(syncTreeMatcher{objTreeMock, syncClientMock, updateListenerMock}, gomock.Nil()).Return(headUpdate)
|
|
||||||
syncClientMock.EXPECT().BroadcastAsyncOrSendResponsible(gomock.Eq(headUpdate)).Return(nil)
|
|
||||||
|
|
||||||
tr, err := buildSyncTree(ctx, syncClientMock, storageMock, updateListenerMock, aclListMock, false)
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
|
headUpdate := &treechangeproto.TreeSyncMessage{}
|
||||||
t.Run("AddRawChanges update", func(t *testing.T) {
|
t.Run("AddRawChanges update", func(t *testing.T) {
|
||||||
changes := []*treechangeproto.RawTreeChangeWithId{{Id: "some"}}
|
changes := []*treechangeproto.RawTreeChangeWithId{{Id: "some"}}
|
||||||
expectedRes := tree2.AddResult{
|
expectedRes := tree.AddResult{
|
||||||
Added: changes,
|
Added: changes,
|
||||||
Mode: tree2.Append,
|
Mode: tree.Append,
|
||||||
}
|
}
|
||||||
objTreeMock.EXPECT().AddRawChanges(gomock.Any(), gomock.Eq(changes)).
|
objTreeMock.EXPECT().AddRawChanges(gomock.Any(), gomock.Eq(changes)).
|
||||||
Return(expectedRes, nil)
|
Return(expectedRes, nil)
|
||||||
@ -125,9 +129,9 @@ func Test_BuildSyncTree(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("AddRawChanges rebuild", func(t *testing.T) {
|
t.Run("AddRawChanges rebuild", func(t *testing.T) {
|
||||||
changes := []*treechangeproto.RawTreeChangeWithId{{Id: "some"}}
|
changes := []*treechangeproto.RawTreeChangeWithId{{Id: "some"}}
|
||||||
expectedRes := tree2.AddResult{
|
expectedRes := tree.AddResult{
|
||||||
Added: changes,
|
Added: changes,
|
||||||
Mode: tree2.Rebuild,
|
Mode: tree.Rebuild,
|
||||||
}
|
}
|
||||||
objTreeMock.EXPECT().AddRawChanges(gomock.Any(), gomock.Eq(changes)).
|
objTreeMock.EXPECT().AddRawChanges(gomock.Any(), gomock.Eq(changes)).
|
||||||
Return(expectedRes, nil)
|
Return(expectedRes, nil)
|
||||||
@ -142,9 +146,9 @@ func Test_BuildSyncTree(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("AddRawChanges nothing", func(t *testing.T) {
|
t.Run("AddRawChanges nothing", func(t *testing.T) {
|
||||||
changes := []*treechangeproto.RawTreeChangeWithId{{Id: "some"}}
|
changes := []*treechangeproto.RawTreeChangeWithId{{Id: "some"}}
|
||||||
expectedRes := tree2.AddResult{
|
expectedRes := tree.AddResult{
|
||||||
Added: changes,
|
Added: changes,
|
||||||
Mode: tree2.Nothing,
|
Mode: tree.Nothing,
|
||||||
}
|
}
|
||||||
objTreeMock.EXPECT().AddRawChanges(gomock.Any(), gomock.Eq(changes)).
|
objTreeMock.EXPECT().AddRawChanges(gomock.Any(), gomock.Eq(changes)).
|
||||||
Return(expectedRes, nil)
|
Return(expectedRes, nil)
|
||||||
@ -156,11 +160,11 @@ func Test_BuildSyncTree(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("AddContent", func(t *testing.T) {
|
t.Run("AddContent", func(t *testing.T) {
|
||||||
changes := []*treechangeproto.RawTreeChangeWithId{{Id: "some"}}
|
changes := []*treechangeproto.RawTreeChangeWithId{{Id: "some"}}
|
||||||
content := tree2.SignableChangeContent{
|
content := tree.SignableChangeContent{
|
||||||
Data: []byte("abcde"),
|
Data: []byte("abcde"),
|
||||||
}
|
}
|
||||||
expectedRes := tree2.AddResult{
|
expectedRes := tree.AddResult{
|
||||||
Mode: tree2.Append,
|
Mode: tree.Append,
|
||||||
Added: changes,
|
Added: changes,
|
||||||
}
|
}
|
||||||
objTreeMock.EXPECT().AddContent(gomock.Any(), gomock.Eq(content)).
|
objTreeMock.EXPECT().AddContent(gomock.Any(), gomock.Eq(content)).
|
||||||
|
|||||||
@ -271,7 +271,7 @@ func (mr *MockObjectTreeMockRecorder) SnapshotPath() *gomock.Call {
|
|||||||
// Storage mocks base method.
|
// Storage mocks base method.
|
||||||
func (m *MockObjectTree) Storage() storage.TreeStorage {
|
func (m *MockObjectTree) Storage() storage.TreeStorage {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
ret := m.ctrl.Call(m, "SpaceStorage")
|
ret := m.ctrl.Call(m, "Storage")
|
||||||
ret0, _ := ret[0].(storage.TreeStorage)
|
ret0, _ := ret[0].(storage.TreeStorage)
|
||||||
return ret0
|
return ret0
|
||||||
}
|
}
|
||||||
@ -279,7 +279,7 @@ func (m *MockObjectTree) Storage() storage.TreeStorage {
|
|||||||
// Storage indicates an expected call of Storage.
|
// Storage indicates an expected call of Storage.
|
||||||
func (mr *MockObjectTreeMockRecorder) Storage() *gomock.Call {
|
func (mr *MockObjectTreeMockRecorder) Storage() *gomock.Call {
|
||||||
mr.mock.ctrl.T.Helper()
|
mr.mock.ctrl.T.Helper()
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SpaceStorage", reflect.TypeOf((*MockObjectTree)(nil).Storage))
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Storage", reflect.TypeOf((*MockObjectTree)(nil).Storage))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unlock mocks base method.
|
// Unlock mocks base method.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user