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

Add deprecated object sync, improve sync names

This commit is contained in:
mcrakhman 2024-08-23 21:10:41 +02:00
parent def37259e7
commit cdf0de165b
No known key found for this signature in database
GPG key ID: DED12CFEF5B8396B
2 changed files with 107 additions and 10 deletions

View file

@ -12,6 +12,7 @@ import (
"github.com/anyproto/any-sync/commonspace/object/tree/synctree/response"
"github.com/anyproto/any-sync/commonspace/object/tree/synctree/response/mock_response"
"github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto"
"github.com/anyproto/any-sync/commonspace/spacesyncproto"
"github.com/anyproto/any-sync/commonspace/sync/objectsync/objectmessages"
"github.com/anyproto/any-sync/commonspace/syncstatus/mock_syncstatus"
"github.com/anyproto/any-sync/net/peer"
@ -177,6 +178,102 @@ func TestSyncHandler_HeadUpdate(t *testing.T) {
})
}
func TestSyncHandler_HandleDeprecatedObjectSync(t *testing.T) {
t.Run("request with no changes, return non empty response", func(t *testing.T) {
fx := newSyncHandlerFixture(t)
defer fx.finish()
fullSyncReq := &treechangeproto.TreeFullSyncRequest{
Heads: []string{"head"},
SnapshotPath: []string{"root"},
}
rootCh := &treechangeproto.RawTreeChangeWithId{
Id: "objectId",
}
treeSyncMsg := treechangeproto.WrapFullRequest(fullSyncReq, rootCh)
payload, err := treeSyncMsg.Marshal()
require.NoError(t, err)
msg := &spacesyncproto.ObjectSyncMessage{
SpaceId: "spaceId",
Payload: payload,
ObjectId: "objectId",
}
fx.tree.EXPECT().ChangesAfterCommonSnapshot([]string{"root"}, []string{"head"}).Return([]*treechangeproto.RawTreeChangeWithId{rootCh}, nil)
fx.tree.EXPECT().Heads().Return([]string{"head"})
fx.tree.EXPECT().SnapshotPath().Return([]string{"root"})
fx.tree.EXPECT().Header().Return(rootCh)
ctx = peer.CtxWithPeerId(ctx, "peerId")
resp, err := fx.syncHandler.HandleDeprecatedRequest(ctx, msg)
require.NoError(t, err)
require.Equal(t, "objectId", resp.ObjectId)
require.Equal(t, "spaceId", resp.SpaceId)
})
t.Run("request with no changes, different heads, return empty response", func(t *testing.T) {
fx := newSyncHandlerFixture(t)
defer fx.finish()
rootCh := &treechangeproto.RawTreeChangeWithId{
Id: "objectId",
}
fullSyncReq := &treechangeproto.TreeFullSyncRequest{
Heads: []string{"head"},
SnapshotPath: []string{"root"},
Changes: []*treechangeproto.RawTreeChangeWithId{
rootCh,
},
}
treeSyncMsg := treechangeproto.WrapFullRequest(fullSyncReq, rootCh)
payload, err := treeSyncMsg.Marshal()
require.NoError(t, err)
msg := &spacesyncproto.ObjectSyncMessage{
SpaceId: "spaceId",
Payload: payload,
ObjectId: "objectId",
}
ctx = peer.CtxWithPeerId(ctx, "peerId")
fx.tree.EXPECT().Heads().Return([]string{"otherHead"})
fx.tree.EXPECT().AddRawChangesFromPeer(ctx, "peerId", objecttree.RawChangesPayload{
NewHeads: []string{"head"},
RawChanges: []*treechangeproto.RawTreeChangeWithId{rootCh},
})
fx.tree.EXPECT().Heads().Return([]string{"head"})
fx.tree.EXPECT().SnapshotPath().Return([]string{"root"})
fx.tree.EXPECT().Header().Return(rootCh)
resp, err := fx.syncHandler.HandleDeprecatedRequest(ctx, msg)
require.NoError(t, err)
require.Equal(t, "objectId", resp.ObjectId)
require.Equal(t, "spaceId", resp.SpaceId)
})
t.Run("request with no changes, same heads, return empty response", func(t *testing.T) {
fx := newSyncHandlerFixture(t)
defer fx.finish()
rootCh := &treechangeproto.RawTreeChangeWithId{
Id: "objectId",
}
fullSyncReq := &treechangeproto.TreeFullSyncRequest{
Heads: []string{"head"},
SnapshotPath: []string{"root"},
Changes: []*treechangeproto.RawTreeChangeWithId{
rootCh,
},
}
treeSyncMsg := treechangeproto.WrapFullRequest(fullSyncReq, rootCh)
payload, err := treeSyncMsg.Marshal()
require.NoError(t, err)
msg := &spacesyncproto.ObjectSyncMessage{
SpaceId: "spaceId",
Payload: payload,
ObjectId: "objectId",
}
ctx = peer.CtxWithPeerId(ctx, "peerId")
fx.tree.EXPECT().Heads().Times(2).Return([]string{"head"})
fx.tree.EXPECT().SnapshotPath().Return([]string{"root"})
fx.tree.EXPECT().Header().Return(rootCh)
resp, err := fx.syncHandler.HandleDeprecatedRequest(ctx, msg)
require.NoError(t, err)
require.Equal(t, "objectId", resp.ObjectId)
require.Equal(t, "spaceId", resp.SpaceId)
})
}
func TestSyncHandler_HandleStreamRequest(t *testing.T) {
t.Run("heads are different, we send request", func(t *testing.T) {
fx := newSyncHandlerFixture(t)

View file

@ -38,7 +38,7 @@ func (s syncGetter) Id() string {
}
func TestObjectSync_HandleHeadUpdate(t *testing.T) {
t.Run("handle head update new proto ok", func(t *testing.T) {
t.Run("handle head update new proto, return request", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
update := &objectmessages.HeadUpdate{
@ -60,7 +60,7 @@ func TestObjectSync_HandleHeadUpdate(t *testing.T) {
require.NoError(t, err)
require.Equal(t, req, r)
})
t.Run("handle head update old proto ok", func(t *testing.T) {
t.Run("handle head update old proto, return nothing", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
update := &objectmessages.HeadUpdate{
@ -82,7 +82,7 @@ func TestObjectSync_HandleHeadUpdate(t *testing.T) {
require.NoError(t, err)
require.Nil(t, r)
})
t.Run("handle head update object missing", func(t *testing.T) {
t.Run("handle head update object missing, return request", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
update := &objectmessages.HeadUpdate{
@ -103,7 +103,7 @@ func TestObjectSync_HandleHeadUpdate(t *testing.T) {
}
func TestObjectSync_DeprecatedObjectSync(t *testing.T) {
t.Run("handle deprecated sync empty message returned", func(t *testing.T) {
t.Run("handle deprecated sync, object missing, empty response returned", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
fullSyncReq := &treechangeproto.TreeFullSyncRequest{}
@ -129,7 +129,7 @@ func TestObjectSync_DeprecatedObjectSync(t *testing.T) {
}
require.Equal(t, retMsg, r)
})
t.Run("handle deprecated sync put tree", func(t *testing.T) {
t.Run("handle deprecated sync, object missing, put tree, return response", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
rootCh := &treechangeproto.RawTreeChangeWithId{
@ -175,7 +175,7 @@ func TestObjectSync_DeprecatedObjectSync(t *testing.T) {
}
require.Equal(t, retMsg, r)
})
t.Run("handle deprecated sync ok", func(t *testing.T) {
t.Run("handle deprecated sync, object exists, return response", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
fullSyncReq := &treechangeproto.TreeFullSyncRequest{}
@ -202,7 +202,7 @@ func TestObjectSync_DeprecatedObjectSync(t *testing.T) {
}
func TestObjectSync_HandleStreamRequest(t *testing.T) {
t.Run("handle stream request object not found", func(t *testing.T) {
t.Run("handle stream request, object not found, return error", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
fullSyncReq := &treechangeproto.TreeFullSyncRequest{
@ -224,7 +224,7 @@ func TestObjectSync_HandleStreamRequest(t *testing.T) {
require.Equal(t, treechangeproto.ErrGetTree, err)
require.Equal(t, expectedReq, r)
})
t.Run("handle stream request object not found", func(t *testing.T) {
t.Run("handle stream request, object found, handle on object level, return no request", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
fullSyncReq := &treechangeproto.TreeFullSyncRequest{
@ -250,7 +250,7 @@ func TestObjectSync_HandleStreamRequest(t *testing.T) {
}
func TestObjectSync_ApplyRequest(t *testing.T) {
t.Run("apply request nil manager error", func(t *testing.T) {
t.Run("apply request, no error", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
requestSender := mock_syncdeps.NewMockRequestSender(fx.ctrl)
@ -265,7 +265,7 @@ func TestObjectSync_ApplyRequest(t *testing.T) {
err := fx.objectSync.ApplyRequest(ctx, rq, requestSender)
require.NoError(t, err)
})
t.Run("apply request manager error", func(t *testing.T) {
t.Run("apply request, manager error", func(t *testing.T) {
fx := newFixture(t)
defer fx.close(t)
requestSender := mock_syncdeps.NewMockRequestSender(fx.ctrl)