uncomment future block TD check, add test for skipping TD check on future block
This commit is contained in:
parent
e55747a074
commit
0e2bc23148
@ -790,10 +790,10 @@ func (self *BlockPool) checkTD(nodes ...*node) {
|
|||||||
if n.td != nil && !n.block.Queued() {
|
if n.td != nil && !n.block.Queued() {
|
||||||
plog.DebugDetailf("peer td %v =?= block td %v", n.td, n.block.Td)
|
plog.DebugDetailf("peer td %v =?= block td %v", n.td, n.block.Td)
|
||||||
if n.td.Cmp(n.block.Td) != 0 {
|
if n.td.Cmp(n.block.Td) != 0 {
|
||||||
// self.peers.peerError(n.blockBy, ErrIncorrectTD, "on block %x", n.hash)
|
self.peers.peerError(n.blockBy, ErrIncorrectTD, "on block %x", n.hash)
|
||||||
// self.status.lock.Lock()
|
self.status.lock.Lock()
|
||||||
// self.status.badPeers[n.blockBy]++
|
self.status.badPeers[n.blockBy]++
|
||||||
// self.status.lock.Unlock()
|
self.status.lock.Unlock()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ func (self *blockPoolTester) insertChain(blocks types.Blocks) error {
|
|||||||
var ok bool
|
var ok bool
|
||||||
for _, block := range blocks {
|
for _, block := range blocks {
|
||||||
child = self.hashPool.HashesToIndexes([]common.Hash{block.Hash()})[0]
|
child = self.hashPool.HashesToIndexes([]common.Hash{block.Hash()})[0]
|
||||||
var td int
|
td := child
|
||||||
if self.tds != nil {
|
if self.tds != nil {
|
||||||
td, ok = self.tds[child]
|
td, ok = self.tds[child]
|
||||||
}
|
}
|
||||||
|
@ -128,8 +128,6 @@ func TestErrInsufficientChainInfo(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestIncorrectTD(t *testing.T) {
|
func TestIncorrectTD(t *testing.T) {
|
||||||
t.Skip() // @zelig this one requires fixing for the TD
|
|
||||||
|
|
||||||
test.LogInit()
|
test.LogInit()
|
||||||
_, blockPool, blockPoolTester := newTestBlockPool(t)
|
_, blockPool, blockPoolTester := newTestBlockPool(t)
|
||||||
blockPoolTester.blockChain[0] = nil
|
blockPoolTester.blockChain[0] = nil
|
||||||
@ -156,6 +154,45 @@ func TestIncorrectTD(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSkipIncorrectTDonFutureBlocks(t *testing.T) {
|
||||||
|
// t.Skip() // @zelig this one requires fixing for the TD
|
||||||
|
|
||||||
|
test.LogInit()
|
||||||
|
_, blockPool, blockPoolTester := newTestBlockPool(t)
|
||||||
|
blockPoolTester.blockChain[0] = nil
|
||||||
|
blockPoolTester.initRefBlockChain(3)
|
||||||
|
|
||||||
|
blockPool.insertChain = func(blocks types.Blocks) error {
|
||||||
|
err := blockPoolTester.insertChain(blocks)
|
||||||
|
if err == nil {
|
||||||
|
for _, block := range blocks {
|
||||||
|
if block.Td.Cmp(common.Big3) == 0 {
|
||||||
|
block.Td = common.Big3
|
||||||
|
block.SetQueued(true)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
blockPool.Start()
|
||||||
|
|
||||||
|
peer1 := blockPoolTester.newPeer("peer1", 3, 3)
|
||||||
|
peer1.AddPeer()
|
||||||
|
go peer1.serveBlocks(2, 3)
|
||||||
|
go peer1.serveBlockHashes(3, 2, 1, 0)
|
||||||
|
peer1.serveBlocks(0, 1, 2)
|
||||||
|
|
||||||
|
blockPool.Wait(waitTimeout)
|
||||||
|
blockPool.Stop()
|
||||||
|
blockPoolTester.refBlockChain[3] = []int{}
|
||||||
|
blockPoolTester.checkBlockChain(blockPoolTester.refBlockChain)
|
||||||
|
if len(peer1.peerErrors) > 0 {
|
||||||
|
t.Errorf("expected no error, got %v (1 of %v)", peer1.peerErrors[0], len(peer1.peerErrors))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestPeerSuspension(t *testing.T) {
|
func TestPeerSuspension(t *testing.T) {
|
||||||
test.LogInit()
|
test.LogInit()
|
||||||
_, blockPool, blockPoolTester := newTestBlockPool(t)
|
_, blockPool, blockPoolTester := newTestBlockPool(t)
|
||||||
|
@ -473,8 +473,8 @@ func (self *peer) getBlockHashes() bool {
|
|||||||
// XXX added currentBlock check (?)
|
// XXX added currentBlock check (?)
|
||||||
if self.currentBlock != nil && self.currentBlock.Td != nil && !self.currentBlock.Queued() {
|
if self.currentBlock != nil && self.currentBlock.Td != nil && !self.currentBlock.Queued() {
|
||||||
if self.td.Cmp(self.currentBlock.Td) != 0 {
|
if self.td.Cmp(self.currentBlock.Td) != 0 {
|
||||||
// self.addError(ErrIncorrectTD, "on block %x", self.currentBlockHash)
|
self.addError(ErrIncorrectTD, "on block %x", self.currentBlockHash)
|
||||||
// self.bp.status.badPeers[self.id]++
|
self.bp.status.badPeers[self.id]++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
headKey := self.parentHash
|
headKey := self.parentHash
|
||||||
|
Loading…
Reference in New Issue
Block a user