1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-08 05:57:03 +09:00

Fix headsync tests

This commit is contained in:
mcrakhman 2025-02-05 16:51:39 +01:00
parent d2c85ae7e1
commit 6f87526c2b
No known key found for this signature in database
GPG key ID: DED12CFEF5B8396B
6 changed files with 451 additions and 62 deletions

View file

@ -11,9 +11,13 @@ import (
"storj.io/drpc"
"github.com/anyproto/any-sync/app/ldiff"
"github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto"
"github.com/anyproto/any-sync/commonspace/headsync/headstorage"
"github.com/anyproto/any-sync/commonspace/headsync/statestorage"
"github.com/anyproto/any-sync/commonspace/object/acl/list"
"github.com/anyproto/any-sync/commonspace/object/acl/list/mock_list"
"github.com/anyproto/any-sync/commonspace/object/tree/objecttree"
"github.com/anyproto/any-sync/commonspace/object/tree/objecttree/mock_objecttree"
"github.com/anyproto/any-sync/commonspace/spacesyncproto"
"github.com/anyproto/any-sync/consensus/consensusproto"
"github.com/anyproto/any-sync/net/peer"
"github.com/anyproto/any-sync/net/rpc/rpctest"
)
@ -47,7 +51,7 @@ func (p pushSpaceRequestMatcher) Matches(x interface{}) bool {
return false
}
return res.Payload.AclPayloadId == p.aclRootId && res.Payload.SpaceHeader == p.spaceHeader && res.Payload.SpaceSettingsPayloadId == p.settingsId && bytes.Equal(p.credential, res.Credential)
return res.Payload.AclPayloadId == p.aclRootId && bytes.Equal(res.Payload.SpaceHeader.RawHeader, p.spaceHeader.RawHeader) && res.Payload.SpaceSettingsPayloadId == p.settingsId && bytes.Equal(p.credential, res.Credential)
}
func (p pushSpaceRequestMatcher) String() string {
@ -60,7 +64,6 @@ func (fx *headSyncFixture) initDiffSyncer(t *testing.T) {
fx.diffSyncer.clientFactory = spacesyncproto.ClientFactoryFunc(func(cc drpc.Conn) spacesyncproto.DRPCSpaceSyncClient {
return fx.clientMock
})
fx.deletionStateMock.EXPECT().AddObserver(gomock.Any())
fx.diffSyncer.Init()
}
@ -85,7 +88,7 @@ func TestDiffSyncer(t *testing.T) {
fx.deletionStateMock.EXPECT().Filter(nil).Return(nil).Times(1)
fx.treeSyncerMock.EXPECT().SyncAll(gomock.Any(), mPeer, []string{"changed"}, []string{"new"}).Return(nil)
fx.peerManagerMock.EXPECT().KeepAlive(gomock.Any())
require.NoError(t, fx.diffSyncer.Sync(ctx))
})
@ -130,29 +133,32 @@ func TestDiffSyncer(t *testing.T) {
fx.initDiffSyncer(t)
defer fx.stop()
deletedId := "id"
fx.aclMock.EXPECT().Id().AnyTimes().Return("aclId")
fx.deletionStateMock.EXPECT().Exists(deletedId).Return(true)
// this should not result in any mock being called
fx.diffSyncer.UpdateHeads(deletedId, []string{"someHead"})
fx.diffMock.EXPECT().RemoveId(deletedId).Return(nil)
fx.diffMock.EXPECT().Hash().Return("hash")
fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash").Return(nil)
upd := headstorage.DeletedStatusDeleted
fx.diffSyncer.updateHeads(headstorage.HeadsUpdate{
Id: "id",
DeletedStatus: &upd,
})
})
t.Run("update heads updates diff", func(t *testing.T) {
t.Run("deletion state update objects", func(t *testing.T) {
fx := newHeadSyncFixture(t)
fx.initDiffSyncer(t)
defer fx.stop()
newId := "newId"
newHeads := []string{"h1", "h2"}
hash := "hash"
fx.aclMock.EXPECT().Id().AnyTimes().Return("aclId")
updatedId := "id"
fx.diffMock.EXPECT().Hash().Return("hash")
fx.deletionStateMock.EXPECT().Exists(updatedId).Return(false)
fx.diffMock.EXPECT().Set(ldiff.Element{
Id: newId,
Head: concatStrings(newHeads),
Id: updatedId,
Head: "head",
})
fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash").Return(nil)
fx.diffSyncer.updateHeads(headstorage.HeadsUpdate{
Id: "id",
Heads: []string{"head"},
})
fx.diffMock.EXPECT().Hash().Return(hash)
fx.deletionStateMock.EXPECT().Exists(newId).Return(false)
fx.storageMock.EXPECT().WriteSpaceHash(hash)
fx.diffSyncer.UpdateHeads(newId, newHeads)
})
t.Run("diff syncer sync space missing", func(t *testing.T) {
@ -161,18 +167,13 @@ func TestDiffSyncer(t *testing.T) {
defer fx.stop()
fx.aclMock.EXPECT().Id().AnyTimes().Return("aclId")
fx.treeSyncerMock.EXPECT().ShouldSync(gomock.Any()).Return(true)
aclStorageMock := mock_liststorage.NewMockListStorage(fx.ctrl)
settingsStorage := mock_treestorage.NewMockTreeStorage(fx.ctrl)
aclStorageMock := mock_list.NewMockStorage(fx.ctrl)
settingsStorage := mock_objecttree.NewMockStorage(fx.ctrl)
settingsId := "settingsId"
aclRootId := "aclRootId"
aclRoot := &consensusproto.RawRecordWithId{
Id: aclRootId,
spaceHeader := &spacesyncproto.RawSpaceHeaderWithId{
RawHeader: []byte{1},
}
settingsRoot := &treechangeproto.RawTreeChangeWithId{
Id: settingsId,
}
spaceHeader := &spacesyncproto.RawSpaceHeaderWithId{}
spaceSettingsId := "spaceSettingsId"
credential := []byte("credential")
remDiff := NewRemoteDiff(fx.spaceState.SpaceId, fx.clientMock)
@ -184,14 +185,18 @@ func TestDiffSyncer(t *testing.T) {
Return(nil, nil, nil, spacesyncproto.ErrSpaceMissing)
fx.storageMock.EXPECT().AclStorage().Return(aclStorageMock, nil)
fx.storageMock.EXPECT().SpaceHeader().Return(spaceHeader, nil)
fx.storageMock.EXPECT().SpaceSettingsId().Return(spaceSettingsId)
fx.storageMock.EXPECT().TreeStorage(spaceSettingsId).Return(settingsStorage, nil)
fx.stateStorage.EXPECT().GetState(gomock.Any()).Return(statestorage.State{
SettingsId: settingsId,
SpaceHeader: []byte{1},
}, nil)
fx.storageMock.EXPECT().TreeStorage(gomock.Any(), settingsId).Return(settingsStorage, nil)
settingsStorage.EXPECT().Root().Return(settingsRoot, nil)
settingsStorage.EXPECT().Root(gomock.Any()).Return(objecttree.StorageChange{RawChange: nil, Id: settingsId}, nil)
aclStorageMock.EXPECT().
Root().
Return(aclRoot, nil)
Root(gomock.Any()).
Return(list.StorageRecord{
Id: aclRootId,
}, nil)
fx.credentialProviderMock.EXPECT().
GetCredential(gomock.Any(), spaceHeader).
Return(credential, nil)

View file

@ -15,7 +15,10 @@ import (
"github.com/anyproto/any-sync/commonspace/credentialprovider/mock_credentialprovider"
"github.com/anyproto/any-sync/commonspace/deletionstate"
"github.com/anyproto/any-sync/commonspace/deletionstate/mock_deletionstate"
"github.com/anyproto/any-sync/commonspace/headsync/headstorage"
"github.com/anyproto/any-sync/commonspace/headsync/headstorage/mock_headstorage"
"github.com/anyproto/any-sync/commonspace/headsync/mock_headsync"
"github.com/anyproto/any-sync/commonspace/headsync/statestorage/mock_statestorage"
"github.com/anyproto/any-sync/commonspace/object/acl/list"
"github.com/anyproto/any-sync/commonspace/object/acl/syncacl"
"github.com/anyproto/any-sync/commonspace/object/acl/syncacl/mock_syncacl"
@ -64,6 +67,8 @@ type headSyncFixture struct {
diffMock *mock_ldiff.MockDiff
clientMock *mock_spacesyncproto.MockDRPCSpaceSyncClient
aclMock *mock_syncacl.MockSyncAcl
headStorage *mock_headstorage.MockHeadStorage
stateStorage *mock_statestorage.MockStateStorage
headSync *headSync
diffSyncer *diffSyncer
}
@ -87,12 +92,15 @@ func newHeadSyncFixture(t *testing.T) *headSyncFixture {
deletionStateMock.EXPECT().Name().AnyTimes().Return(deletionstate.CName)
diffSyncerMock := mock_headsync.NewMockDiffSyncer(ctrl)
treeSyncerMock := mock_treesyncer.NewMockTreeSyncer(ctrl)
headStorage := mock_headstorage.NewMockHeadStorage(ctrl)
stateStorage := mock_statestorage.NewMockStateStorage(ctrl)
storageMock.EXPECT().HeadStorage().AnyTimes().Return(headStorage)
storageMock.EXPECT().StateStorage().AnyTimes().Return(stateStorage)
treeSyncerMock.EXPECT().Name().AnyTimes().Return(treesyncer.CName)
diffMock := mock_ldiff.NewMockDiff(ctrl)
clientMock := mock_spacesyncproto.NewMockDRPCSpaceSyncClient(ctrl)
aclMock := mock_syncacl.NewMockSyncAcl(ctrl)
aclMock.EXPECT().Name().AnyTimes().Return(syncacl.CName)
aclMock.EXPECT().SetHeadUpdater(gomock.Any()).AnyTimes()
hs := &headSync{}
a := &app.App{}
@ -117,6 +125,8 @@ func newHeadSyncFixture(t *testing.T) *headSyncFixture {
credentialProviderMock: credentialProviderMock,
treeManagerMock: treeManagerMock,
deletionStateMock: deletionStateMock,
headStorage: headStorage,
stateStorage: stateStorage,
headSync: hs,
diffSyncerMock: diffSyncerMock,
treeSyncerMock: treeSyncerMock,
@ -131,6 +141,7 @@ func (fx *headSyncFixture) init(t *testing.T) {
return fx.diffSyncerMock
}
fx.diffSyncerMock.EXPECT().Init()
fx.headStorage.EXPECT().AddObserver(gomock.Any())
err := fx.headSync.Init(fx.app)
require.NoError(t, err)
fx.headSync.diff = fx.diffMock
@ -145,44 +156,96 @@ func TestHeadSync(t *testing.T) {
t.Run("run close", func(t *testing.T) {
fx := newHeadSyncFixture(t)
fx.init(t)
fx.initDiffSyncer(t)
defer fx.stop()
ids := []string{"id1"}
treeMock := mock_treestorage.NewMockTreeStorage(fx.ctrl)
fx.storageMock.EXPECT().StoredIds().Return(ids, nil)
fx.storageMock.EXPECT().TreeStorage(ids[0]).Return(treeMock, nil)
headEntries := []headstorage.HeadsEntry{
{
Id: "id1",
Heads: []string{"h1", "h2"},
IsDerived: false,
},
{
Id: "id2",
Heads: []string{"h3", "h4"},
IsDerived: false,
},
}
fx.headStorage.EXPECT().IterateEntries(gomock.Any(), gomock.Any(), gomock.Any()).
DoAndReturn(func(ctx context.Context, opts headstorage.IterOpts, entryIter headstorage.EntryIterator) error {
for _, entry := range headEntries {
if res, err := entryIter(entry); err != nil || !res {
return err
}
}
return nil
})
fx.aclMock.EXPECT().Id().AnyTimes().Return("aclId")
fx.aclMock.EXPECT().Head().AnyTimes().Return(&list.AclRecord{Id: "headId"})
treeMock.EXPECT().Heads().Return([]string{"h1", "h2"}, nil)
fx.diffMock.EXPECT().Set(ldiff.Element{
Id: "id1",
Head: "h1h2",
}, ldiff.Element{
Id: "id2",
Head: "h3h4",
}, ldiff.Element{
Id: "aclId",
Head: "headId",
})
fx.diffMock.EXPECT().Hash().Return("hash")
fx.storageMock.EXPECT().WriteSpaceHash("hash").Return(nil)
fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash").Return(nil)
fx.diffSyncerMock.EXPECT().Sync(gomock.Any()).Return(nil)
fx.diffSyncerMock.EXPECT().Close()
err := fx.headSync.Run(ctx)
require.NoError(t, err)
err = fx.headSync.Close(ctx)
require.NoError(t, err)
})
t.Run("update heads", func(t *testing.T) {
t.Run("run close, no empty derived", func(t *testing.T) {
fx := newHeadSyncFixture(t)
fx.init(t)
fx.initDiffSyncer(t)
defer fx.stop()
fx.diffSyncerMock.EXPECT().UpdateHeads("id1", []string{"h1"})
fx.headSync.UpdateHeads("id1", []string{"h1"})
})
headEntries := []headstorage.HeadsEntry{
{
Id: "id1",
Heads: []string{"id1"},
IsDerived: true,
},
{
Id: "id2",
Heads: []string{"h3", "h4"},
IsDerived: false,
},
}
fx.headStorage.EXPECT().IterateEntries(gomock.Any(), gomock.Any(), gomock.Any()).
DoAndReturn(func(ctx context.Context, opts headstorage.IterOpts, entryIter headstorage.EntryIterator) error {
for _, entry := range headEntries {
if res, err := entryIter(entry); err != nil || !res {
return err
}
}
return nil
})
fx.aclMock.EXPECT().Id().AnyTimes().Return("aclId")
fx.aclMock.EXPECT().Head().AnyTimes().Return(&list.AclRecord{Id: "headId"})
t.Run("remove objects", func(t *testing.T) {
fx := newHeadSyncFixture(t)
fx.init(t)
defer fx.stop()
fx.diffSyncerMock.EXPECT().RemoveObjects([]string{"id1"})
fx.headSync.RemoveObjects([]string{"id1"})
fx.diffMock.EXPECT().Set(ldiff.Element{
Id: "id2",
Head: "h3h4",
}, ldiff.Element{
Id: "aclId",
Head: "headId",
})
fx.diffMock.EXPECT().Hash().Return("hash")
fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash").Return(nil)
fx.diffSyncerMock.EXPECT().Sync(gomock.Any()).Return(nil)
fx.diffSyncerMock.EXPECT().Close()
err := fx.headSync.Run(ctx)
require.NoError(t, err)
err = fx.headSync.Close(ctx)
require.NoError(t, err)
})
}

View file

@ -1,4 +1,4 @@
//go:generate mockgen -destination mock_list/mock_list.go github.com/anyproto/any-sync/commonspace/object/acl/list AclList
//go:generate mockgen -destination mock_list/mock_list.go github.com/anyproto/any-sync/commonspace/object/acl/list AclList,Storage
package list
import (

View file

@ -1,9 +1,9 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/anyproto/any-sync/commonspace/object/acl/list (interfaces: AclList)
// Source: github.com/anyproto/any-sync/commonspace/object/acl/list (interfaces: AclList,Storage)
//
// Generated by this command:
//
// mockgen -destination mock_list/mock_list.go github.com/anyproto/any-sync/commonspace/object/acl/list AclList
// 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.
@ -356,3 +356,142 @@ func (mr *MockAclListMockRecorder) ValidateRawRecord(arg0, arg1 any) *gomock.Cal
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateRawRecord", reflect.TypeOf((*MockAclList)(nil).ValidateRawRecord), arg0, arg1)
}
// MockStorage is a mock of Storage interface.
type MockStorage struct {
ctrl *gomock.Controller
recorder *MockStorageMockRecorder
}
// MockStorageMockRecorder is the mock recorder for MockStorage.
type MockStorageMockRecorder struct {
mock *MockStorage
}
// NewMockStorage creates a new mock instance.
func NewMockStorage(ctrl *gomock.Controller) *MockStorage {
mock := &MockStorage{ctrl: ctrl}
mock.recorder = &MockStorageMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockStorage) EXPECT() *MockStorageMockRecorder {
return m.recorder
}
// AddAll mocks base method.
func (m *MockStorage) AddAll(arg0 context.Context, arg1 []list.StorageRecord) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "AddAll", arg0, arg1)
ret0, _ := ret[0].(error)
return ret0
}
// AddAll indicates an expected call of AddAll.
func (mr *MockStorageMockRecorder) AddAll(arg0, arg1 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddAll", reflect.TypeOf((*MockStorage)(nil).AddAll), arg0, arg1)
}
// Get mocks base method.
func (m *MockStorage) Get(arg0 context.Context, arg1 string) (list.StorageRecord, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Get", arg0, arg1)
ret0, _ := ret[0].(list.StorageRecord)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Get indicates an expected call of Get.
func (mr *MockStorageMockRecorder) Get(arg0, arg1 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockStorage)(nil).Get), arg0, arg1)
}
// GetAfterOrder mocks base method.
func (m *MockStorage) GetAfterOrder(arg0 context.Context, arg1 int, arg2 func(context.Context, list.StorageRecord) (bool, error)) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetAfterOrder", arg0, arg1, arg2)
ret0, _ := ret[0].(error)
return ret0
}
// GetAfterOrder indicates an expected call of GetAfterOrder.
func (mr *MockStorageMockRecorder) GetAfterOrder(arg0, arg1, arg2 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAfterOrder", reflect.TypeOf((*MockStorage)(nil).GetAfterOrder), arg0, arg1, arg2)
}
// GetBeforeOrder mocks base method.
func (m *MockStorage) GetBeforeOrder(arg0 context.Context, arg1 int, arg2 func(context.Context, list.StorageRecord) (bool, error)) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetBeforeOrder", arg0, arg1, arg2)
ret0, _ := ret[0].(error)
return ret0
}
// GetBeforeOrder indicates an expected call of GetBeforeOrder.
func (mr *MockStorageMockRecorder) GetBeforeOrder(arg0, arg1, arg2 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBeforeOrder", reflect.TypeOf((*MockStorage)(nil).GetBeforeOrder), arg0, arg1, arg2)
}
// Has mocks base method.
func (m *MockStorage) Has(arg0 context.Context, arg1 string) (bool, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Has", arg0, arg1)
ret0, _ := ret[0].(bool)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Has indicates an expected call of Has.
func (mr *MockStorageMockRecorder) Has(arg0, arg1 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockStorage)(nil).Has), arg0, arg1)
}
// Head mocks base method.
func (m *MockStorage) Head(arg0 context.Context) (string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Head", arg0)
ret0, _ := ret[0].(string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Head indicates an expected call of Head.
func (mr *MockStorageMockRecorder) Head(arg0 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Head", reflect.TypeOf((*MockStorage)(nil).Head), arg0)
}
// Id mocks base method.
func (m *MockStorage) Id() string {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Id")
ret0, _ := ret[0].(string)
return ret0
}
// Id indicates an expected call of Id.
func (mr *MockStorageMockRecorder) Id() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Id", reflect.TypeOf((*MockStorage)(nil).Id))
}
// Root mocks base method.
func (m *MockStorage) Root(arg0 context.Context) (list.StorageRecord, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Root", arg0)
ret0, _ := ret[0].(list.StorageRecord)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Root indicates an expected call of Root.
func (mr *MockStorageMockRecorder) Root(arg0 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Root", reflect.TypeOf((*MockStorage)(nil).Root), arg0)
}

View file

@ -1,9 +1,9 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/anyproto/any-sync/commonspace/object/tree/objecttree (interfaces: ObjectTree)
// Source: github.com/anyproto/any-sync/commonspace/object/tree/objecttree (interfaces: ObjectTree,Storage)
//
// Generated by this command:
//
// mockgen -destination mock_objecttree/mock_objecttree.go github.com/anyproto/any-sync/commonspace/object/tree/objecttree ObjectTree
// 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.
@ -470,3 +470,185 @@ func (mr *MockObjectTreeMockRecorder) UnpackChange(arg0 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnpackChange", reflect.TypeOf((*MockObjectTree)(nil).UnpackChange), arg0)
}
// MockStorage is a mock of Storage interface.
type MockStorage struct {
ctrl *gomock.Controller
recorder *MockStorageMockRecorder
}
// MockStorageMockRecorder is the mock recorder for MockStorage.
type MockStorageMockRecorder struct {
mock *MockStorage
}
// NewMockStorage creates a new mock instance.
func NewMockStorage(ctrl *gomock.Controller) *MockStorage {
mock := &MockStorage{ctrl: ctrl}
mock.recorder = &MockStorageMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockStorage) EXPECT() *MockStorageMockRecorder {
return m.recorder
}
// AddAll mocks base method.
func (m *MockStorage) AddAll(arg0 context.Context, arg1 []objecttree.StorageChange, arg2 []string, arg3 string) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "AddAll", arg0, arg1, arg2, arg3)
ret0, _ := ret[0].(error)
return ret0
}
// AddAll indicates an expected call of AddAll.
func (mr *MockStorageMockRecorder) AddAll(arg0, arg1, arg2, arg3 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddAll", reflect.TypeOf((*MockStorage)(nil).AddAll), arg0, arg1, arg2, arg3)
}
// AddAllNoError mocks base method.
func (m *MockStorage) AddAllNoError(arg0 context.Context, arg1 []objecttree.StorageChange, arg2 []string, arg3 string) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "AddAllNoError", arg0, arg1, arg2, arg3)
ret0, _ := ret[0].(error)
return ret0
}
// AddAllNoError indicates an expected call of AddAllNoError.
func (mr *MockStorageMockRecorder) AddAllNoError(arg0, arg1, arg2, arg3 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddAllNoError", reflect.TypeOf((*MockStorage)(nil).AddAllNoError), arg0, arg1, arg2, arg3)
}
// Close mocks base method.
func (m *MockStorage) 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 *MockStorageMockRecorder) Close() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockStorage)(nil).Close))
}
// CommonSnapshot mocks base method.
func (m *MockStorage) CommonSnapshot(arg0 context.Context) (string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "CommonSnapshot", arg0)
ret0, _ := ret[0].(string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// CommonSnapshot indicates an expected call of CommonSnapshot.
func (mr *MockStorageMockRecorder) CommonSnapshot(arg0 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CommonSnapshot", reflect.TypeOf((*MockStorage)(nil).CommonSnapshot), arg0)
}
// Delete mocks base method.
func (m *MockStorage) Delete(arg0 context.Context) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Delete", arg0)
ret0, _ := ret[0].(error)
return ret0
}
// Delete indicates an expected call of Delete.
func (mr *MockStorageMockRecorder) Delete(arg0 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockStorage)(nil).Delete), arg0)
}
// Get mocks base method.
func (m *MockStorage) Get(arg0 context.Context, arg1 string) (objecttree.StorageChange, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Get", arg0, arg1)
ret0, _ := ret[0].(objecttree.StorageChange)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Get indicates an expected call of Get.
func (mr *MockStorageMockRecorder) Get(arg0, arg1 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockStorage)(nil).Get), arg0, arg1)
}
// GetAfterOrder mocks base method.
func (m *MockStorage) GetAfterOrder(arg0 context.Context, arg1 string, arg2 func(context.Context, objecttree.StorageChange) (bool, error)) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetAfterOrder", arg0, arg1, arg2)
ret0, _ := ret[0].(error)
return ret0
}
// GetAfterOrder indicates an expected call of GetAfterOrder.
func (mr *MockStorageMockRecorder) GetAfterOrder(arg0, arg1, arg2 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAfterOrder", reflect.TypeOf((*MockStorage)(nil).GetAfterOrder), arg0, arg1, arg2)
}
// Has mocks base method.
func (m *MockStorage) Has(arg0 context.Context, arg1 string) (bool, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Has", arg0, arg1)
ret0, _ := ret[0].(bool)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Has indicates an expected call of Has.
func (mr *MockStorageMockRecorder) Has(arg0, arg1 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Has", reflect.TypeOf((*MockStorage)(nil).Has), arg0, arg1)
}
// Heads mocks base method.
func (m *MockStorage) Heads(arg0 context.Context) ([]string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Heads", arg0)
ret0, _ := ret[0].([]string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Heads indicates an expected call of Heads.
func (mr *MockStorageMockRecorder) Heads(arg0 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Heads", reflect.TypeOf((*MockStorage)(nil).Heads), arg0)
}
// Id mocks base method.
func (m *MockStorage) Id() string {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Id")
ret0, _ := ret[0].(string)
return ret0
}
// Id indicates an expected call of Id.
func (mr *MockStorageMockRecorder) Id() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Id", reflect.TypeOf((*MockStorage)(nil).Id))
}
// Root mocks base method.
func (m *MockStorage) Root(arg0 context.Context) (objecttree.StorageChange, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Root", arg0)
ret0, _ := ret[0].(objecttree.StorageChange)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Root indicates an expected call of Root.
func (mr *MockStorageMockRecorder) Root(arg0 any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Root", reflect.TypeOf((*MockStorage)(nil).Root), arg0)
}

View file

@ -1,4 +1,4 @@
//go:generate mockgen -destination mock_objecttree/mock_objecttree.go github.com/anyproto/any-sync/commonspace/object/tree/objecttree ObjectTree
//go:generate mockgen -destination mock_objecttree/mock_objecttree.go github.com/anyproto/any-sync/commonspace/object/tree/objecttree ObjectTree,Storage
package objecttree
import (