Skip to content

Commit 25db6a9

Browse files
restore blockcahin test
1 parent 4d25847 commit 25db6a9

File tree

1 file changed

+99
-43
lines changed

1 file changed

+99
-43
lines changed

core/blockchain_test.go

Lines changed: 99 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"github.com/ava-labs/libevm/crypto"
1818
"github.com/ava-labs/libevm/eth/tracers/logger"
1919
"github.com/ava-labs/libevm/ethdb"
20-
"github.com/stretchr/testify/require"
2120

2221
"github.com/ava-labs/subnet-evm/consensus/dummy"
2322
"github.com/ava-labs/subnet-evm/core/state/pruner"
@@ -354,7 +353,9 @@ func testRepopulateMissingTriesParallel(t *testing.T, parallelism int) {
354353
}
355354

356355
blockchain, err := createBlockChain(chainDB, pruningConfig, gspec, common.Hash{})
357-
require.NoError(t, err)
356+
if err != nil {
357+
t.Fatal(err)
358+
}
358359
defer blockchain.Stop()
359360

360361
// This call generates a chain of 3 blocks.
@@ -363,24 +364,33 @@ func testRepopulateMissingTriesParallel(t *testing.T, parallelism int) {
363364
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(10000), ethparams.TxGas, nil, nil), signer, key1)
364365
gen.AddTx(tx)
365366
})
366-
require.NoError(t, err)
367+
if err != nil {
368+
t.Fatal(err)
369+
}
367370

368-
_, err = blockchain.InsertChain(chain)
369-
require.NoError(t, err)
371+
if _, err := blockchain.InsertChain(chain); err != nil {
372+
t.Fatal(err)
373+
}
370374
for _, block := range chain {
371-
require.NoError(t, blockchain.Accept(block), "failed to accept block %d", block.NumberU64())
375+
if err := blockchain.Accept(block); err != nil {
376+
t.Fatal(err)
377+
}
372378
}
373379
blockchain.DrainAcceptorQueue()
374380

375381
lastAcceptedHash := blockchain.LastConsensusAcceptedBlock().Hash()
376382
blockchain.Stop()
377383

378384
blockchain, err = createBlockChain(chainDB, pruningConfig, gspec, lastAcceptedHash)
379-
require.NoError(t, err, "failed to create blockchain")
385+
if err != nil {
386+
t.Fatal(err)
387+
}
380388

381389
// Confirm that the node does not have the state for intermediate nodes (exclude the last accepted block)
382390
for _, block := range chain[:len(chain)-1] {
383-
require.False(t, blockchain.HasState(block.Root()), "Expected blockchain to be missing state for intermediate block %d with pruning enabled", block.NumberU64())
391+
if blockchain.HasState(block.Root()) {
392+
t.Fatalf("Expected blockchain to be missing state for intermediate block %d with pruning enabled", block.NumberU64())
393+
}
384394
}
385395
blockchain.Stop()
386396

@@ -402,11 +412,15 @@ func testRepopulateMissingTriesParallel(t *testing.T, parallelism int) {
402412
gspec,
403413
lastAcceptedHash,
404414
)
405-
require.NoError(t, err, "failed to create blockchain")
415+
if err != nil {
416+
t.Fatal(err)
417+
}
406418
defer blockchain.Stop()
407419

408420
for _, block := range chain {
409-
require.True(t, blockchain.HasState(block.Root()), "Expected blockchain to have state for block %d", block.NumberU64())
421+
if !blockchain.HasState(block.Root()) {
422+
t.Fatalf("failed to re-generate state for block %d", block.NumberU64())
423+
}
410424
}
411425
}
412426

@@ -521,48 +535,67 @@ func testCanonicalHashMarker(t *testing.T, scheme string) {
521535
engine = dummy.NewCoinbaseFaker()
522536
)
523537
_, forkA, _, err := GenerateChainWithGenesis(gspec, engine, c.forkA, 10, func(int, *BlockGen) {})
524-
require.NoError(t, err, "failed to generate chain A")
538+
if err != nil {
539+
t.Fatal(err)
540+
}
525541
_, forkB, _, err := GenerateChainWithGenesis(gspec, engine, c.forkB, 10, func(int, *BlockGen) {})
526-
require.NoError(t, err, "failed to generate chain B")
542+
if err != nil {
543+
t.Fatal(err)
544+
}
527545

