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