OSDN Git Service

add fast sync func (#204)
[bytom/vapor.git] / netsync / chainmgr / tool_test.go
index 34f0cc6..6381641 100644 (file)
@@ -5,7 +5,7 @@ import (
        "math/rand"
        "net"
 
-       wire "github.com/tendermint/go-wire"
+       "github.com/tendermint/go-wire"
        "github.com/tendermint/tmlibs/flowrate"
 
        "github.com/vapor/consensus"
@@ -21,7 +21,7 @@ type P2PPeer struct {
        flag consensus.ServiceFlag
 
        srcPeer    *P2PPeer
-       remoteNode *ChainManager
+       remoteNode *Manager
        msgCh      chan []byte
        async      bool
 }
@@ -52,7 +52,7 @@ func (p *P2PPeer) ServiceFlag() consensus.ServiceFlag {
        return p.flag
 }
 
-func (p *P2PPeer) SetConnection(srcPeer *P2PPeer, node *ChainManager) {
+func (p *P2PPeer) SetConnection(srcPeer *P2PPeer, node *Manager) {
        p.srcPeer = srcPeer
        p.remoteNode = node
 }
@@ -89,23 +89,26 @@ func NewPeerSet() *PeerSet {
        return &PeerSet{}
 }
 
-func (ps *PeerSet) AddBannedPeer(string) error { return nil }
-func (ps *PeerSet) StopPeerGracefully(string)  {}
+func (ps *PeerSet) IsBanned(peerID string, level byte, reason string) bool {
+       return false
+}
+
+func (ps *PeerSet) StopPeerGracefully(string) {}
 
 type NetWork struct {
-       nodes map[*ChainManager]P2PPeer
+       nodes map[*Manager]P2PPeer
 }
 
 func NewNetWork() *NetWork {
-       return &NetWork{map[*ChainManager]P2PPeer{}}
+       return &NetWork{map[*Manager]P2PPeer{}}
 }
 
-func (nw *NetWork) Register(node *ChainManager, addr, id string, flag consensus.ServiceFlag) {
+func (nw *NetWork) Register(node *Manager, addr, id string, flag consensus.ServiceFlag) {
        peer := NewP2PPeer(addr, id, flag)
        nw.nodes[node] = *peer
 }
 
-func (nw *NetWork) HandsShake(nodeA, nodeB *ChainManager) (*P2PPeer, *P2PPeer, error) {
+func (nw *NetWork) HandsShake(nodeA, nodeB *Manager) (*P2PPeer, *P2PPeer, error) {
        B2A, ok := nw.nodes[nodeA]
        if !ok {
                return nil, nil, errors.New("can't find nodeA's p2p peer on network")
@@ -120,7 +123,8 @@ func (nw *NetWork) HandsShake(nodeA, nodeB *ChainManager) (*P2PPeer, *P2PPeer, e
 
        nodeA.AddPeer(&A2B)
        nodeB.AddPeer(&B2A)
-
+       nodeA.SendStatus(B2A.srcPeer)
+       nodeB.SendStatus(A2B.srcPeer)
        A2B.setAsync(true)
        B2A.setAsync(true)
        return &B2A, &A2B, nil
@@ -150,18 +154,20 @@ func mockBlocks(startBlock *types.Block, height uint64) []*types.Block {
        return blocks
 }
 
-func mockSync(blocks []*types.Block) *ChainManager {
-       chain := mock.NewChain()
+func mockSync(blocks []*types.Block, mempool *mock.Mempool) *Manager {
+       chain := mock.NewChain(mempool)
        peers := peers.NewPeerSet(NewPeerSet())
        chain.SetBestBlockHeader(&blocks[len(blocks)-1].BlockHeader)
        for _, block := range blocks {
                chain.SetBlockByHeight(block.Height, block)
        }
 
-       return &ChainManager{
+       return &Manager{
                chain:       chain,
                blockKeeper: newBlockKeeper(chain, peers),
                peers:       peers,
+               mempool:     mempool,
+               txSyncCh:    make(chan *txSyncMsg),
        }
 }