528546
// Initialize test chain
529547
db := rawdb.NewMemoryDatabase()
530548
cacheConfig := DefaultCacheConfigWithScheme(scheme)
531549
cacheConfig.ChainDataDir = t.TempDir()
532550
chain, err := NewBlockChain(db, cacheConfig, gspec, engine, vm.Config{}, common.Hash{}, false)
533-
require.NoError(t, err, "failed to create tester chain: %v", err)
534-
551+
if err != nil {
552+
t.Fatalf("failed to create tester chain: %v", err)
553+
}
535554
// Insert forkA and forkB, the canonical should on forkA still
536-
n, err := chain.InsertChain(forkA)
537-
require.NoError(t, err, "block %d: failed to insert into chain: %v", n, err)
538-
n, err = chain.InsertChain(forkB)
539-
require.NoError(t, err, "block %d: failed to insert into chain: %v", n, err)
555+
if n, err := chain.InsertChain(forkA); err != nil {
556+
t.Fatalf("block %d: failed to insert into chain: %v", n, err)
557+
}
558+
if n, err := chain.InsertChain(forkB); err != nil {
559+
t.Fatalf("block %d: failed to insert into chain: %v", n, err)
560+
}
540561

541562
verify := func(head *types.Block) {
542-
require.Equal(t, head.Hash(), chain.CurrentBlock().Hash(), "Unexpected block hash, want %x, got %x", head.Hash(), chain.CurrentBlock().Hash())
543-
require.Equal(t, head.Hash(), chain.CurrentHeader().Hash(), "Unexpected head header, want %x, got %x", head.Hash(), chain.CurrentHeader().Hash())
544-
require.True(t, chain.HasState(head.Root()), "Lost block state %v %x", head.Number(), head.Hash())
563+
if chain.CurrentBlock().Hash() != head.Hash() {
564+
t.Fatalf("Unexpected block hash, want %x, got %x", head.Hash(), chain.CurrentBlock().Hash())
565+
}
566+
if chain.CurrentHeader().Hash() != head.Hash() {
567+
t.Fatalf("Unexpected head header, want %x, got %x", head.Hash(), chain.CurrentHeader().Hash())
568+
}
569+
if !chain.HasState(head.Root()) {
570+
t.Fatalf("Lost block state %v %x", head.Number(), head.Hash())
571+
}
545572
}
546573

547574
// Switch canonical chain to forkB if necessary
548575
if len(forkA) < len(forkB) {
549576
verify(forkB[len(forkB)-1])
550577
} else {
551578
verify(forkA[len(forkA)-1])
552-
require.NoError(t, chain.SetPreference(forkB[len(forkB)-1]))
579+
if err := chain.SetPreference(forkB[len(forkB)-1]); err != nil {
580+
t.Fatal(err)
581+
}
553582
verify(forkB[len(forkB)-1])
554583
}
555584

556585
// Ensure all hash markers are updated correctly
557586
for i := 0; i < len(forkB); i++ {
558587
block := forkB[i]
559588
hash := chain.GetCanonicalHash(block.NumberU64())
560-
require.Equal(t, block.Hash(), hash, "Unexpected canonical hash %d", block.NumberU64())
589+
if hash != block.Hash() {
590+
t.Fatalf("Unexpected canonical hash %d", block.NumberU64())
591+
}
561592
}
562593
if c.forkA > c.forkB {
563594
for i := uint64(c.forkB) + 1; i <= uint64(c.forkA); i++ {
564595
hash := chain.GetCanonicalHash(i)
565-
require.Zero(t, hash, "Unexpected canonical hash %d", i)
596+
if hash != (common.Hash{}) {
597+
t.Fatalf("Unexpected canonical hash %d", i)
598+
}
566599
}
567600
}
568601
chain.Stop()
@@ -703,12 +736,15 @@ func testCreateThenDelete(t *testing.T, config *params.ChainConfig) {
703736
// Debug: true,
704737
// Tracer: logger.NewJSONLogger(nil, os.Stdout),
705738
}, common.Hash{}, false)
706-
require.NoError(t, err, "failed to create tester chain: %v", err)
739+
if err != nil {
740+
t.Fatalf("failed to create tester chain: %v", err)
741+
}
707742
defer chain.Stop()
708743
// Import the blocks
709744
for _, block := range blocks {
710-
_, err = chain.InsertChain([]*types.Block{block})
711-
require.NoError(t, err, "block %d: failed to insert into chain: %v", block.NumberU64(), err)
745+
if _, err := chain.InsertChain([]*types.Block{block}); err != nil {
746+
t.Fatalf("block %d: failed to insert into chain: %v", block.NumberU64(), err)
747+
}
712748
}
713749
}
714750

@@ -810,15 +846,19 @@ func TestDeleteThenCreate(t *testing.T) {
810846
nonce++
811847
}
812848
})
813-
require.NoError(t, err, "failed to generate chain: %v", err)
814-
849+
if err != nil {
850+
t.Fatal(err)
851+
}
815852
// Import the canonical chain
816853
chain, err := NewBlockChain(rawdb.NewMemoryDatabase(), DefaultCacheConfig, gspec, engine, vm.Config{}, common.Hash{}, false)
817-
require.NoError(t, err, "failed to create tester chain: %v", err)
854+
if err != nil {
855+
t.Fatalf("failed to create tester chain: %v", err)
856+
}
818857
defer chain.Stop()
819858
for _, block := range blocks {
820-
_, err = chain.InsertChain([]*types.Block{block})
821-
require.NoError(t, err, "block %d: failed to insert into chain: %v", block.NumberU64(), err)
859+
if _, err := chain.InsertChain([]*types.Block{block}); err != nil {
860+
t.Fatalf("block %d: failed to insert into chain: %v", block.NumberU64(), err)
861+
}
822862
}
823863
}
824864

