"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"
return false
}
+func (p *P2PPeer) RemoteAddrHost() string {
+ return ""
+}
+
func (p *P2PPeer) ServiceFlag() consensus.ServiceFlag {
return p.flag
}
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)
}
}
return &PeerSet{}
}
-func (ps *PeerSet) IsBanned(peerID string, level byte, reason string) bool {
+func (ps *PeerSet) IsBanned(ip string, level byte, reason string) bool {
return false
}
nodeA.AddPeer(&A2B)
nodeB.AddPeer(&B2A)
-
+ nodeA.SendStatus(B2A.srcPeer)
+ nodeB.SendStatus(A2B.srcPeer)
A2B.setAsync(true)
B2A.setAsync(true)
return &B2A, &A2B, nil
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)
return &Manager{
chain: chain,
- blockKeeper: newBlockKeeper(chain, peers),
+ blockKeeper: newBlockKeeper(chain, peers, fastSyncDB),
peers: peers,
mempool: mempool,
txSyncCh: make(chan *txSyncMsg),