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() { | ||||
| 			plog.DebugDetailf("peer td %v =?= block td %v", n.td, n.block.Td) | ||||
| 			if n.td.Cmp(n.block.Td) != 0 { | ||||
| 				// self.peers.peerError(n.blockBy, ErrIncorrectTD, "on block %x", n.hash)
 | ||||
| 				// self.status.lock.Lock()
 | ||||
| 				// self.status.badPeers[n.blockBy]++
 | ||||
| 				// self.status.lock.Unlock()
 | ||||
| 				self.peers.peerError(n.blockBy, ErrIncorrectTD, "on block %x", n.hash) | ||||
| 				self.status.lock.Lock() | ||||
| 				self.status.badPeers[n.blockBy]++ | ||||
| 				self.status.lock.Unlock() | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @ -87,7 +87,7 @@ func (self *blockPoolTester) insertChain(blocks types.Blocks) error { | ||||
| 	var ok bool | ||||
| 	for _, block := range blocks { | ||||
| 		child = self.hashPool.HashesToIndexes([]common.Hash{block.Hash()})[0] | ||||
| 		var td int | ||||
| 		td := child | ||||
| 		if self.tds != nil { | ||||
| 			td, ok = self.tds[child] | ||||
| 		} | ||||
|  | ||||
| @ -128,8 +128,6 @@ func TestErrInsufficientChainInfo(t *testing.T) { | ||||
| } | ||||
| 
 | ||||
| func TestIncorrectTD(t *testing.T) { | ||||
| 	t.Skip() // @zelig this one requires fixing for the TD
 | ||||
| 
 | ||||
| 	test.LogInit() | ||||
| 	_, blockPool, blockPoolTester := newTestBlockPool(t) | ||||
| 	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) { | ||||
| 	test.LogInit() | ||||
| 	_, blockPool, blockPoolTester := newTestBlockPool(t) | ||||
|  | ||||
| @ -473,8 +473,8 @@ func (self *peer) getBlockHashes() bool { | ||||
| 			// XXX added currentBlock check (?)
 | ||||
| 			if self.currentBlock != nil && self.currentBlock.Td != nil && !self.currentBlock.Queued() { | ||||
| 				if self.td.Cmp(self.currentBlock.Td) != 0 { | ||||
| 					// self.addError(ErrIncorrectTD, "on block %x", self.currentBlockHash)
 | ||||
| 					// self.bp.status.badPeers[self.id]++
 | ||||
| 					self.addError(ErrIncorrectTD, "on block %x", self.currentBlockHash) | ||||
| 					self.bp.status.badPeers[self.id]++ | ||||
| 				} | ||||
| 			} | ||||
| 			headKey := self.parentHash | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user