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:
parent
def37259e7
commit
cdf0de165b
2 changed files with 107 additions and 10 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue