From 41fde6f1adda94581d2ad747e11cdd8adbc82f93 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 25 Nov 2022 15:09:44 +0100 Subject: [PATCH] Fix diffservice tests --- .../diffservice/diffservice_test.go | 20 ++++++++---- common/commonspace/diffservice/diffsyncer.go | 4 +-- .../diffservice/diffsyncer_test.go | 31 ++++++++++++++----- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/common/commonspace/diffservice/diffservice_test.go b/common/commonspace/diffservice/diffservice_test.go index 9df40e46..ce3600c1 100644 --- a/common/commonspace/diffservice/diffservice_test.go +++ b/common/commonspace/diffservice/diffservice_test.go @@ -3,10 +3,12 @@ package diffservice import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/diffservice/mock_diffservice" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/settingsdocument/deletionstate" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/storage/mock_storage" mock_storage2 "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage/mock_storage" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/ldiff" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/ldiff/mock_ldiff" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/periodicsync/mock_periodicsync" "github.com/golang/mock/gomock" "testing" ) @@ -17,10 +19,12 @@ func TestDiffService(t *testing.T) { spaceId := "spaceId" l := logger.NewNamed("sync") - pSyncMock := mock_diffservice.NewMockPeriodicSync(ctrl) + pSyncMock := mock_periodicsync.NewMockPeriodicSync(ctrl) storageMock := mock_storage.NewMockSpaceStorage(ctrl) treeStorageMock := mock_storage2.NewMockTreeStorage(ctrl) diffMock := mock_ldiff.NewMockDiff(ctrl) + syncer := mock_diffservice.NewMockDiffSyncer(ctrl) + delState := deletionstate.NewDeletionState(storageMock) syncPeriod := 1 initId := "initId" @@ -28,6 +32,7 @@ func TestDiffService(t *testing.T) { spaceId: spaceId, storage: storageMock, periodicSync: pSyncMock, + syncer: syncer, diff: diffMock, log: l, syncPeriod: syncPeriod, @@ -36,22 +41,25 @@ func TestDiffService(t *testing.T) { t.Run("init", func(t *testing.T) { storageMock.EXPECT().TreeStorage(initId).Return(treeStorageMock, nil) treeStorageMock.EXPECT().Heads().Return([]string{"h1", "h2"}, nil) + syncer.EXPECT().Init(delState) diffMock.EXPECT().Set(ldiff.Element{ Id: initId, Head: "h1h2", }) pSyncMock.EXPECT().Run() - service.Init([]string{initId}) + service.Init([]string{initId}, delState) }) t.Run("update heads", func(t *testing.T) { - diffMock.EXPECT().Set(ldiff.Element{ - Id: initId, - Head: "h1h2", - }) + syncer.EXPECT().UpdateHeads(initId, []string{"h1", "h2"}) service.UpdateHeads(initId, []string{"h1", "h2"}) }) + t.Run("remove objects", func(t *testing.T) { + syncer.EXPECT().RemoveObjects([]string{"h1", "h2"}) + service.RemoveObjects([]string{"h1", "h2"}) + }) + t.Run("close", func(t *testing.T) { pSyncMock.EXPECT().Close() service.Close() diff --git a/common/commonspace/diffservice/diffsyncer.go b/common/commonspace/diffservice/diffsyncer.go index 4f92d570..723cd50d 100644 --- a/common/commonspace/diffservice/diffsyncer.go +++ b/common/commonspace/diffservice/diffsyncer.go @@ -136,11 +136,11 @@ func (d *diffSyncer) sendPushSpaceRequest(ctx context.Context, cl spacesyncproto return } - spaceSettingsTreeStorage, err := d.storage.TreeStorage(d.storage.SpaceSettingsId()) + settingsStorage, err := d.storage.TreeStorage(d.storage.SpaceSettingsId()) if err != nil { return } - spaceSettingsRoot, err := spaceSettingsTreeStorage.Root() + spaceSettingsRoot, err := settingsStorage.Root() if err != nil { return } diff --git a/common/commonspace/diffservice/diffsyncer_test.go b/common/commonspace/diffservice/diffsyncer_test.go index e6074a71..182eab2c 100644 --- a/common/commonspace/diffservice/diffsyncer_test.go +++ b/common/commonspace/diffservice/diffsyncer_test.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/remotediff" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/settingsdocument/deletionstate" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/spacesyncproto/mock_spacesyncproto" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/storage/mock_storage" @@ -13,6 +14,8 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf/mock_nodeconf" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/aclrecordproto" mock_aclstorage "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage/mock_storage" + mock_treestorage "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/storage/mock_storage" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/treechangeproto" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/ldiff/mock_ldiff" "github.com/golang/mock/gomock" "github.com/libp2p/go-libp2p/core/sec" @@ -25,6 +28,7 @@ import ( type pushSpaceRequestMatcher struct { spaceId string aclRootId string + settingsId string spaceHeader *spacesyncproto.RawSpaceHeaderWithId } @@ -34,7 +38,7 @@ func (p pushSpaceRequestMatcher) Matches(x interface{}) bool { return false } - return res.Payload.AclPayloadId == p.aclRootId && res.Payload.SpaceHeader == p.spaceHeader + return res.Payload.AclPayloadId == p.aclRootId && res.Payload.SpaceHeader == p.spaceHeader && res.Payload.SpaceSettingsPayloadId == p.settingsId } func (p pushSpaceRequestMatcher) String() string { @@ -77,10 +81,12 @@ func (m mockPeer) NewStream(ctx context.Context, rpc string, enc drpc.Encoding) func newPushSpaceRequestMatcher( spaceId string, aclRootId string, + settingsId string, spaceHeader *spacesyncproto.RawSpaceHeaderWithId) *pushSpaceRequestMatcher { return &pushSpaceRequestMatcher{ spaceId: spaceId, aclRootId: aclRootId, + settingsId: settingsId, spaceHeader: spaceHeader, } } @@ -99,10 +105,12 @@ func TestDiffSyncer_Sync(t *testing.T) { factory := spacesyncproto.ClientFactoryFunc(func(cc drpc.Conn) spacesyncproto.DRPCSpaceClient { return clientMock }) + delState := deletionstate.NewDeletionState(stMock) spaceId := "spaceId" aclRootId := "aclRootId" l := logger.NewNamed(spaceId) diffSyncer := newDiffSyncer(spaceId, diffMock, connectorMock, cacheMock, stMock, factory, l) + diffSyncer.Init(delState) t.Run("diff syncer sync simple", func(t *testing.T) { connectorMock.EXPECT(). @@ -129,10 +137,16 @@ func TestDiffSyncer_Sync(t *testing.T) { t.Run("diff syncer sync space missing", func(t *testing.T) { aclStorageMock := mock_aclstorage.NewMockListStorage(ctrl) + settingsStorage := mock_treestorage.NewMockTreeStorage(ctrl) + settingsId := "settingsId" aclRoot := &aclrecordproto.RawACLRecordWithId{ Id: aclRootId, } + settingsRoot := &treechangeproto.RawTreeChangeWithId{ + Id: settingsId, + } spaceHeader := &spacesyncproto.RawSpaceHeaderWithId{} + spaceSettingsId := "spaceSettingsId" connectorMock.EXPECT(). GetResponsiblePeers(gomock.Any(), spaceId). @@ -140,17 +154,18 @@ func TestDiffSyncer_Sync(t *testing.T) { diffMock.EXPECT(). Diff(gomock.Any(), gomock.Eq(remotediff.NewRemoteDiff(spaceId, clientMock))). Return(nil, nil, nil, spacesyncproto.ErrSpaceMissing) - stMock.EXPECT(). - ACLStorage(). - Return(aclStorageMock, nil) - stMock.EXPECT(). - SpaceHeader(). - Return(spaceHeader, nil) + + stMock.EXPECT().ACLStorage().Return(aclStorageMock, nil) + stMock.EXPECT().SpaceHeader().Return(spaceHeader, nil) + stMock.EXPECT().SpaceSettingsId().Return(spaceSettingsId) + stMock.EXPECT().TreeStorage(spaceSettingsId).Return(settingsStorage, nil) + + settingsStorage.EXPECT().Root().Return(settingsRoot, nil) aclStorageMock.EXPECT(). Root(). Return(aclRoot, nil) clientMock.EXPECT(). - PushSpace(gomock.Any(), newPushSpaceRequestMatcher(spaceId, aclRootId, spaceHeader)). + PushSpace(gomock.Any(), newPushSpaceRequestMatcher(spaceId, aclRootId, settingsId, spaceHeader)). Return(nil, nil) require.NoError(t, diffSyncer.Sync(ctx))