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
5414824ea1
commit
898ee206cd
7 changed files with 577 additions and 89 deletions
|
@ -46,10 +46,6 @@ import (
|
|||
"github.com/anyproto/any-sync/util/syncqueues"
|
||||
)
|
||||
|
||||
//
|
||||
// Mock NodeConf implementation
|
||||
//
|
||||
|
||||
type mockConf struct {
|
||||
id string
|
||||
networkId string
|
||||
|
@ -174,13 +170,17 @@ func (m mockNodeClient) AclAddRecord(ctx context.Context, spaceId string, rec *c
|
|||
return
|
||||
}
|
||||
|
||||
//
|
||||
// Mock PeerManager
|
||||
//
|
||||
|
||||
type mockPeerManager struct {
|
||||
}
|
||||
|
||||
func (p *mockPeerManager) BroadcastMessage(ctx context.Context, msg drpc.Message) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *mockPeerManager) SendMessage(ctx context.Context, peerId string, msg drpc.Message) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *mockPeerManager) Init(a *app.App) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
@ -189,14 +189,6 @@ func (p *mockPeerManager) Name() (name string) {
|
|||
return peermanager.CName
|
||||
}
|
||||
|
||||
func (p *mockPeerManager) SendPeer(ctx context.Context, peerId string, msg *spacesyncproto.ObjectSyncMessage) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *mockPeerManager) Broadcast(ctx context.Context, msg *spacesyncproto.ObjectSyncMessage) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *mockPeerManager) GetResponsiblePeers(ctx context.Context) (peers []peer.Peer, err error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
@ -205,9 +197,20 @@ func (p *mockPeerManager) GetNodePeers(ctx context.Context) (peers []peer.Peer,
|
|||
return nil, nil
|
||||
}
|
||||
|
||||
//
|
||||
// Mock PeerManagerProvider
|
||||
//
|
||||
type testPeerManagerProvider struct {
|
||||
}
|
||||
|
||||
func (m *testPeerManagerProvider) Init(a *app.App) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *testPeerManagerProvider) Name() (name string) {
|
||||
return peermanager.CName
|
||||
}
|
||||
|
||||
func (m *testPeerManagerProvider) NewPeerManager(ctx context.Context, spaceId string) (sm peermanager.PeerManager, err error) {
|
||||
return synctest.NewTestPeerManager(), nil
|
||||
}
|
||||
|
||||
type mockPeerManagerProvider struct {
|
||||
}
|
||||
|
@ -221,16 +224,20 @@ func (m *mockPeerManagerProvider) Name() (name string) {
|
|||
}
|
||||
|
||||
func (m *mockPeerManagerProvider) NewPeerManager(ctx context.Context, spaceId string) (sm peermanager.PeerManager, err error) {
|
||||
return synctest.NewTestPeerManager(), nil
|
||||
return &mockPeerManager{}, nil
|
||||
}
|
||||
|
||||
//
|
||||
// Mock Pool
|
||||
//
|
||||
|
||||
type mockPool struct {
|
||||
}
|
||||
|
||||
func (m *mockPool) Run(ctx context.Context) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *mockPool) Close(ctx context.Context) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *mockPool) AddPeer(ctx context.Context, p peer.Peer) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
@ -263,10 +270,6 @@ func (m *mockPool) Pick(ctx context.Context, id string) (peer.Peer, error) {
|
|||
return nil, fmt.Errorf("no such peer")
|
||||
}
|
||||
|
||||
//
|
||||
// Mock Config
|
||||
//
|
||||
|
||||
type mockConfig struct {
|
||||
}
|
||||
|
||||
|
@ -294,10 +297,6 @@ func (m *mockConfig) GetStreamConfig() streampool.StreamConfig {
|
|||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Mock TreeManager
|
||||
//
|
||||
|
||||
type noOpSyncer struct {
|
||||
}
|
||||
|
||||
|
@ -345,7 +344,7 @@ func (m mockTreeSyncer) SyncAll(ctx context.Context, p peer.Peer, existing, miss
|
|||
return nil
|
||||
}
|
||||
|
||||
type mockTreeManager struct {
|
||||
type testTreeManager struct {
|
||||
mx sync.Mutex
|
||||
space Space
|
||||
spaceId string
|
||||
|
@ -359,41 +358,41 @@ type mockTreeManager struct {
|
|||
waitLoad chan struct{}
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) ValidateAndPutTree(ctx context.Context, spaceId string, payload treestorage.TreeStorageCreatePayload) error {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
func (t *testTreeManager) ValidateAndPutTree(ctx context.Context, spaceId string, payload treestorage.TreeStorageCreatePayload) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func newMockTreeManager(spaceId string) *mockTreeManager {
|
||||
return &mockTreeManager{
|
||||
func newMockTreeManager(spaceId string) *testTreeManager {
|
||||
return &testTreeManager{
|
||||
spaceId: spaceId,
|
||||
waitLoad: make(chan struct{}),
|
||||
treesToPut: make(map[string]treestorage.TreeStorageCreatePayload),
|
||||
}
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) MarkTreeDeleted(ctx context.Context, spaceId, treeId string) error {
|
||||
func (t *testTreeManager) MarkTreeDeleted(ctx context.Context, spaceId, treeId string) error {
|
||||
t.mx.Lock()
|
||||
defer t.mx.Unlock()
|
||||
t.markedIds = append(t.markedIds, treeId)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) getSpace(ctx context.Context) (Space, error) {
|
||||
func (t *testTreeManager) getSpace(ctx context.Context) (Space, error) {
|
||||
if t.space != nil {
|
||||
return t.space, nil
|
||||
}
|
||||
return t.spaceGetter.GetSpace(ctx, t.spaceId)
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) Init(a *app.App) (err error) {
|
||||
func (t *testTreeManager) Init(a *app.App) (err error) {
|
||||
t.cache = ocache.New(func(ctx context.Context, id string) (value ocache.Object, err error) {
|
||||
if t.wait {
|
||||
<-t.waitLoad
|
||||
}
|
||||
sp, err := t.getSpace(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if t.wait {
|
||||
<-t.waitLoad
|
||||
}
|
||||
t.mx.Lock()
|
||||
if tr, ok := t.treesToPut[id]; ok {
|
||||
delete(t.treesToPut, id)
|
||||
|
@ -410,19 +409,19 @@ func (t *mockTreeManager) Init(a *app.App) (err error) {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) Name() (name string) {
|
||||
func (t *testTreeManager) Name() (name string) {
|
||||
return treemanager.CName
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) Run(ctx context.Context) (err error) {
|
||||
func (t *testTreeManager) Run(ctx context.Context) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) Close(ctx context.Context) (err error) {
|
||||
func (t *testTreeManager) Close(ctx context.Context) (err error) {
|
||||
return t.cache.Close()
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) GetTree(ctx context.Context, spaceId, treeId string) (objecttree.ObjectTree, error) {
|
||||
func (t *testTreeManager) GetTree(ctx context.Context, spaceId, treeId string) (objecttree.ObjectTree, error) {
|
||||
val, err := t.cache.Get(ctx, treeId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -430,7 +429,7 @@ func (t *mockTreeManager) GetTree(ctx context.Context, spaceId, treeId string) (
|
|||
return val.(objecttree.ObjectTree), nil
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) CreateTree(ctx context.Context, spaceId string) (objecttree.ObjectTree, error) {
|
||||
func (t *testTreeManager) CreateTree(ctx context.Context, spaceId string) (objecttree.ObjectTree, error) {
|
||||
sp, err := t.getSpace(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -451,14 +450,14 @@ func (t *mockTreeManager) CreateTree(ctx context.Context, spaceId string) (objec
|
|||
return t.PutTree(ctx, createPayload)
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) PutTree(ctx context.Context, payload treestorage.TreeStorageCreatePayload) (objecttree.ObjectTree, error) {
|
||||
func (t *testTreeManager) PutTree(ctx context.Context, payload treestorage.TreeStorageCreatePayload) (objecttree.ObjectTree, error) {
|
||||
t.mx.Lock()
|
||||
t.treesToPut[payload.RootRawChange.Id] = payload
|
||||
t.mx.Unlock()
|
||||
return t.GetTree(ctx, t.spaceId, payload.RootRawChange.Id)
|
||||
}
|
||||
|
||||
func (t *mockTreeManager) DeleteTree(ctx context.Context, spaceId, treeId string) (err error) {
|
||||
func (t *testTreeManager) DeleteTree(ctx context.Context, spaceId, treeId string) (err error) {
|
||||
tr, err := t.GetTree(ctx, spaceId, treeId)
|
||||
if err != nil {
|
||||
return
|
||||
|
@ -543,10 +542,6 @@ func (m mockCoordinatorClient) Name() (name string) {
|
|||
return coordinatorclient.CName
|
||||
}
|
||||
|
||||
//
|
||||
// Stream opener
|
||||
//
|
||||
|
||||
func newStreamOpener(spaceId string) streamhandler.StreamHandler {
|
||||
return &streamOpener{spaceId: spaceId}
|
||||
}
|
||||
|
@ -622,10 +617,6 @@ func (s *streamOpener) OpenStream(ctx context.Context, p peer.Peer) (stream drpc
|
|||
return &failingStream{objectStream, false}, nil, queueSize, nil
|
||||
}
|
||||
|
||||
//
|
||||
// Space fixture
|
||||
//
|
||||
|
||||
type spaceFixture struct {
|
||||
ctx context.Context
|
||||
app *app.App
|
||||
|
@ -636,7 +627,7 @@ type spaceFixture struct {
|
|||
peerManagerProvider peermanager.PeerManagerProvider
|
||||
streamOpener streamhandler.StreamHandler
|
||||
credentialProvider credentialprovider.CredentialProvider
|
||||
treeManager *mockTreeManager
|
||||
treeManager *testTreeManager
|
||||
pool *mockPool
|
||||
spaceService SpaceService
|
||||
process *spaceProcess
|
||||
|
@ -646,27 +637,35 @@ type spaceFixture struct {
|
|||
func newFixture(t *testing.T) *spaceFixture {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
||||
fx := &spaceFixture{
|
||||
ctx: ctx,
|
||||
cancelFunc: cancel,
|
||||
config: &mockConfig{},
|
||||
app: &app.App{},
|
||||
config: &mockConfig{},
|
||||
account: &accounttest.AccountTestService{},
|
||||
configurationService: &mockConf{},
|
||||
streamOpener: newStreamOpener("spaceId"),
|
||||
peerManagerProvider: &testPeerManagerProvider{},
|
||||
storageProvider: spacestorage.NewInMemorySpaceStorageProvider(),
|
||||
peerManagerProvider: &mockPeerManagerProvider{},
|
||||
treeManager: &mockTreeManager{waitLoad: make(chan struct{})},
|
||||
treeManager: newMockTreeManager("spaceId"),
|
||||
pool: &mockPool{},
|
||||
spaceService: New(),
|
||||
}
|
||||
fx.app.Register(fx.account).
|
||||
Register(syncqueues.New()).
|
||||
Register(fx.config).
|
||||
Register(rpctest.NewTestServer()).
|
||||
Register(&mockPool{}).
|
||||
Register(fx.storageProvider).
|
||||
Register(credentialprovider.NewNoOp()).
|
||||
Register(streampool.New()).
|
||||
Register(fx.streamOpener).
|
||||
Register(mockCoordinatorClient{}).
|
||||
Register(mockNodeClient{}).
|
||||
Register(&mockPeerManagerProvider{}).
|
||||
Register(fx.configurationService).
|
||||
Register(fx.storageProvider).
|
||||
Register(fx.peerManagerProvider).
|
||||
Register(fx.treeManager).
|
||||
Register(fx.spaceService)
|
||||
Register(fx.spaceService).
|
||||
Register(NewRpcServer())
|
||||
err := fx.app.Start(ctx)
|
||||
if err != nil {
|
||||
fx.cancelFunc()
|
||||
|
@ -675,7 +674,7 @@ func newFixture(t *testing.T) *spaceFixture {
|
|||
return fx
|
||||
}
|
||||
|
||||
func newFixtureWithData(t *testing.T, spaceId string, keys *accountdata.AccountKeys, peerPool *synctest.PeerGlobalPool, provider *spacestorage.InMemorySpaceStorageProvider) *spaceFixture {
|
||||
func newMultipeerFixture(t *testing.T, spaceId string, keys *accountdata.AccountKeys, peerPool *synctest.PeerGlobalPool, provider *spacestorage.InMemorySpaceStorageProvider) *spaceFixture {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
||||
fx := &spaceFixture{
|
||||
ctx: ctx,
|
||||
|
@ -686,7 +685,7 @@ func newFixtureWithData(t *testing.T, spaceId string, keys *accountdata.AccountK
|
|||
configurationService: &mockConf{},
|
||||
storageProvider: provider,
|
||||
streamOpener: newStreamOpener(spaceId),
|
||||
peerManagerProvider: &mockPeerManagerProvider{},
|
||||
peerManagerProvider: &testPeerManagerProvider{},
|
||||
treeManager: newMockTreeManager(spaceId),
|
||||
pool: &mockPool{},
|
||||
spaceService: New(),
|
||||
|
@ -791,7 +790,7 @@ func newMultiPeerFixture(t *testing.T, peerNum int) *multiPeerFixture {
|
|||
peerPool.MakePeers()
|
||||
var peerFixtures []*spaceFixture
|
||||
for i := 0; i < peerNum; i++ {
|
||||
fx := newFixtureWithData(t, createSpace.SpaceHeaderWithId.Id, allKeys[i], peerPool, providers[i])
|
||||
fx := newMultipeerFixture(t, createSpace.SpaceHeaderWithId.Id, allKeys[i], peerPool, providers[i])
|
||||
peerFixtures = append(peerFixtures, fx)
|
||||
}
|
||||
return &multiPeerFixture{peerFixtures: peerFixtures}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue