aboutsummaryrefslogtreecommitdiffstats
path: root/core/chain_manager_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/chain_manager_test.go')
-rw-r--r--core/chain_manager_test.go37
1 files changed, 31 insertions, 6 deletions
diff --git a/core/chain_manager_test.go b/core/chain_manager_test.go
index a88afd7c8..50915459b 100644
--- a/core/chain_manager_test.go
+++ b/core/chain_manager_test.go
@@ -9,6 +9,7 @@ import (
"strconv"
"testing"
+ "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb"
@@ -44,7 +45,7 @@ func testFork(t *testing.T, bman *BlockProcessor, i, N int, f func(td1, td2 *big
// extend the fork
parent := bman2.bc.CurrentBlock()
chainB := makeChain(bman2, parent, N, db, ForkSeed)
- err = bman2.bc.InsertChain(chainB)
+ _, err = bman2.bc.InsertChain(chainB)
if err != nil {
t.Fatal("Insert chain error for fork:", err)
}
@@ -108,7 +109,7 @@ func loadChain(fn string, t *testing.T) (types.Blocks, error) {
}
func insertChain(done chan bool, chainMan *ChainManager, chain types.Blocks, t *testing.T) {
- err := chainMan.InsertChain(chain)
+ _, err := chainMan.InsertChain(chain)
if err != nil {
fmt.Println(err)
t.FailNow()
@@ -369,11 +370,8 @@ func makeChainWithDiff(genesis *types.Block, d []int, seed byte) []*types.Block
return chain
}
-func TestReorg(t *testing.T) {
- db, _ := ethdb.NewMemDatabase()
+func chm(genesis *types.Block, db common.Database) *ChainManager {
var eventMux event.TypeMux
-
- genesis := GenesisBlock(db)
bc := &ChainManager{blockDb: db, stateDb: db, genesisBlock: genesis, eventMux: &eventMux}
bc.cache = NewBlockCache(100)
bc.futureBlocks = NewBlockCache(100)
@@ -381,6 +379,14 @@ func TestReorg(t *testing.T) {
bc.ResetWithGenesisBlock(genesis)
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)
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())
+ }
+ }
+}