From eac7dd4d56deaab0fc55c62e5045641fa1eb72b2 Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Mon, 27 Jan 2025 14:23:16 -0500 Subject: [PATCH] Ensure tests are still working properly --- eth/tracers/firehose.go | 6 +++++ eth/tracers/firehose_test.go | 6 ++--- .../tracetest/firehose/blockchain_test.go | 22 ++++++++++++------- .../tracetest/firehose/firehose_test.go | 10 ++++----- .../firehose/generate-prestate/main.go | 1 - .../tracetest/firehose/helpers_test.go | 8 +++---- 6 files changed, 32 insertions(+), 21 deletions(-) diff --git a/eth/tracers/firehose.go b/eth/tracers/firehose.go index 7ab5e8e38e..3cd68b0432 100644 --- a/eth/tracers/firehose.go +++ b/eth/tracers/firehose.go @@ -1675,6 +1675,11 @@ func newBlockHeaderFromChainHeader(hash common.Hash, h *types.Header, td *pbeth. parentBeaconRootBytes = root.Bytes() } + var requestHashBytes []byte + if hash := h.RequestsHash; hash != nil { + requestHashBytes = hash.Bytes() + } + pbHead := &pbeth.BlockHeader{ Hash: hash.Bytes(), Number: h.Number.Uint64(), @@ -1698,6 +1703,7 @@ func newBlockHeaderFromChainHeader(hash common.Hash, h *types.Header, td *pbeth. BlobGasUsed: h.BlobGasUsed, ExcessBlobGas: h.ExcessBlobGas, ParentBeaconRoot: parentBeaconRootBytes, + RequestsHash: requestHashBytes, // Only set on Polygon fork(s) TxDependency: nil, diff --git a/eth/tracers/firehose_test.go b/eth/tracers/firehose_test.go index 7961419e9f..085fbe88b9 100644 --- a/eth/tracers/firehose_test.go +++ b/eth/tracers/firehose_test.go @@ -133,7 +133,7 @@ func Test_TypesHeader_AllConsensusFieldsAreKnown(t *testing.T) { // When adding support for a new hard-fork that adds new block header fields, it's normal that this value // changes. If you are sure the two struct are the same, then you can update the expected hash below // to the new value. - expectedHash := common.HexToHash("5341947c531e5c9cf38202784b16ac66484fe1838aa6e825436b22321b927296") + expectedHash := common.HexToHash("4ced4916132bbf6a7819a310bbac4abf354062a00efc980ea4f0bab406546ac5") gethHeaderValue := reflect.New(gethHeaderType) fillAllFieldsWithNonEmptyValues(t, gethHeaderValue, reflect.VisibleFields(gethHeaderType)) @@ -146,7 +146,7 @@ func Test_TypesHeader_AllConsensusFieldsAreKnown(t *testing.T) { // actually a computed value based on the other fields in the struct, so if you change any field, // the hash will change also. // - // On hard-fork, it happens that new fields are added, this test serves as a way to "detect" in codde + // On hard-fork, it happens that new fields are added, this test serves as a way to "detect" in code // that the expected fields of `types.Header` changed require.Equal(t, expectedHash, gethHeader.Hash(), "Geth Header Hash mistmatch, got %q but expecting %q on *types.Header:\n\nGeth Header (from fillNonDefault(new(*types.Header)))\n%s", @@ -464,7 +464,7 @@ func blockEvent(height uint64) tracing.BlockEvent { return tracing.BlockEvent{ Block: types.NewBlock(&types.Header{ Number: big.NewInt(int64(height)), - }, nil, nil, nil, nil), + }, nil, nil, nil), TD: b(1), } } diff --git a/eth/tracers/internal/tracetest/firehose/blockchain_test.go b/eth/tracers/internal/tracetest/firehose/blockchain_test.go index dbea8a15f2..4cd4365a93 100644 --- a/eth/tracers/internal/tracetest/firehose/blockchain_test.go +++ b/eth/tracers/internal/tracetest/firehose/blockchain_test.go @@ -33,11 +33,13 @@ func runPrestateBlock(t *testing.T, prestatePath string, hooks *tracing.Hooks) { context := prestate.Context.toBlockContext(prestate.Genesis) - state := tests.MakePreState(rawdb.NewMemoryDatabase(), prestate.Genesis.Alloc, false, rawdb.HashScheme) - defer state.Close() + testState := tests.MakePreState(rawdb.NewMemoryDatabase(), prestate.Genesis.Alloc, false, rawdb.HashScheme) + defer testState.Close() - state.StateDB.SetLogger(hooks) - state.StateDB.SetTxContext(tx.Hash(), 0) + state.NewHookedState(testState.StateDB, hooks) + + // testState.StateDB.SetLogger(hooks) + testState.StateDB.SetTxContext(tx.Hash(), 0) block := types.NewBlock(&types.Header{ ParentHash: prestate.Genesis.ToBlock().Hash(), @@ -48,7 +50,9 @@ func runPrestateBlock(t *testing.T, prestatePath string, hooks *tracing.Hooks) { GasLimit: context.GasLimit, BaseFee: context.BaseFee, ParentBeaconRoot: ptr(common.Hash{}), - }, []*types.Transaction{tx}, nil, nil, trie.NewStackTrie(nil)) + }, &types.Body{ + Transactions: []*types.Transaction{tx}, + }, nil, trie.NewStackTrie(nil)) hooks.OnBlockchainInit(prestate.Genesis.Config) hooks.OnBlockStart(tracing.BlockEvent{ @@ -62,7 +66,7 @@ func runPrestateBlock(t *testing.T, prestatePath string, hooks *tracing.Hooks) { prestate, &context.Coinbase, new(core.GasPool).AddGas(block.GasLimit()), - state.StateDB, + testState.StateDB, block.Header(), tx, &usedGas, @@ -91,7 +95,7 @@ func newBlockchain(t *testing.T, alloc types.GenesisAlloc, context vm.BlockConte blockchain, err := core.NewBlockChain(rawdb.NewMemoryDatabase(), core.DefaultCacheConfigWithScheme(rawdb.HashScheme), genesis, nil, ethash.NewFullFaker(), vm.Config{ Tracer: tracer, - }, nil, nil) + }, nil) require.NoError(t, err) return genesis, blockchain @@ -126,6 +130,8 @@ func (h *testHasher) Hash() common.Hash { return common.BytesToHash(h.hasher.Sum(nil)) } +var _ core.Validator = (*ignoreValidateStateValidator)(nil) + type ignoreValidateStateValidator struct { core.Validator } @@ -134,6 +140,6 @@ func (v ignoreValidateStateValidator) ValidateBody(block *types.Block) error { return v.Validator.ValidateBody(block) } -func (v ignoreValidateStateValidator) ValidateState(block *types.Block, statedb *state.StateDB, receipts types.Receipts, usedGas uint64) error { +func (v ignoreValidateStateValidator) ValidateState(block *types.Block, state *state.StateDB, res *core.ProcessResult, stateless bool) error { return nil } diff --git a/eth/tracers/internal/tracetest/firehose/firehose_test.go b/eth/tracers/internal/tracetest/firehose/firehose_test.go index 5588696c50..422ab0e5e0 100644 --- a/eth/tracers/internal/tracetest/firehose/firehose_test.go +++ b/eth/tracers/internal/tracetest/firehose/firehose_test.go @@ -50,11 +50,11 @@ func TestFirehoseChain(t *testing.T) { GasLimit: context.GasLimit, BaseFee: context.BaseFee, ParentBeaconRoot: ptr(common.Hash{}), - }, nil, nil, nil, trie.NewStackTrie(nil)) + }, nil, nil, trie.NewStackTrie(nil)) blockchain.SetBlockValidatorAndProcessorForTesting( - ignoreValidateStateValidator{core.NewBlockValidator(genesis.Config, blockchain, blockchain.Engine())}, - core.NewStateProcessor(genesis.Config, blockchain, blockchain.Engine()), + ignoreValidateStateValidator{core.NewBlockValidator(genesis.Config, blockchain)}, + core.NewStateProcessor(genesis.Config, blockchain.HeaderChain()), ) n, err := blockchain.InsertChain(types.Blocks{block}) @@ -62,7 +62,7 @@ func TestFirehoseChain(t *testing.T) { require.Equal(t, 1, n) genesisLine, blockLines, unknownLines := readTracerFirehoseLines(t, tracer) - require.Len(t, unknownLines, 0, "Lines:\n%s", strings.Join(slicesMap(unknownLines, func(l unknwonLine) string { return "- '" + string(l) + "'" }), "\n")) + require.Len(t, unknownLines, 0, "Lines:\n%s", strings.Join(slicesMap(unknownLines, func(l unknownLine) string { return "- '" + string(l) + "'" }), "\n")) require.NotNil(t, genesisLine) blockLines.assertEquals(t, filepath.Join("testdata", t.Name()), firehoseBlockLineParams{"1", "8e6ee4b1054d94df1d8a51fb983447dc2e27a854590c3ac0061f994284be8150", "0", "845bad515694a416bab4b8d44e22cf97a8c894a8502110ab807883940e185ce0", "0", "1000000000"}, @@ -90,7 +90,7 @@ func TestFirehosePrestate(t *testing.T) { runPrestateBlock(t, filepath.Join(folder, "prestate.json"), tracers.NewTracingHooksFromFirehose(tracer)) genesisLine, blockLines, unknownLines := readTracerFirehoseLines(t, tracer) - require.Len(t, unknownLines, 0, "Lines:\n%s", strings.Join(slicesMap(unknownLines, func(l unknwonLine) string { return "- '" + string(l) + "'" }), "\n")) + require.Len(t, unknownLines, 0, "Lines:\n%s", strings.Join(slicesMap(unknownLines, func(l unknownLine) string { return "- '" + string(l) + "'" }), "\n")) require.NotNil(t, genesisLine) blockLines.assertOnlyBlockEquals(t, folder, 1) }) diff --git a/eth/tracers/internal/tracetest/firehose/generate-prestate/main.go b/eth/tracers/internal/tracetest/firehose/generate-prestate/main.go index 731cee5928..381f831a71 100644 --- a/eth/tracers/internal/tracetest/firehose/generate-prestate/main.go +++ b/eth/tracers/internal/tracetest/firehose/generate-prestate/main.go @@ -23,7 +23,6 @@ import ( var configByName = map[string]*params.ChainConfig{ "mainnet": params.MainnetChainConfig, - "goerli": params.GoerliChainConfig, "sepolia": params.SepoliaChainConfig, "holesky": params.HoleskyChainConfig, } diff --git a/eth/tracers/internal/tracetest/firehose/helpers_test.go b/eth/tracers/internal/tracetest/firehose/helpers_test.go index e346c01f6c..ee3cf653dc 100644 --- a/eth/tracers/internal/tracetest/firehose/helpers_test.go +++ b/eth/tracers/internal/tracetest/firehose/helpers_test.go @@ -100,9 +100,9 @@ type firehoseBlockLineParams struct { Time string } -type unknwonLine string +type unknownLine string -func readTracerFirehoseLines(t *testing.T, tracer *tracers.Firehose) (genesisLine *firehoseInitLine, blockLines firehoseBlockLines, unknownLines []unknwonLine) { +func readTracerFirehoseLines(t *testing.T, tracer *tracers.Firehose) (genesisLine *firehoseInitLine, blockLines firehoseBlockLines, unknownLines []unknownLine) { t.Helper() lines := bytes.Split(tracer.InternalTestingBuffer().Bytes(), []byte{'\n'}) @@ -113,7 +113,7 @@ func readTracerFirehoseLines(t *testing.T, tracer *tracers.Firehose) (genesisLin parts := bytes.Split(line, []byte{' '}) if len(parts) == 0 || string(parts[0]) != "FIRE" { - unknownLines = append(unknownLines, unknwonLine(line)) + unknownLines = append(unknownLines, unknownLine(line)) continue } @@ -147,7 +147,7 @@ func readTracerFirehoseLines(t *testing.T, tracer *tracers.Firehose) (genesisLin }) default: - unknownLines = append(unknownLines, unknwonLine(line)) + unknownLines = append(unknownLines, unknownLine(line)) } }