1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-07 21:47:02 +09:00

Fix snapshot path, update mocks, ignore heads mismatch error

This commit is contained in:
Mikhail Rakhmanov 2025-03-11 16:20:44 +01:00
parent b88e9e34fa
commit 0cac23037c
No known key found for this signature in database
GPG key ID: DED12CFEF5B8396B
48 changed files with 87 additions and 106 deletions

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_accountservice/mock_accountservice.go github.com/anyproto/any-sync/accountservice Service
//
// Package mock_accountservice is a generated GoMock package.
package mock_accountservice

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_acl/mock_acl.go github.com/anyproto/any-sync/acl AclService
//
// Package mock_acl is a generated GoMock package.
package mock_acl

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_debugstat/mock_debugstat.go github.com/anyproto/any-sync/app/debugstat StatService
//
// Package mock_debugstat is a generated GoMock package.
package mock_debugstat

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_ldiff/mock_ldiff.go github.com/anyproto/any-sync/app/ldiff Diff,Remote
//
// Package mock_ldiff is a generated GoMock package.
package mock_ldiff

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_aclclient/mock_aclclient.go github.com/anyproto/any-sync/commonspace/acl/aclclient AclJoiningClient,AclSpaceClient
//
// Package mock_aclclient is a generated GoMock package.
package mock_aclclient

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_credentialprovider/mock_credentialprovider.go github.com/anyproto/any-sync/commonspace/credentialprovider CredentialProvider
//
// Package mock_credentialprovider is a generated GoMock package.
package mock_credentialprovider

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_deletionmanager/mock_deletionmanager.go github.com/anyproto/any-sync/commonspace/deletionmanager DeletionManager,Deleter
//
// Package mock_deletionmanager is a generated GoMock package.
package mock_deletionmanager

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_deletionstate/mock_deletionstate.go github.com/anyproto/any-sync/commonspace/deletionstate ObjectDeletionState
//
// Package mock_deletionstate is a generated GoMock package.
package mock_deletionstate

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_headstorage/mock_headstorage.go github.com/anyproto/any-sync/commonspace/headsync/headstorage HeadStorage
//
// Package mock_headstorage is a generated GoMock package.
package mock_headstorage

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_headsync/mock_headsync.go github.com/anyproto/any-sync/commonspace/headsync DiffSyncer
//
// Package mock_headsync is a generated GoMock package.
package mock_headsync

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_statestorage/mock_statestorage.go github.com/anyproto/any-sync/commonspace/headsync/statestorage StateStorage
//
// Package mock_statestorage is a generated GoMock package.
package mock_statestorage

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_commonspace/mock_commonspace.go github.com/anyproto/any-sync/commonspace Space
//
// Package mock_commonspace is a generated GoMock package.
package mock_commonspace

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_list/mock_list.go github.com/anyproto/any-sync/commonspace/object/acl/list AclList,Storage
//
// Package mock_list is a generated GoMock package.
package mock_list

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_syncacl/mock_syncacl.go github.com/anyproto/any-sync/commonspace/object/acl/syncacl SyncClient,SyncAcl
//
// Package mock_syncacl is a generated GoMock package.
package mock_syncacl

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_objecttree/mock_objecttree.go github.com/anyproto/any-sync/commonspace/object/tree/objecttree ObjectTree,Storage
//
// Package mock_objecttree is a generated GoMock package.
package mock_objecttree
@ -374,11 +373,12 @@ func (mr *MockObjectTreeMockRecorder) SetFlusher(arg0 any) *gomock.Call {
}
// SnapshotPath mocks base method.
func (m *MockObjectTree) SnapshotPath() []string {
func (m *MockObjectTree) SnapshotPath() ([]string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SnapshotPath")
ret0, _ := ret[0].([]string)
return ret0
ret1, _ := ret[1].(error)
return ret0, ret1
}
// SnapshotPath indicates an expected call of SnapshotPath.

View file

@ -90,7 +90,7 @@ type ReadableObjectTree interface {
type ObjectTree interface {
ReadableObjectTree
SnapshotPath() []string
SnapshotPath() ([]string, error)
ChangesAfterCommonSnapshotLoader(snapshotPath, heads []string) (LoadIterator, error)
Storage() Storage
@ -144,7 +144,10 @@ func (ot *objectTree) rebuildFromStorage(theirHeads, theirSnapshotPath []string,
)
if theirHeads != nil {
// TODO: add error handling
ourPath = ot.SnapshotPath()
ourPath, err = ot.SnapshotPath()
if err != nil {
return fmt.Errorf("rebuild from storage: %w", err)
}
}
ot.tree, err = ot.treeBuilder.Build(treeBuilderOpts{
theirHeads: theirHeads,
@ -748,13 +751,12 @@ func (ot *objectTree) Delete() error {
return ot.storage.Delete(context.Background())
}
func (ot *objectTree) SnapshotPath() []string {
func (ot *objectTree) SnapshotPath() ([]string, error) {
if ot.isDeleted {
return nil
return nil, ErrDeleted
}
// TODO: Add error as return parameter
if ot.snapshotPathIsActual() {
return ot.snapshotPath
return ot.snapshotPath, nil
}
var path []string
@ -763,14 +765,13 @@ func (ot *objectTree) SnapshotPath() []string {
for currentSnapshotId != "" {
sn, err := ot.storage.Get(context.Background(), currentSnapshotId)
if err != nil {
// TODO: add error handling
panic(fmt.Sprintf("failed to get snapshot %s: %v", currentSnapshotId, err))
return nil, fmt.Errorf("failed to get snapshot %s: %w", currentSnapshotId, err)
}
path = append(path, currentSnapshotId)
currentSnapshotId = sn.SnapshotId
}
ot.snapshotPath = path
return path
return path, nil
}
func (ot *objectTree) ChangesAfterCommonSnapshotLoader(theirPath, theirHeads []string) (LoadIterator, error) {
@ -779,12 +780,16 @@ func (ot *objectTree) ChangesAfterCommonSnapshotLoader(theirPath, theirHeads []s
}
var (
needFullDocument = len(theirPath) == 0
ourPath = ot.SnapshotPath()
ourPath []string
// by default returning everything we have from start
commonSnapshot = ourPath[len(ourPath)-1]
commonSnapshot string
err error
)
ourPath, err = ot.SnapshotPath()
if err != nil {
return nil, fmt.Errorf("failed to get snapshot path: %w", err)
}
commonSnapshot = ourPath[len(ourPath)-1]
// if this is non-empty request
if !needFullDocument {
commonSnapshot, err = commonSnapshotForTwoPaths(ourPath, theirPath)

View file

@ -1075,7 +1075,8 @@ func TestObjectTree(t *testing.T) {
_, err := objTree.AddRawChanges(context.Background(), payload)
require.NoError(t, err, "adding changes should be without error")
snapshotPath := objTree.SnapshotPath()
snapshotPath, err := objTree.SnapshotPath()
require.NoError(t, err)
assert.Equal(t, []string{"3", "0"}, snapshotPath)
assert.Equal(t, true, objTree.(*objectTree).snapshotPathIsActual())
@ -1857,7 +1858,9 @@ func TestObjectTree(t *testing.T) {
RawChanges: result.changes,
})
require.NoError(t, err)
iter, err := objTree.ChangesAfterCommonSnapshotLoader(otherTree.SnapshotPath(), otherTree.Heads())
snPath, err := otherTree.SnapshotPath()
require.NoError(t, err)
iter, err := objTree.ChangesAfterCommonSnapshotLoader(snPath, otherTree.Heads())
require.NoError(t, err)
for {
batch, err := iter.NextBatch(400)

View file

@ -20,6 +20,6 @@ func (o objectTreeDebug) debugInfo(ot *objectTree, parser DescriptionParser) (di
di.TreeString = ot.tree.String()
di.TreeLen = ot.tree.Len()
di.Heads = ot.Heads()
di.SnapshotPath = ot.SnapshotPath()
di.SnapshotPath, _ = ot.SnapshotPath()
return
}

View file

@ -6,7 +6,6 @@ import (
"fmt"
anystore "github.com/anyproto/any-store"
"go.uber.org/zap"
"github.com/anyproto/any-sync/commonspace/headsync/headstorage"
"github.com/anyproto/any-sync/commonspace/object/acl/list"
@ -55,10 +54,6 @@ func NewTreeMigrator(keyStorage crypto.KeyStorage, aclList list.AclList) *TreeMi
}
func (tm *TreeMigrator) MigrateTreeStorage(ctx context.Context, storage treeStorage, headStorage headstorage.HeadStorage, store anystore.DB) error {
var (
usedDfs bool
loadFailed bool
)
rootChange, err := storage.Root()
if err != nil {
return err
@ -78,8 +73,7 @@ func (tm *TreeMigrator) MigrateTreeStorage(ctx context.Context, storage treeStor
return fmt.Errorf("migration: failed to get all changes: %w", err)
}
} else {
usedDfs = true
loadFailed = tm.dfs(ctx, heads, rootChange.Id)
tm.dfs(ctx, heads, rootChange.Id)
}
newStorage, err := CreateStorage(ctx, rootChange, headStorage, store)
if err != nil && !errors.Is(err, treestorage.ErrTreeExists) {
@ -107,20 +101,7 @@ func (tm *TreeMigrator) MigrateTreeStorage(ctx context.Context, storage treeStor
return fmt.Errorf("migration: failed to add raw changes: %w", err)
}
if !slice.UnsortedEquals(res.Heads, heads) {
returnErr := fmt.Errorf("migration: heads mismatch: %v, %v != %v", rootChange.Id, res.Heads, heads)
if loadFailed {
log.Error("tree is corrupted", zap.String("id", storage.Id()), zap.Error(returnErr))
return nil
}
if usedDfs {
return returnErr
}
tm.allChanges = nil
if tm.dfs(ctx, heads, rootChange.Id) {
log.Error("tree is corrupted", zap.String("id", storage.Id()), zap.Error(returnErr))
return nil
}
return returnErr
log.Errorf("migration: heads mismatch: %v, %v != %v", rootChange.Id, res.Heads, heads)
}
return nil
}

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_synctree/mock_synctree.go github.com/anyproto/any-sync/commonspace/object/tree/synctree SyncTree,HeadNotifiable,SyncClient,RequestFactory
//
// Package mock_synctree is a generated GoMock package.
package mock_synctree
@ -467,11 +466,12 @@ func (mr *MockSyncTreeMockRecorder) SetListener(arg0 any) *gomock.Call {
}
// SnapshotPath mocks base method.
func (m *MockSyncTree) SnapshotPath() []string {
func (m *MockSyncTree) SnapshotPath() ([]string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SnapshotPath")
ret0, _ := ret[0].([]string)
return ret0
ret1, _ := ret[1].(error)
return ret0, ret1
}
// SnapshotPath indicates an expected call of SnapshotPath.
@ -651,11 +651,12 @@ func (mr *MockSyncClientMockRecorder) Broadcast(arg0, arg1 any) *gomock.Call {
}
// CreateFullSyncRequest mocks base method.
func (m *MockSyncClient) CreateFullSyncRequest(arg0 string, arg1 objecttree.ObjectTree) *objectmessages.Request {
func (m *MockSyncClient) CreateFullSyncRequest(arg0 string, arg1 objecttree.ObjectTree) (*objectmessages.Request, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "CreateFullSyncRequest", arg0, arg1)
ret0, _ := ret[0].(*objectmessages.Request)
return ret0
ret1, _ := ret[1].(error)
return ret0, ret1
}
// CreateFullSyncRequest indicates an expected call of CreateFullSyncRequest.
@ -760,11 +761,12 @@ func (m *MockRequestFactory) EXPECT() *MockRequestFactoryMockRecorder {
}
// CreateFullSyncRequest mocks base method.
func (m *MockRequestFactory) CreateFullSyncRequest(arg0 string, arg1 objecttree.ObjectTree) *objectmessages.Request {
func (m *MockRequestFactory) CreateFullSyncRequest(arg0 string, arg1 objecttree.ObjectTree) (*objectmessages.Request, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "CreateFullSyncRequest", arg0, arg1)
ret0, _ := ret[0].(*objectmessages.Request)
return ret0
ret1, _ := ret[1].(error)
return ret0, ret1
}
// CreateFullSyncRequest indicates an expected call of CreateFullSyncRequest.

View file

@ -12,7 +12,7 @@ const batchSize = 1024 * 1024
type RequestFactory interface {
CreateHeadUpdate(t objecttree.ObjectTree, ignoredPeer string, added []*treechangeproto.RawTreeChangeWithId) (headUpdate *objectmessages.HeadUpdate, err error)
CreateNewTreeRequest(peerId, objectId string) *objectmessages.Request
CreateFullSyncRequest(peerId string, t objecttree.ObjectTree) *objectmessages.Request
CreateFullSyncRequest(peerId string, t objecttree.ObjectTree) (*objectmessages.Request, error)
CreateResponseProducer(t objecttree.ObjectTree, theirHeads, theirSnapshotPath []string) (response.ResponseProducer, error)
}
@ -29,6 +29,10 @@ func (r *requestFactory) CreateHeadUpdate(t objecttree.ObjectTree, ignoredPeer s
if ignoredPeer != "" {
broadcastOpts.EmptyPeers = []string{ignoredPeer}
}
snapshotPath, err := t.SnapshotPath()
if err != nil {
return
}
headUpdate = &objectmessages.HeadUpdate{
Meta: objectmessages.ObjectMeta{
ObjectId: t.Id(),
@ -38,7 +42,7 @@ func (r *requestFactory) CreateHeadUpdate(t objecttree.ObjectTree, ignoredPeer s
opts: broadcastOpts,
heads: t.Heads(),
changes: added,
snapshotPath: t.SnapshotPath(),
snapshotPath: snapshotPath,
root: t.Header(),
},
}
@ -50,8 +54,12 @@ func (r *requestFactory) CreateNewTreeRequest(peerId, objectId string) *objectme
return NewRequest(peerId, r.spaceId, objectId, nil, nil, nil)
}
func (r *requestFactory) CreateFullSyncRequest(peerId string, t objecttree.ObjectTree) *objectmessages.Request {
return NewRequest(peerId, r.spaceId, t.Id(), t.Heads(), t.SnapshotPath(), t.Header())
func (r *requestFactory) CreateFullSyncRequest(peerId string, t objecttree.ObjectTree) (*objectmessages.Request, error) {
path, err := t.SnapshotPath()
if err != nil {
return nil, err
}
return NewRequest(peerId, r.spaceId, t.Id(), t.Heads(), path, t.Header()), nil
}
func (r *requestFactory) CreateResponseProducer(t objecttree.ObjectTree, theirHeads, theirSnapshotPath []string) (response.ResponseProducer, error) {

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_response/mock_response.go github.com/anyproto/any-sync/commonspace/object/tree/synctree/response ResponseProducer
//
// Package mock_response is a generated GoMock package.
package mock_response
@ -40,11 +39,12 @@ func (m *MockResponseProducer) EXPECT() *MockResponseProducerMockRecorder {
}
// EmptyResponse mocks base method.
func (m *MockResponseProducer) EmptyResponse() *response.Response {
func (m *MockResponseProducer) EmptyResponse() (*response.Response, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "EmptyResponse")
ret0, _ := ret[0].(*response.Response)
return ret0
ret1, _ := ret[1].(error)
return ret0, ret1
}
// EmptyResponse indicates an expected call of EmptyResponse.

View file

@ -7,7 +7,7 @@ import (
type ResponseProducer interface {
NewResponse(batchSize int) (*Response, error)
EmptyResponse() *Response
EmptyResponse() (*Response, error)
}
type responseProducer struct {
@ -45,14 +45,18 @@ func (r *responseProducer) NewResponse(batchSize int) (*Response, error) {
}, nil
}
func (r *responseProducer) EmptyResponse() *Response {
func (r *responseProducer) EmptyResponse() (*Response, error) {
headsCopy := make([]string, len(r.tree.Heads()))
copy(headsCopy, r.tree.Heads())
snapshotPath, err := r.tree.SnapshotPath()
if err != nil {
return nil, err
}
return &Response{
Heads: headsCopy,
SpaceId: r.spaceId,
ObjectId: r.objectId,
Root: r.tree.Header(),
SnapshotPath: r.tree.SnapshotPath(),
}
SnapshotPath: snapshotPath,
}, nil
}

View file

@ -73,7 +73,7 @@ func (s *syncHandler) HandleHeadUpdate(ctx context.Context, statusUpdater syncst
return nil, nil
}
statusUpdater.HeadsApply(peerId, update.ObjectId(), contentUpdate.Heads, false)
return s.syncClient.CreateFullSyncRequest(peerId, s.tree), nil
return s.syncClient.CreateFullSyncRequest(peerId, s.tree)
}
rawChangesPayload := objecttree.RawChangesPayload{
NewHeads: contentUpdate.Heads,
@ -85,7 +85,7 @@ func (s *syncHandler) HandleHeadUpdate(ctx context.Context, statusUpdater syncst
return nil, err
}
if !slice.UnsortedEquals(res.Heads, contentUpdate.Heads) {
return s.syncClient.CreateFullSyncRequest(peerId, s.tree), nil
return s.syncClient.CreateFullSyncRequest(peerId, s.tree)
}
return nil, nil
}
@ -119,10 +119,17 @@ func (s *syncHandler) HandleStreamRequest(ctx context.Context, rq syncdeps.Reque
var returnReq syncdeps.Request
if slice.UnsortedEquals(curHeads, request.Heads) || slice.ContainsSorted(request.Heads, curHeads) {
if len(curHeads) != len(request.Heads) {
returnReq = s.syncClient.CreateFullSyncRequest(rq.PeerId(), s.tree)
}
resp := producer.EmptyResponse()
returnReq, err = s.syncClient.CreateFullSyncRequest(rq.PeerId(), s.tree)
if err != nil {
s.tree.Unlock()
return nil, err
}
}
resp, err := producer.EmptyResponse()
s.tree.Unlock()
if err != nil {
return nil, err
}
protoResp, err := resp.ProtoMessage()
if err != nil {
return nil, err
@ -130,7 +137,11 @@ func (s *syncHandler) HandleStreamRequest(ctx context.Context, rq syncdeps.Reque
return returnReq, send(protoResp)
} else {
if len(request.Heads) != 0 {
returnReq = s.syncClient.CreateFullSyncRequest(rq.PeerId(), s.tree)
returnReq, err = s.syncClient.CreateFullSyncRequest(rq.PeerId(), s.tree)
if err != nil {
s.tree.Unlock()
return nil, err
}
}
s.tree.Unlock()
}

View file

@ -107,7 +107,7 @@ func TestSyncHandler_HeadUpdate(t *testing.T) {
returnReq := &objectmessages.Request{
Bytes: []byte("abcd"),
}
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq)
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq, nil)
req, err := fx.syncHandler.HandleHeadUpdate(ctx, fx.syncStatus, headUpdate)
require.NoError(t, err)
require.Equal(t, returnReq, req)
@ -174,7 +174,7 @@ func TestSyncHandler_HeadUpdate(t *testing.T) {
returnReq := &objectmessages.Request{
Bytes: []byte("abcd"),
}
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq)
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq, nil)
req, err := fx.syncHandler.HandleHeadUpdate(ctx, fx.syncStatus, headUpdate)
require.NoError(t, err)
require.Equal(t, returnReq, req)
@ -205,7 +205,7 @@ func TestSyncHandler_HandleStreamRequest(t *testing.T) {
returnReq := &objectmessages.Request{
Bytes: []byte("abcde"),
}
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq)
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq, nil)
fx.tree.EXPECT().Heads().Return([]string{"curHead"})
resp := &response.Response{
Heads: heads,
@ -287,8 +287,8 @@ func TestSyncHandler_HandleStreamRequest(t *testing.T) {
returnReq := &objectmessages.Request{
Bytes: []byte("abcde"),
}
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq)
producer.EXPECT().EmptyResponse().Return(resp)
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq, nil)
producer.EXPECT().EmptyResponse().Return(resp, nil)
ctx = peer.CtxWithPeerId(ctx, "peerId")
callCount := 0
req, err := fx.syncHandler.HandleStreamRequest(ctx, request, testUpdater{}, func(resp proto.Message) error {
@ -322,8 +322,8 @@ func TestSyncHandler_HandleStreamRequest(t *testing.T) {
returnReq := &objectmessages.Request{
Bytes: []byte("abcde"),
}
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq)
producer.EXPECT().EmptyResponse().Return(resp)
fx.client.EXPECT().CreateFullSyncRequest("peerId", fx.tree).Return(returnReq, nil)
producer.EXPECT().EmptyResponse().Return(resp, nil)
ctx = peer.CtxWithPeerId(ctx, "peerId")
callCount := 0
req, err := fx.syncHandler.HandleStreamRequest(ctx, request, testUpdater{}, func(resp proto.Message) error {

View file

@ -311,7 +311,10 @@ func (s *syncTree) checkAlive() (err error) {
func (s *syncTree) SyncWithPeer(ctx context.Context, p peer.Peer) (err error) {
s.Lock()
defer s.Unlock()
req := s.syncClient.CreateFullSyncRequest(p.Id(), s)
req, err := s.syncClient.CreateFullSyncRequest(p.Id(), s)
if err != nil {
return
}
return s.syncClient.QueueRequest(ctx, req)
}

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_updatelistener/mock_updatelistener.go github.com/anyproto/any-sync/commonspace/object/tree/synctree/updatelistener UpdateListener
//
// Package mock_updatelistener is a generated GoMock package.
package mock_updatelistener

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_treemanager/mock_treemanager.go github.com/anyproto/any-sync/commonspace/object/treemanager TreeManager
//
// Package mock_treemanager is a generated GoMock package.
package mock_treemanager

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_treesyncer/mock_treesyncer.go github.com/anyproto/any-sync/commonspace/object/treesyncer TreeSyncer
//
// Package mock_treesyncer is a generated GoMock package.
package mock_treesyncer

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_objectmanager/mock_objectmanager.go github.com/anyproto/any-sync/commonspace/objectmanager ObjectManager
//
// Package mock_objectmanager is a generated GoMock package.
package mock_objectmanager

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_objecttreebuilder/mock_objecttreebuilder.go github.com/anyproto/any-sync/commonspace/objecttreebuilder TreeBuilder
//
// Package mock_objecttreebuilder is a generated GoMock package.
package mock_objecttreebuilder

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_peermanager/mock_peermanager.go github.com/anyproto/any-sync/commonspace/peermanager PeerManager
//
// Package mock_peermanager is a generated GoMock package.
package mock_peermanager

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_settingsstate/mock_settingsstate.go github.com/anyproto/any-sync/commonspace/settings/settingsstate StateBuilder,ChangeFactory
//
// Package mock_settingsstate is a generated GoMock package.
package mock_settingsstate

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_spacestorage/mock_spacestorage.go github.com/anyproto/any-sync/commonspace/spacestorage SpaceStorage
//
// Package mock_spacestorage is a generated GoMock package.
package mock_spacestorage

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_spacesyncproto/mock_spacesyncproto.go github.com/anyproto/any-sync/commonspace/spacesyncproto DRPCSpaceSyncClient
//
// Package mock_spacesyncproto is a generated GoMock package.
package mock_spacesyncproto

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_syncdeps/mock_syncdeps.go github.com/anyproto/any-sync/commonspace/sync/syncdeps ObjectSyncHandler,RequestSender,ResponseCollector
//
// Package mock_syncdeps is a generated GoMock package.
package mock_syncdeps

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_syncstatus/mock_syncstatus.go github.com/anyproto/any-sync/commonspace/syncstatus StatusUpdater
//
// Package mock_syncstatus is a generated GoMock package.
package mock_syncstatus

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_consensusclient/mock_consensusclient.go github.com/anyproto/any-sync/consensus/consensusclient Service
//
// Package mock_consensusclient is a generated GoMock package.
package mock_consensusclient

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_coordinatorclient/mock_coordinatorclient.go github.com/anyproto/any-sync/coordinator/coordinatorclient CoordinatorClient
//
// Package mock_coordinatorclient is a generated GoMock package.
package mock_coordinatorclient

View file

@ -5,7 +5,6 @@
//
// mockgen -destination=mock/mock_nameserviceclient.go -package=mock_nameserviceclient github.com/anyproto/any-sync/nameservice/nameserviceclient AnyNsClientService
//
// Package mock_nameserviceclient is a generated GoMock package.
package mock_nameserviceclient

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_peer/mock_peer.go github.com/anyproto/any-sync/net/peer Peer
//
// Package mock_peer is a generated GoMock package.
package mock_peer

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_pool/mock_pool.go github.com/anyproto/any-sync/net/pool Pool,Service
//
// Package mock_pool is a generated GoMock package.
package mock_pool

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_limiter/mock_limiter.go github.com/anyproto/any-sync/net/rpc/limiter RpcLimiter
//
// Package mock_limiter is a generated GoMock package.
package mock_limiter

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_transport/mock_transport.go github.com/anyproto/any-sync/net/transport Transport,MultiConn
//
// Package mock_transport is a generated GoMock package.
package mock_transport

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_nodeclient/mock_nodeclient.go github.com/anyproto/any-sync/node/nodeclient NodeClient
//
// Package mock_nodeclient is a generated GoMock package.
package mock_nodeclient

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_nodeconf/mock_nodeconf.go github.com/anyproto/any-sync/nodeconf Service
//
// Package mock_nodeconf is a generated GoMock package.
package mock_nodeconf

View file

@ -5,7 +5,6 @@
//
// mockgen -destination=mock/mock_paymentserviceclient.go -package=mock_paymentserviceclient github.com/anyproto/any-sync/paymentservice/paymentserviceclient AnyPpClientService
//
// Package mock_paymentserviceclient is a generated GoMock package.
package mock_paymentserviceclient

View file

@ -5,7 +5,6 @@
//
// mockgen -destination mock_periodicsync/mock_periodicsync.go github.com/anyproto/any-sync/util/periodicsync PeriodicSync
//
// Package mock_periodicsync is a generated GoMock package.
package mock_periodicsync