@@ -898,17 +938,24 @@ func TestTransientStorageReset(t *testing.T) {
898938

899939
// Initialize the blockchain with 1153 enabled.
900940
chain, err := NewBlockChain(rawdb.NewMemoryDatabase(), DefaultCacheConfig, gspec, engine, vmConfig, common.Hash{}, false)
901-
require.NoError(t, err, "failed to create tester chain: %v", err)
941+
if err != nil {
942+
t.Fatalf("failed to create tester chain: %v", err)
943+
}
902944
defer chain.Stop()
903945
// Import the blocks
904-
_, err = chain.InsertChain(blocks)
905-
require.NoError(t, err, "failed to insert into chain: %v", err)
946+
if _, err := chain.InsertChain(blocks); err != nil {
947+
t.Fatalf("failed to insert into chain: %v", err)
948+
}
906949
// Check the storage
907950
state, err := chain.StateAt(chain.CurrentHeader().Root)
908-
require.NoError(t, err, "failed to load state: %v", err)
951+
if err != nil {
952+
t.Fatalf("Failed to load state %v", err)
953+
}
909954
loc := common.BytesToHash([]byte{1})
910955
slot := state.GetState(destAddress, loc)
911-
require.Zero(t, slot, "Unexpected dirty storage slot")
956+
if slot != (common.Hash{}) {
957+
t.Fatalf("Unexpected dirty storage slot")
958+
}
912959
}
913960

914961
func TestEIP3651(t *testing.T) {
@@ -981,17 +1028,22 @@ func TestEIP3651(t *testing.T) {
9811028
b.AddTx(tx)
9821029
})
9831030
chain, err := NewBlockChain(rawdb.NewMemoryDatabase(), DefaultCacheConfig, gspec, engine, vm.Config{Tracer: logger.NewMarkdownLogger(&logger.Config{}, os.Stderr)}, common.Hash{}, false)
984-
require.NoError(t, err, "failed to create tester chain: %v", err)
1031+
if err != nil {
1032+
t.Fatalf("failed to create tester chain: %v", err)
1033+
}
9851034
defer chain.Stop()
986-
_, err = chain.InsertChain(blocks)
987-
require.NoError(t, err, "failed to insert into chain: %v", err)
1035+
if n, err := chain.InsertChain(blocks); err != nil {
1036+
t.Fatalf("block %d: failed to insert into chain: %v", n, err)
1037+
}
9881038

9891039
block := chain.GetBlockByNumber(1)
9901040

9911041
// 1+2: Ensure EIP-1559 access lists are accounted for via gas usage.
9921042
innerGas := vm.GasQuickStep*2 + ethparams.ColdSloadCostEIP2929*2
9931043
expectedGas := ethparams.TxGas + 5*vm.GasFastestStep + vm.GasQuickStep + 100 + innerGas // 100 because 0xaaaa is in access list
994-
require.Equal(t, expectedGas, block.GasUsed(), "incorrect amount of gas spent: expected %d, got %d", expectedGas, block.GasUsed())
1044+
if block.GasUsed() != expectedGas {
1045+
t.Fatalf("incorrect amount of gas spent: expected %d, got %d", expectedGas, block.GasUsed())
1046+
}
9951047

9961048
state, _ := chain.State()
9971049

@@ -1003,11 +1055,15 @@ func TestEIP3651(t *testing.T) {
10031055
tx := block.Transactions()[0]
10041056
gasPrice := new(big.Int).Add(block.BaseFee(), tx.EffectiveGasTipValue(block.BaseFee()))
10051057
expected := new(big.Int).SetUint64(block.GasUsed() * gasPrice.Uint64())
1006-
require.Zero(t, actual.Cmp(expected), "miner balance incorrect: expected %d, got %d", expected, actual)
1058+
if actual.Cmp(expected) != 0 {
1059+
t.Fatalf("miner balance incorrect: expected %d, got %d", expected, actual)
1060+
}
10071061

10081062
// 4: Ensure the tx sender paid for the gasUsed * (block baseFee + effectiveGasTip).
10091063
// Note this differs from go-ethereum where the miner receives the gasUsed * block baseFee,
10101064
// as our handling of the coinbase payment is different.
10111065
actual = new(big.Int).Sub(funds, state.GetBalance(addr1).ToBig())
1012-
require.Zero(t, actual.Cmp(expected), "sender balance incorrect: expected %d, got %d", expected, actual)
1066+
if actual.Cmp(expected) != 0 {
1067+
t.Fatalf("sender balance incorrect: expected %d, got %d", expected, actual)
1068+
}
10131069
}

0 commit comments

Comments
 (0)