mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-08 05:57:03 +09:00
Fix tests
This commit is contained in:
parent
875ca9c48a
commit
e735d23f04
5 changed files with 139 additions and 26 deletions
|
@ -1,7 +1,7 @@
|
|||
// Package ldiff provides a container of elements with fixed id and changeable content.
|
||||
// Diff can calculate the difference with another diff container (you can make it remote) with minimum hops and traffic.
|
||||
//
|
||||
//go:generate mockgen -destination mock_ldiff/mock_ldiff.go github.com/anyproto/any-sync/app/ldiff Diff,Remote
|
||||
//go:generate mockgen -destination mock_ldiff/mock_ldiff.go github.com/anyproto/any-sync/app/ldiff Diff,Remote,DiffContainer
|
||||
package ldiff
|
||||
|
||||
import (
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: github.com/anyproto/any-sync/app/ldiff (interfaces: Diff,Remote)
|
||||
// Source: github.com/anyproto/any-sync/app/ldiff (interfaces: Diff,Remote,DiffContainer)
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -destination mock_ldiff/mock_ldiff.go github.com/anyproto/any-sync/app/ldiff Diff,Remote
|
||||
// mockgen -destination mock_ldiff/mock_ldiff.go github.com/anyproto/any-sync/app/ldiff Diff,Remote,DiffContainer
|
||||
//
|
||||
// Package mock_ldiff is a generated GoMock package.
|
||||
package mock_ldiff
|
||||
|
@ -224,3 +224,100 @@ func (mr *MockRemoteMockRecorder) Ranges(arg0, arg1, arg2 any) *gomock.Call {
|
|||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Ranges", reflect.TypeOf((*MockRemote)(nil).Ranges), arg0, arg1, arg2)
|
||||
}
|
||||
|
||||
// MockDiffContainer is a mock of DiffContainer interface.
|
||||
type MockDiffContainer struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockDiffContainerMockRecorder
|
||||
}
|
||||
|
||||
// MockDiffContainerMockRecorder is the mock recorder for MockDiffContainer.
|
||||
type MockDiffContainerMockRecorder struct {
|
||||
mock *MockDiffContainer
|
||||
}
|
||||
|
||||
// NewMockDiffContainer creates a new mock instance.
|
||||
func NewMockDiffContainer(ctrl *gomock.Controller) *MockDiffContainer {
|
||||
mock := &MockDiffContainer{ctrl: ctrl}
|
||||
mock.recorder = &MockDiffContainerMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockDiffContainer) EXPECT() *MockDiffContainerMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// DiffTypeCheck mocks base method.
|
||||
func (m *MockDiffContainer) DiffTypeCheck(arg0 context.Context, arg1 ldiff.RemoteTypeChecker) (bool, ldiff.Diff, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "DiffTypeCheck", arg0, arg1)
|
||||
ret0, _ := ret[0].(bool)
|
||||
ret1, _ := ret[1].(ldiff.Diff)
|
||||
ret2, _ := ret[2].(error)
|
||||
return ret0, ret1, ret2
|
||||
}
|
||||
|
||||
// DiffTypeCheck indicates an expected call of DiffTypeCheck.
|
||||
func (mr *MockDiffContainerMockRecorder) DiffTypeCheck(arg0, arg1 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DiffTypeCheck", reflect.TypeOf((*MockDiffContainer)(nil).DiffTypeCheck), arg0, arg1)
|
||||
}
|
||||
|
||||
// NewDiff mocks base method.
|
||||
func (m *MockDiffContainer) NewDiff() ldiff.Diff {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "NewDiff")
|
||||
ret0, _ := ret[0].(ldiff.Diff)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// NewDiff indicates an expected call of NewDiff.
|
||||
func (mr *MockDiffContainerMockRecorder) NewDiff() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewDiff", reflect.TypeOf((*MockDiffContainer)(nil).NewDiff))
|
||||
}
|
||||
|
||||
// OldDiff mocks base method.
|
||||
func (m *MockDiffContainer) OldDiff() ldiff.Diff {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "OldDiff")
|
||||
ret0, _ := ret[0].(ldiff.Diff)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// OldDiff indicates an expected call of OldDiff.
|
||||
func (mr *MockDiffContainerMockRecorder) OldDiff() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OldDiff", reflect.TypeOf((*MockDiffContainer)(nil).OldDiff))
|
||||
}
|
||||
|
||||
// RemoveId mocks base method.
|
||||
func (m *MockDiffContainer) RemoveId(arg0 string) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "RemoveId", arg0)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// RemoveId indicates an expected call of RemoveId.
|
||||
func (mr *MockDiffContainerMockRecorder) RemoveId(arg0 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveId", reflect.TypeOf((*MockDiffContainer)(nil).RemoveId), arg0)
|
||||
}
|
||||
|
||||
// Set mocks base method.
|
||||
func (m *MockDiffContainer) Set(arg0 ...ldiff.Element) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{}
|
||||
for _, a := range arg0 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
m.ctrl.Call(m, "Set", varargs...)
|
||||
}
|
||||
|
||||
// Set indicates an expected call of Set.
|
||||
func (mr *MockDiffContainerMockRecorder) Set(arg0 ...any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Set", reflect.TypeOf((*MockDiffContainer)(nil).Set), arg0...)
|
||||
}
|
||||
|
|
|
@ -80,6 +80,7 @@ func TestDiffSyncer(t *testing.T) {
|
|||
fx.peerManagerMock.EXPECT().
|
||||
GetResponsiblePeers(gomock.Any()).
|
||||
Return([]peer.Peer{mPeer}, nil)
|
||||
fx.diffContainerMock.EXPECT().DiffTypeCheck(gomock.Any(), gomock.Any()).Return(true, fx.diffMock, nil)
|
||||
fx.diffMock.EXPECT().
|
||||
Diff(gomock.Any(), gomock.Eq(NewRemoteDiff(fx.spaceState.SpaceId, fx.clientMock))).
|
||||
Return([]string{"new"}, []string{"changed"}, nil, nil)
|
||||
|
@ -103,6 +104,7 @@ func TestDiffSyncer(t *testing.T) {
|
|||
fx.peerManagerMock.EXPECT().
|
||||
GetResponsiblePeers(gomock.Any()).
|
||||
Return([]peer.Peer{mPeer}, nil)
|
||||
fx.diffContainerMock.EXPECT().DiffTypeCheck(gomock.Any(), gomock.Any()).Return(true, fx.diffMock, nil)
|
||||
fx.diffMock.EXPECT().
|
||||
Diff(gomock.Any(), gomock.Eq(remDiff)).
|
||||
Return([]string{"new"}, []string{"changed"}, nil, nil)
|
||||
|
@ -133,9 +135,12 @@ func TestDiffSyncer(t *testing.T) {
|
|||
fx.initDiffSyncer(t)
|
||||
defer fx.stop()
|
||||
deletedId := "id"
|
||||
fx.diffMock.EXPECT().RemoveId(deletedId).Return(nil)
|
||||
fx.diffMock.EXPECT().Hash().Return("hash")
|
||||
//fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash").Return(nil)
|
||||
fx.diffContainerMock.EXPECT().RemoveId(deletedId).Return(nil)
|
||||
fx.diffContainerMock.EXPECT().NewDiff().Return(fx.diffMock)
|
||||
fx.diffContainerMock.EXPECT().OldDiff().Return(fx.diffMock)
|
||||
fx.diffMock.EXPECT().Hash().AnyTimes().Return("hash")
|
||||
fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash", "hash").Return(nil)
|
||||
|
||||
upd := headstorage.DeletedStatusDeleted
|
||||
fx.diffSyncer.updateHeads(headstorage.HeadsUpdate{
|
||||
Id: "id",
|
||||
|
@ -150,11 +155,14 @@ func TestDiffSyncer(t *testing.T) {
|
|||
updatedId := "id"
|
||||
fx.diffMock.EXPECT().Hash().Return("hash")
|
||||
fx.deletionStateMock.EXPECT().Exists(updatedId).Return(false)
|
||||
fx.diffMock.EXPECT().Set(ldiff.Element{
|
||||
fx.diffContainerMock.EXPECT().Set(ldiff.Element{
|
||||
Id: updatedId,
|
||||
Head: "head",
|
||||
})
|
||||
//fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash").Return(nil)
|
||||
fx.diffContainerMock.EXPECT().NewDiff().Return(fx.diffMock)
|
||||
fx.diffContainerMock.EXPECT().OldDiff().Return(fx.diffMock)
|
||||
fx.diffMock.EXPECT().Hash().AnyTimes().Return("hash")
|
||||
fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash", "hash").Return(nil)
|
||||
fx.diffSyncer.updateHeads(headstorage.HeadsUpdate{
|
||||
Id: "id",
|
||||
Heads: []string{"head"},
|
||||
|
@ -180,6 +188,7 @@ func TestDiffSyncer(t *testing.T) {
|
|||
fx.peerManagerMock.EXPECT().
|
||||
GetResponsiblePeers(gomock.Any()).
|
||||
Return([]peer.Peer{rpctest.MockPeer{}}, nil)
|
||||
fx.diffContainerMock.EXPECT().DiffTypeCheck(gomock.Any(), gomock.Any()).Return(true, fx.diffMock, nil)
|
||||
fx.diffMock.EXPECT().
|
||||
Diff(gomock.Any(), gomock.Eq(remDiff)).
|
||||
Return(nil, nil, nil, spacesyncproto.ErrSpaceMissing)
|
||||
|
@ -219,6 +228,8 @@ func TestDiffSyncer(t *testing.T) {
|
|||
fx.peerManagerMock.EXPECT().
|
||||
GetResponsiblePeers(gomock.Any()).
|
||||
Return([]peer.Peer{rpctest.MockPeer{}}, nil)
|
||||
|
||||
fx.diffContainerMock.EXPECT().DiffTypeCheck(gomock.Any(), gomock.Any()).Return(true, fx.diffMock, nil)
|
||||
fx.diffMock.EXPECT().
|
||||
Diff(gomock.Any(), gomock.Eq(remDiff)).
|
||||
Return(nil, nil, nil, spacesyncproto.ErrUnexpected)
|
||||
|
@ -232,15 +243,12 @@ func TestDiffSyncer(t *testing.T) {
|
|||
fx.initDiffSyncer(t)
|
||||
defer fx.stop()
|
||||
mPeer := rpctest.MockPeer{}
|
||||
remDiff := NewRemoteDiff(fx.spaceState.SpaceId, fx.clientMock)
|
||||
fx.treeSyncerMock.EXPECT().ShouldSync(gomock.Any()).Return(true)
|
||||
fx.aclMock.EXPECT().Id().AnyTimes().Return("aclId")
|
||||
fx.peerManagerMock.EXPECT().
|
||||
GetResponsiblePeers(gomock.Any()).
|
||||
Return([]peer.Peer{mPeer}, nil)
|
||||
fx.diffMock.EXPECT().
|
||||
Diff(gomock.Any(), gomock.Eq(remDiff)).
|
||||
Return(nil, nil, nil, spacesyncproto.ErrSpaceIsDeleted)
|
||||
fx.diffContainerMock.EXPECT().DiffTypeCheck(gomock.Any(), gomock.Any()).Return(true, fx.diffMock, spacesyncproto.ErrSpaceIsDeleted)
|
||||
fx.peerManagerMock.EXPECT().KeepAlive(gomock.Any())
|
||||
|
||||
require.NoError(t, fx.diffSyncer.Sync(ctx))
|
||||
|
|
|
@ -65,6 +65,7 @@ type headSyncFixture struct {
|
|||
diffSyncerMock *mock_headsync.MockDiffSyncer
|
||||
treeSyncerMock *mock_treesyncer.MockTreeSyncer
|
||||
diffMock *mock_ldiff.MockDiff
|
||||
diffContainerMock *mock_ldiff.MockDiffContainer
|
||||
clientMock *mock_spacesyncproto.MockDRPCSpaceSyncClient
|
||||
aclMock *mock_syncacl.MockSyncAcl
|
||||
headStorage *mock_headstorage.MockHeadStorage
|
||||
|
@ -91,6 +92,7 @@ func newHeadSyncFixture(t *testing.T) *headSyncFixture {
|
|||
deletionStateMock := mock_deletionstate.NewMockObjectDeletionState(ctrl)
|
||||
deletionStateMock.EXPECT().Name().AnyTimes().Return(deletionstate.CName)
|
||||
diffSyncerMock := mock_headsync.NewMockDiffSyncer(ctrl)
|
||||
diffContainerMock := mock_ldiff.NewMockDiffContainer(ctrl)
|
||||
treeSyncerMock := mock_treesyncer.NewMockTreeSyncer(ctrl)
|
||||
headStorage := mock_headstorage.NewMockHeadStorage(ctrl)
|
||||
stateStorage := mock_statestorage.NewMockStateStorage(ctrl)
|
||||
|
@ -121,6 +123,7 @@ func newHeadSyncFixture(t *testing.T) *headSyncFixture {
|
|||
app: a,
|
||||
configurationMock: configurationMock,
|
||||
storageMock: storageMock,
|
||||
diffContainerMock: diffContainerMock,
|
||||
peerManagerMock: peerManagerMock,
|
||||
credentialProviderMock: credentialProviderMock,
|
||||
treeManagerMock: treeManagerMock,
|
||||
|
@ -144,7 +147,7 @@ func (fx *headSyncFixture) init(t *testing.T) {
|
|||
fx.headStorage.EXPECT().AddObserver(gomock.Any())
|
||||
err := fx.headSync.Init(fx.app)
|
||||
require.NoError(t, err)
|
||||
//fx.headSync.diff = fx.diffMock
|
||||
fx.headSync.diffContainer = fx.diffContainerMock
|
||||
}
|
||||
|
||||
func (fx *headSyncFixture) stop() {
|
||||
|
@ -183,7 +186,7 @@ func TestHeadSync(t *testing.T) {
|
|||
fx.aclMock.EXPECT().Id().AnyTimes().Return("aclId")
|
||||
fx.aclMock.EXPECT().Head().AnyTimes().Return(&list.AclRecord{Id: "headId"})
|
||||
|
||||
fx.diffMock.EXPECT().Set(ldiff.Element{
|
||||
fx.diffContainerMock.EXPECT().Set(ldiff.Element{
|
||||
Id: "id1",
|
||||
Head: "h1h2",
|
||||
}, ldiff.Element{
|
||||
|
@ -193,8 +196,10 @@ func TestHeadSync(t *testing.T) {
|
|||
Id: "aclId",
|
||||
Head: "headId",
|
||||
})
|
||||
fx.diffMock.EXPECT().Hash().Return("hash")
|
||||
//fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash").Return(nil)
|
||||
fx.diffContainerMock.EXPECT().NewDiff().Return(fx.diffMock)
|
||||
fx.diffContainerMock.EXPECT().OldDiff().Return(fx.diffMock)
|
||||
fx.diffMock.EXPECT().Hash().AnyTimes().Return("hash")
|
||||
fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash", "hash").Return(nil)
|
||||
fx.diffSyncerMock.EXPECT().Sync(gomock.Any()).Return(nil)
|
||||
fx.diffSyncerMock.EXPECT().Close()
|
||||
err := fx.headSync.Run(ctx)
|
||||
|
@ -232,15 +237,17 @@ func TestHeadSync(t *testing.T) {
|
|||
fx.aclMock.EXPECT().Id().AnyTimes().Return("aclId")
|
||||
fx.aclMock.EXPECT().Head().AnyTimes().Return(&list.AclRecord{Id: "headId"})
|
||||
|
||||
fx.diffMock.EXPECT().Set(ldiff.Element{
|
||||
fx.diffContainerMock.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.diffContainerMock.EXPECT().NewDiff().Return(fx.diffMock)
|
||||
fx.diffContainerMock.EXPECT().OldDiff().Return(fx.diffMock)
|
||||
fx.diffMock.EXPECT().Hash().AnyTimes().Return("hash")
|
||||
fx.stateStorage.EXPECT().SetHash(gomock.Any(), "hash", "hash").Return(nil)
|
||||
fx.diffSyncerMock.EXPECT().Sync(gomock.Any()).Return(nil)
|
||||
fx.diffSyncerMock.EXPECT().Close()
|
||||
err := fx.headSync.Run(ctx)
|
||||
|
|
|
@ -10,12 +10,13 @@ import (
|
|||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/anyproto/any-sync/app/ldiff"
|
||||
"github.com/anyproto/any-sync/app/olddiff"
|
||||
"github.com/anyproto/any-sync/commonspace/spacesyncproto"
|
||||
)
|
||||
|
||||
func benchmarkDifferentDiffs(t *testing.T, diffFactory func() ldiff.Diff, headLength int) {
|
||||
moduloValues := []int{1, 10, 100, 1000, 10000, 100000}
|
||||
totalElements := 1000000
|
||||
totalElements := 100000
|
||||
|
||||
for _, modVal := range moduloValues {
|
||||
t.Run(fmt.Sprintf("New_%d", totalElements/modVal), func(t *testing.T) {
|
||||
|
@ -66,12 +67,12 @@ func TestBenchRemoteWithDifferentCounts(t *testing.T) {
|
|||
return ldiff.New(32, 256)
|
||||
}, 32)
|
||||
})
|
||||
// old has higher head lengths because of hashes
|
||||
//t.Run("OldLdiff", func(t *testing.T) {
|
||||
// benchmarkDifferentDiffs(t, func() ldiff.Diff {
|
||||
// return olddiff.New(32, 256)
|
||||
// }, 100)
|
||||
//})
|
||||
//old has higher head lengths because of hashes
|
||||
t.Run("OldLdiff", func(t *testing.T) {
|
||||
benchmarkDifferentDiffs(t, func() ldiff.Diff {
|
||||
return olddiff.New(32, 256)
|
||||
}, 100)
|
||||
})
|
||||
}
|
||||
|
||||
type mockClient struct {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue