core: added some additional chain tests for shortest chain
This commit is contained in:
parent
04c209980b
commit
2590a7dabb
@ -593,7 +593,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if glog.V(logger.Detail) {
|
if glog.V(logger.Detail) {
|
||||||
glog.Infof("inserted forked block #%d (%d TXs %d UNCs) (%x...)\n", block.Number(), len(block.Transactions()), len(block.Uncles()), block.Hash().Bytes()[0:4])
|
glog.Infof("inserted forked block #%d (TD=%v) (%d TXs %d UNCs) (%x...)\n", block.Number(), block.Difficulty(), len(block.Transactions()), len(block.Uncles()), block.Hash().Bytes()[0:4])
|
||||||
}
|
}
|
||||||
|
|
||||||
queue[i] = ChainSideEvent{block, logs}
|
queue[i] = ChainSideEvent{block, logs}
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/core/state"
|
"github.com/ethereum/go-ethereum/core/state"
|
||||||
"github.com/ethereum/go-ethereum/core/types"
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/ethdb"
|
"github.com/ethereum/go-ethereum/ethdb"
|
||||||
@ -369,11 +370,8 @@ func makeChainWithDiff(genesis *types.Block, d []int, seed byte) []*types.Block
|
|||||||
return chain
|
return chain
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReorg(t *testing.T) {
|
func chm(genesis *types.Block, db common.Database) *ChainManager {
|
||||||
db, _ := ethdb.NewMemDatabase()
|
|
||||||
var eventMux event.TypeMux
|
var eventMux event.TypeMux
|
||||||
|
|
||||||
genesis := GenesisBlock(db)
|
|
||||||
bc := &ChainManager{blockDb: db, stateDb: db, genesisBlock: genesis, eventMux: &eventMux}
|
bc := &ChainManager{blockDb: db, stateDb: db, genesisBlock: genesis, eventMux: &eventMux}
|
||||||
bc.cache = NewBlockCache(100)
|
bc.cache = NewBlockCache(100)
|
||||||
bc.futureBlocks = NewBlockCache(100)
|
bc.futureBlocks = NewBlockCache(100)
|
||||||
@ -381,6 +379,14 @@ func TestReorg(t *testing.T) {
|
|||||||
bc.ResetWithGenesisBlock(genesis)
|
bc.ResetWithGenesisBlock(genesis)
|
||||||
bc.txState = state.ManageState(bc.State())
|
bc.txState = state.ManageState(bc.State())
|
||||||
|
|
||||||
|
return bc
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestReorgLongest(t *testing.T) {
|
||||||
|
db, _ := ethdb.NewMemDatabase()
|
||||||
|
genesis := GenesisBlock(db)
|
||||||
|
bc := chm(genesis, db)
|
||||||
|
|
||||||
chain1 := makeChainWithDiff(genesis, []int{1, 2, 4}, 10)
|
chain1 := makeChainWithDiff(genesis, []int{1, 2, 4}, 10)
|
||||||
chain2 := makeChainWithDiff(genesis, []int{1, 2, 3, 4}, 11)
|
chain2 := makeChainWithDiff(genesis, []int{1, 2, 3, 4}, 11)
|
||||||
|
|
||||||
@ -394,3 +400,22 @@ func TestReorg(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestReorgShortest(t *testing.T) {
|
||||||
|
db, _ := ethdb.NewMemDatabase()
|
||||||
|
genesis := GenesisBlock(db)
|
||||||
|
bc := chm(genesis, db)
|
||||||
|
|
||||||
|
chain1 := makeChainWithDiff(genesis, []int{1, 2, 3, 4}, 10)
|
||||||
|
chain2 := makeChainWithDiff(genesis, []int{1, 10}, 11)
|
||||||
|
|
||||||
|
bc.InsertChain(chain1)
|
||||||
|
bc.InsertChain(chain2)
|
||||||
|
|
||||||
|
prev := bc.CurrentBlock()
|
||||||
|
for block := bc.GetBlockByNumber(bc.CurrentBlock().NumberU64() - 1); block.NumberU64() != 0; prev, block = block, bc.GetBlockByNumber(block.NumberU64()-1) {
|
||||||
|
if prev.ParentHash() != block.Hash() {
|
||||||
|
t.Errorf("parent hash mismatch %x - %x", prev.ParentHash(), block.Hash())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user