cmd/evm: make evm blocktest output logs if so instructed (#27396)
* cmd/evm: make evm blocktest output logs if so instructed * Apply suggestions from code review Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de> --------- Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
This commit is contained in:
parent
0e5d2c7c53
commit
8eb0c2de76
@ -22,6 +22,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/core/vm"
|
||||||
|
"github.com/ethereum/go-ethereum/eth/tracers/logger"
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
"github.com/ethereum/go-ethereum/tests"
|
"github.com/ethereum/go-ethereum/tests"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
@ -42,7 +44,16 @@ func blockTestCmd(ctx *cli.Context) error {
|
|||||||
glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false)))
|
glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false)))
|
||||||
glogger.Verbosity(log.Lvl(ctx.Int(VerbosityFlag.Name)))
|
glogger.Verbosity(log.Lvl(ctx.Int(VerbosityFlag.Name)))
|
||||||
log.Root().SetHandler(glogger)
|
log.Root().SetHandler(glogger)
|
||||||
|
var tracer vm.EVMLogger
|
||||||
|
// Configure the EVM logger
|
||||||
|
if ctx.Bool(MachineFlag.Name) {
|
||||||
|
tracer = logger.NewJSONLogger(&logger.Config{
|
||||||
|
EnableMemory: !ctx.Bool(DisableMemoryFlag.Name),
|
||||||
|
DisableStack: ctx.Bool(DisableStackFlag.Name),
|
||||||
|
DisableStorage: ctx.Bool(DisableStorageFlag.Name),
|
||||||
|
EnableReturnData: !ctx.Bool(DisableReturnDataFlag.Name),
|
||||||
|
}, os.Stderr)
|
||||||
|
}
|
||||||
// Load the test content from the input file
|
// Load the test content from the input file
|
||||||
src, err := os.ReadFile(ctx.Args().First())
|
src, err := os.ReadFile(ctx.Args().First())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -53,7 +64,7 @@ func blockTestCmd(ctx *cli.Context) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for i, test := range tests {
|
for i, test := range tests {
|
||||||
if err := test.Run(false); err != nil {
|
if err := test.Run(false, tracer); err != nil {
|
||||||
return fmt.Errorf("test %v: %w", i, err)
|
return fmt.Errorf("test %v: %w", i, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,10 +48,10 @@ func TestBlockchain(t *testing.T) {
|
|||||||
bt.skipLoad(`.*randomStatetest94.json.*`)
|
bt.skipLoad(`.*randomStatetest94.json.*`)
|
||||||
|
|
||||||
bt.walk(t, blockTestDir, func(t *testing.T, name string, test *BlockTest) {
|
bt.walk(t, blockTestDir, func(t *testing.T, name string, test *BlockTest) {
|
||||||
if err := bt.checkFailure(t, test.Run(false)); err != nil {
|
if err := bt.checkFailure(t, test.Run(false, nil)); err != nil {
|
||||||
t.Errorf("test without snapshotter failed: %v", err)
|
t.Errorf("test without snapshotter failed: %v", err)
|
||||||
}
|
}
|
||||||
if err := bt.checkFailure(t, test.Run(true)); err != nil {
|
if err := bt.checkFailure(t, test.Run(true, nil)); err != nil {
|
||||||
t.Errorf("test with snapshotter failed: %v", err)
|
t.Errorf("test with snapshotter failed: %v", err)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -100,7 +100,7 @@ type btHeaderMarshaling struct {
|
|||||||
BaseFeePerGas *math.HexOrDecimal256
|
BaseFeePerGas *math.HexOrDecimal256
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *BlockTest) Run(snapshotter bool) error {
|
func (t *BlockTest) Run(snapshotter bool, tracer vm.EVMLogger) error {
|
||||||
config, ok := Forks[t.json.Network]
|
config, ok := Forks[t.json.Network]
|
||||||
if !ok {
|
if !ok {
|
||||||
return UnsupportedForkError{t.json.Network}
|
return UnsupportedForkError{t.json.Network}
|
||||||
@ -124,7 +124,9 @@ func (t *BlockTest) Run(snapshotter bool) error {
|
|||||||
cache.SnapshotLimit = 1
|
cache.SnapshotLimit = 1
|
||||||
cache.SnapshotWait = true
|
cache.SnapshotWait = true
|
||||||
}
|
}
|
||||||
chain, err := core.NewBlockChain(db, cache, gspec, nil, engine, vm.Config{}, nil, nil)
|
chain, err := core.NewBlockChain(db, cache, gspec, nil, engine, vm.Config{
|
||||||
|
Tracer: tracer,
|
||||||
|
}, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user