More headsync tests
This commit is contained in:
parent
2f5e0dd6c8
commit
4ef617b1f2
@ -1,13 +1,57 @@
|
|||||||
package headsync
|
package headsync
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/anyproto/any-sync/commonspace/spacesyncproto"
|
||||||
|
"github.com/anyproto/any-sync/net/peer"
|
||||||
"github.com/golang/mock/gomock"
|
"github.com/golang/mock/gomock"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"storj.io/drpc"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type mockPeer struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m mockPeer) Id() string {
|
||||||
|
return "peerId"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m mockPeer) Context() context.Context {
|
||||||
|
return context.Background()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m mockPeer) AcquireDrpcConn(ctx context.Context) (drpc.Conn, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m mockPeer) ReleaseDrpcConn(conn drpc.Conn) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m mockPeer) DoDrpc(ctx context.Context, do func(conn drpc.Conn) error) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m mockPeer) IsClosed() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m mockPeer) TryClose(objectTTL time.Duration) (res bool, err error) {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m mockPeer) Close() (err error) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (fx *headSyncFixture) initDiffSyncer(t *testing.T) {
|
func (fx *headSyncFixture) initDiffSyncer(t *testing.T) {
|
||||||
fx.init(t)
|
fx.init(t)
|
||||||
fx.diffSyncer = newDiffSyncer(fx.headSync)
|
fx.diffSyncer = newDiffSyncer(fx.headSync).(*diffSyncer)
|
||||||
|
fx.diffSyncer.clientFactory = spacesyncproto.ClientFactoryFunc(func(cc drpc.Conn) spacesyncproto.DRPCSpaceSyncClient {
|
||||||
|
return fx.clientMock
|
||||||
|
})
|
||||||
fx.deletionStateMock.EXPECT().AddObserver(gomock.Any())
|
fx.deletionStateMock.EXPECT().AddObserver(gomock.Any())
|
||||||
fx.treeManagerMock.EXPECT().NewTreeSyncer(fx.spaceState.SpaceId, fx.treeManagerMock).Return(fx.treeSyncerMock)
|
fx.treeManagerMock.EXPECT().NewTreeSyncer(fx.spaceState.SpaceId, fx.treeManagerMock).Return(fx.treeSyncerMock)
|
||||||
fx.diffSyncer.Init()
|
fx.diffSyncer.Init()
|
||||||
@ -17,6 +61,22 @@ func TestDiffSyncer(t *testing.T) {
|
|||||||
fx := newHeadSyncFixture(t)
|
fx := newHeadSyncFixture(t)
|
||||||
fx.initDiffSyncer(t)
|
fx.initDiffSyncer(t)
|
||||||
defer fx.stop()
|
defer fx.stop()
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
t.Run("diff syncer sync", func(t *testing.T) {
|
||||||
|
mPeer := mockPeer{}
|
||||||
|
fx.peerManagerMock.EXPECT().
|
||||||
|
GetResponsiblePeers(gomock.Any()).
|
||||||
|
Return([]peer.Peer{mPeer}, nil)
|
||||||
|
fx.diffMock.EXPECT().
|
||||||
|
Diff(gomock.Any(), gomock.Eq(NewRemoteDiff(fx.spaceState.SpaceId, fx.clientMock))).
|
||||||
|
Return([]string{"new"}, []string{"changed"}, nil, nil)
|
||||||
|
fx.deletionStateMock.EXPECT().Filter([]string{"new"}).Return([]string{"new"}).Times(1)
|
||||||
|
fx.deletionStateMock.EXPECT().Filter([]string{"changed"}).Return([]string{"changed"}).Times(1)
|
||||||
|
fx.deletionStateMock.EXPECT().Filter(nil).Return(nil).Times(1)
|
||||||
|
fx.treeSyncerMock.EXPECT().SyncAll(gomock.Any(), mPeer.Id(), []string{"changed"}, []string{"new"}).Return(nil)
|
||||||
|
require.NoError(t, fx.diffSyncer.Sync(ctx))
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -99,9 +159,9 @@ func TestDiffSyncer(t *testing.T) {
|
|||||||
//
|
//
|
||||||
//func TestDiffSyncer_Sync(t *testing.T) {
|
//func TestDiffSyncer_Sync(t *testing.T) {
|
||||||
// // setup
|
// // setup
|
||||||
// ctx := context.Background()
|
// fx := newHeadSyncFixture(t)
|
||||||
// ctrl := gomock.NewController(t)
|
// fx.initDiffSyncer(t)
|
||||||
// defer ctrl.Finish()
|
// defer fx.stop()
|
||||||
//
|
//
|
||||||
// diffMock := mock_ldiff.NewMockDiff(ctrl)
|
// diffMock := mock_ldiff.NewMockDiff(ctrl)
|
||||||
// peerManagerMock := mock_peermanager.NewMockPeerManager(ctrl)
|
// peerManagerMock := mock_peermanager.NewMockPeerManager(ctrl)
|
||||||
@ -136,6 +196,7 @@ func TestDiffSyncer(t *testing.T) {
|
|||||||
// treeSyncerMock.EXPECT().SyncAll(gomock.Any(), mPeer.Id(), []string{"changed"}, []string{"new"}).Return(nil)
|
// treeSyncerMock.EXPECT().SyncAll(gomock.Any(), mPeer.Id(), []string{"changed"}, []string{"new"}).Return(nil)
|
||||||
// require.NoError(t, diffSyncer.Sync(ctx))
|
// require.NoError(t, diffSyncer.Sync(ctx))
|
||||||
// })
|
// })
|
||||||
|
//}
|
||||||
//
|
//
|
||||||
// t.Run("diff syncer sync conf error", func(t *testing.T) {
|
// t.Run("diff syncer sync conf error", func(t *testing.T) {
|
||||||
// peerManagerMock.EXPECT().
|
// peerManagerMock.EXPECT().
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package headsync
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/anyproto/any-sync/app"
|
"github.com/anyproto/any-sync/app"
|
||||||
|
"github.com/anyproto/any-sync/app/ldiff"
|
||||||
|
"github.com/anyproto/any-sync/app/ldiff/mock_ldiff"
|
||||||
"github.com/anyproto/any-sync/commonspace/config"
|
"github.com/anyproto/any-sync/commonspace/config"
|
||||||
"github.com/anyproto/any-sync/commonspace/credentialprovider"
|
"github.com/anyproto/any-sync/commonspace/credentialprovider"
|
||||||
"github.com/anyproto/any-sync/commonspace/credentialprovider/mock_credentialprovider"
|
"github.com/anyproto/any-sync/commonspace/credentialprovider/mock_credentialprovider"
|
||||||
@ -17,6 +19,7 @@ import (
|
|||||||
"github.com/anyproto/any-sync/commonspace/spacestate"
|
"github.com/anyproto/any-sync/commonspace/spacestate"
|
||||||
"github.com/anyproto/any-sync/commonspace/spacestorage"
|
"github.com/anyproto/any-sync/commonspace/spacestorage"
|
||||||
"github.com/anyproto/any-sync/commonspace/spacestorage/mock_spacestorage"
|
"github.com/anyproto/any-sync/commonspace/spacestorage/mock_spacestorage"
|
||||||
|
"github.com/anyproto/any-sync/commonspace/spacesyncproto/mock_spacesyncproto"
|
||||||
"github.com/anyproto/any-sync/commonspace/syncstatus"
|
"github.com/anyproto/any-sync/commonspace/syncstatus"
|
||||||
"github.com/anyproto/any-sync/nodeconf"
|
"github.com/anyproto/any-sync/nodeconf"
|
||||||
"github.com/anyproto/any-sync/nodeconf/mock_nodeconf"
|
"github.com/anyproto/any-sync/nodeconf/mock_nodeconf"
|
||||||
@ -55,8 +58,10 @@ type headSyncFixture struct {
|
|||||||
deletionStateMock *mock_deletionstate.MockObjectDeletionState
|
deletionStateMock *mock_deletionstate.MockObjectDeletionState
|
||||||
diffSyncerMock *mock_headsync.MockDiffSyncer
|
diffSyncerMock *mock_headsync.MockDiffSyncer
|
||||||
treeSyncerMock *mock_treemanager.MockTreeSyncer
|
treeSyncerMock *mock_treemanager.MockTreeSyncer
|
||||||
|
diffMock *mock_ldiff.MockDiff
|
||||||
|
clientMock *mock_spacesyncproto.MockDRPCSpaceSyncClient
|
||||||
headSync *headSync
|
headSync *headSync
|
||||||
diffSyncer DiffSyncer
|
diffSyncer *diffSyncer
|
||||||
}
|
}
|
||||||
|
|
||||||
func newHeadSyncFixture(t *testing.T) *headSyncFixture {
|
func newHeadSyncFixture(t *testing.T) *headSyncFixture {
|
||||||
@ -80,6 +85,8 @@ func newHeadSyncFixture(t *testing.T) *headSyncFixture {
|
|||||||
deletionStateMock.EXPECT().Name().AnyTimes().Return(deletionstate.CName)
|
deletionStateMock.EXPECT().Name().AnyTimes().Return(deletionstate.CName)
|
||||||
diffSyncerMock := mock_headsync.NewMockDiffSyncer(ctrl)
|
diffSyncerMock := mock_headsync.NewMockDiffSyncer(ctrl)
|
||||||
treeSyncerMock := mock_treemanager.NewMockTreeSyncer(ctrl)
|
treeSyncerMock := mock_treemanager.NewMockTreeSyncer(ctrl)
|
||||||
|
diffMock := mock_ldiff.NewMockDiff(ctrl)
|
||||||
|
clientMock := mock_spacesyncproto.NewMockDRPCSpaceSyncClient(ctrl)
|
||||||
hs := &headSync{}
|
hs := &headSync{}
|
||||||
a := &app.App{}
|
a := &app.App{}
|
||||||
a.Register(spaceState).
|
a.Register(spaceState).
|
||||||
@ -106,6 +113,8 @@ func newHeadSyncFixture(t *testing.T) *headSyncFixture {
|
|||||||
headSync: hs,
|
headSync: hs,
|
||||||
diffSyncerMock: diffSyncerMock,
|
diffSyncerMock: diffSyncerMock,
|
||||||
treeSyncerMock: treeSyncerMock,
|
treeSyncerMock: treeSyncerMock,
|
||||||
|
diffMock: diffMock,
|
||||||
|
clientMock: clientMock,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,6 +125,7 @@ func (fx *headSyncFixture) init(t *testing.T) {
|
|||||||
fx.diffSyncerMock.EXPECT().Init()
|
fx.diffSyncerMock.EXPECT().Init()
|
||||||
err := fx.headSync.Init(fx.app)
|
err := fx.headSync.Init(fx.app)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
fx.headSync.diff = fx.diffMock
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fx *headSyncFixture) stop() {
|
func (fx *headSyncFixture) stop() {
|
||||||
@ -134,8 +144,13 @@ func TestHeadSync(t *testing.T) {
|
|||||||
treeMock := mock_treestorage.NewMockTreeStorage(fx.ctrl)
|
treeMock := mock_treestorage.NewMockTreeStorage(fx.ctrl)
|
||||||
fx.storageMock.EXPECT().StoredIds().Return(ids, nil)
|
fx.storageMock.EXPECT().StoredIds().Return(ids, nil)
|
||||||
fx.storageMock.EXPECT().TreeStorage(ids[0]).Return(treeMock, nil)
|
fx.storageMock.EXPECT().TreeStorage(ids[0]).Return(treeMock, nil)
|
||||||
treeMock.EXPECT().Heads().Return([]string{"h1"}, nil)
|
treeMock.EXPECT().Heads().Return([]string{"h1", "h2"}, nil)
|
||||||
fx.storageMock.EXPECT().WriteSpaceHash(gomock.Any()).Return(nil)
|
fx.diffMock.EXPECT().Set(ldiff.Element{
|
||||||
|
Id: "id1",
|
||||||
|
Head: "h1h2",
|
||||||
|
})
|
||||||
|
fx.diffMock.EXPECT().Hash().Return("hash")
|
||||||
|
fx.storageMock.EXPECT().WriteSpaceHash("hash").Return(nil)
|
||||||
fx.diffSyncerMock.EXPECT().Sync(gomock.Any()).Return(nil)
|
fx.diffSyncerMock.EXPECT().Sync(gomock.Any()).Return(nil)
|
||||||
fx.diffSyncerMock.EXPECT().Close().Return(nil)
|
fx.diffSyncerMock.EXPECT().Close().Return(nil)
|
||||||
err := fx.headSync.Run(ctx)
|
err := fx.headSync.Run(ctx)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user