mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 02:12:23 +00:00
core: move test util var/func to test file
This commit is contained in:
parent
574378edb5
commit
62bcc43143
2 changed files with 34 additions and 33 deletions
|
|
@ -25,6 +25,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/consensus"
|
||||||
"github.com/ethereum/go-ethereum/consensus/ethash"
|
"github.com/ethereum/go-ethereum/consensus/ethash"
|
||||||
"github.com/ethereum/go-ethereum/core/rawdb"
|
"github.com/ethereum/go-ethereum/core/rawdb"
|
||||||
"github.com/ethereum/go-ethereum/core/state"
|
"github.com/ethereum/go-ethereum/core/state"
|
||||||
|
|
@ -35,6 +36,39 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// So we can deterministically seed different blockchains
|
||||||
|
var (
|
||||||
|
canonicalSeed = 1
|
||||||
|
forkSeed = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
// newCanonical creates a chain database, and injects a deterministic canonical
|
||||||
|
// chain. Depending on the full flag, if creates either a full block chain or a
|
||||||
|
// header only chain.
|
||||||
|
func newCanonical(engine consensus.Engine, n int, full bool) (ethdb.Database, *BlockChain, error) {
|
||||||
|
var (
|
||||||
|
db = ethdb.NewMemDatabase()
|
||||||
|
genesis = new(Genesis).MustCommit(db)
|
||||||
|
)
|
||||||
|
|
||||||
|
// Initialize a fresh chain with only a genesis block
|
||||||
|
blockchain, _ := NewBlockChain(db, nil, params.AllEthashProtocolChanges, engine, vm.Config{})
|
||||||
|
// Create and inject the requested chain
|
||||||
|
if n == 0 {
|
||||||
|
return db, blockchain, nil
|
||||||
|
}
|
||||||
|
if full {
|
||||||
|
// Full block-chain requested
|
||||||
|
blocks := makeBlockChain(genesis, n, engine, db, canonicalSeed)
|
||||||
|
_, err := blockchain.InsertChain(blocks)
|
||||||
|
return db, blockchain, err
|
||||||
|
}
|
||||||
|
// Header-only chain requested
|
||||||
|
headers := makeHeaderChain(genesis.Header(), n, engine, db, canonicalSeed)
|
||||||
|
_, err := blockchain.InsertHeaderChain(headers, 1)
|
||||||
|
return db, blockchain, err
|
||||||
|
}
|
||||||
|
|
||||||
// Test fork of length N starting from block i
|
// Test fork of length N starting from block i
|
||||||
func testFork(t *testing.T, blockchain *BlockChain, i, n int, full bool, comparator func(td1, td2 *big.Int)) {
|
func testFork(t *testing.T, blockchain *BlockChain, i, n int, full bool, comparator func(td1, td2 *big.Int)) {
|
||||||
// Copy old chain up to #i into a new db
|
// Copy old chain up to #i into a new db
|
||||||
|
|
|
||||||
|
|
@ -30,12 +30,6 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
)
|
)
|
||||||
|
|
||||||
// So we can deterministically seed different blockchains
|
|
||||||
var (
|
|
||||||
canonicalSeed = 1
|
|
||||||
forkSeed = 2
|
|
||||||
)
|
|
||||||
|
|
||||||
// BlockGen creates blocks for testing.
|
// BlockGen creates blocks for testing.
|
||||||
// See GenerateChain for a detailed explanation.
|
// See GenerateChain for a detailed explanation.
|
||||||
type BlockGen struct {
|
type BlockGen struct {
|
||||||
|
|
@ -252,33 +246,6 @@ func makeHeader(chain consensus.ChainReader, parent *types.Block, state *state.S
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// newCanonical creates a chain database, and injects a deterministic canonical
|
|
||||||
// chain. Depending on the full flag, if creates either a full block chain or a
|
|
||||||
// header only chain.
|
|
||||||
func newCanonical(engine consensus.Engine, n int, full bool) (ethdb.Database, *BlockChain, error) {
|
|
||||||
var (
|
|
||||||
db = ethdb.NewMemDatabase()
|
|
||||||
genesis = new(Genesis).MustCommit(db)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Initialize a fresh chain with only a genesis block
|
|
||||||
blockchain, _ := NewBlockChain(db, nil, params.AllEthashProtocolChanges, engine, vm.Config{})
|
|
||||||
// Create and inject the requested chain
|
|
||||||
if n == 0 {
|
|
||||||
return db, blockchain, nil
|
|
||||||
}
|
|
||||||
if full {
|
|
||||||
// Full block-chain requested
|
|
||||||
blocks := makeBlockChain(genesis, n, engine, db, canonicalSeed)
|
|
||||||
_, err := blockchain.InsertChain(blocks)
|
|
||||||
return db, blockchain, err
|
|
||||||
}
|
|
||||||
// Header-only chain requested
|
|
||||||
headers := makeHeaderChain(genesis.Header(), n, engine, db, canonicalSeed)
|
|
||||||
_, err := blockchain.InsertHeaderChain(headers, 1)
|
|
||||||
return db, blockchain, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// makeHeaderChain creates a deterministic chain of headers rooted at parent.
|
// makeHeaderChain creates a deterministic chain of headers rooted at parent.
|
||||||
func makeHeaderChain(parent *types.Header, n int, engine consensus.Engine, db ethdb.Database, seed int) []*types.Header {
|
func makeHeaderChain(parent *types.Header, n int, engine consensus.Engine, db ethdb.Database, seed int) []*types.Header {
|
||||||
blocks := makeBlockChain(types.NewBlockWithHeader(parent), n, engine, db, seed)
|
blocks := makeBlockChain(types.NewBlockWithHeader(parent), n, engine, db, seed)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue