X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=netsync%2Fchainmgr%2Ftool_test.go;h=4a3badd97b2f82d098b908fdc72ea89b15ca82ed;hp=e3549841e33695be6a3de268fb91275b5e71cfa6;hb=669d176c004324fe81a26261a6e41ddea95b6f17;hpb=93dd7ceb9c426fa99362a81bf7e137d410d4ef92 diff --git a/netsync/chainmgr/tool_test.go b/netsync/chainmgr/tool_test.go index e3549841..4a3badd9 100644 --- a/netsync/chainmgr/tool_test.go +++ b/netsync/chainmgr/tool_test.go @@ -4,9 +4,11 @@ import ( "errors" "math/rand" "net" + "time" - wire "github.com/tendermint/go-wire" + "github.com/tendermint/go-wire" "github.com/tendermint/tmlibs/flowrate" + dbm "github.com/vapor/database/leveldb" "github.com/vapor/consensus" "github.com/vapor/netsync/peers" @@ -48,6 +50,10 @@ func (p *P2PPeer) IsLAN() bool { return false } +func (p *P2PPeer) RemoteAddrHost() string { + return "" +} + func (p *P2PPeer) ServiceFlag() consensus.ServiceFlag { return p.flag } @@ -79,6 +85,7 @@ func (p *P2PPeer) setAsync(b bool) { func (p *P2PPeer) postMan() { for msgBytes := range p.msgCh { msgType, msg, _ := decodeMessage(msgBytes) + time.Sleep(10 * time.Millisecond) p.remoteNode.processMsg(p.srcPeer, msgType, msg) } } @@ -89,8 +96,11 @@ func NewPeerSet() *PeerSet { return &PeerSet{} } -func (ps *PeerSet) AddBannedPeer(string) error { return nil } -func (ps *PeerSet) StopPeerGracefully(string) {} +func (ps *PeerSet) IsBanned(ip string, level byte, reason string) bool { + return false +} + +func (ps *PeerSet) StopPeerGracefully(string) {} type NetWork struct { nodes map[*Manager]P2PPeer @@ -120,7 +130,8 @@ func (nw *NetWork) HandsShake(nodeA, nodeB *Manager) (*P2PPeer, *P2PPeer, error) 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,7 +161,34 @@ func mockBlocks(startBlock *types.Block, height uint64) []*types.Block { return blocks } -func mockSync(blocks []*types.Block, mempool *mock.Mempool) *Manager { +func mockErrorBlocks(startBlock *types.Block, height uint64, errBlockHeight uint64) []*types.Block { + blocks := []*types.Block{} + indexBlock := &types.Block{} + if startBlock == nil { + indexBlock = &types.Block{BlockHeader: types.BlockHeader{Version: uint64(rand.Uint32())}} + blocks = append(blocks, indexBlock) + } else { + indexBlock = startBlock + } + + for indexBlock.Height < height { + block := &types.Block{ + BlockHeader: types.BlockHeader{ + Height: indexBlock.Height + 1, + PreviousBlockHash: indexBlock.Hash(), + Version: uint64(rand.Uint32()), + }, + } + if block.Height == errBlockHeight { + block.TransactionsMerkleRoot = bc.NewHash([32]byte{0x1}) + } + blocks = append(blocks, block) + indexBlock = block + } + return blocks +} + +func mockSync(blocks []*types.Block, mempool *mock.Mempool, fastSyncDB dbm.DB) *Manager { chain := mock.NewChain(mempool) peers := peers.NewPeerSet(NewPeerSet()) chain.SetBestBlockHeader(&blocks[len(blocks)-1].BlockHeader) @@ -160,7 +198,7 @@ func mockSync(blocks []*types.Block, mempool *mock.Mempool) *Manager { return &Manager{ chain: chain, - blockKeeper: newBlockKeeper(chain, peers), + blockKeeper: newBlockKeeper(chain, peers, fastSyncDB), peers: peers, mempool: mempool, txSyncCh: make(chan *txSyncMsg),