optimism
optimism copied to clipboard
op-node: Events diagrams generation
Description
This implements:
- a struct-collecting
event.Tracer, to gather data for diagram generation - a sequence-diagram generating tracer (based on mermaid js)
- a timing-diagram generating tracer (custom SVG generation)
The outputs are .html files, with SVG content, ready to open in the browser.
PR depends on #11097
Example usage, in an action test:
// add logging
sequencer.eventSys.AddTracer(event.NewLogTracer(log, slog.LevelInfo))
// add tracer, write at end of test
seqTr := event.NewTimingTracer()
sequencer.eventSys.AddTracer(seqTr)
defer func() {
require.NoError(t, os.WriteFile("custom_trace.html", []byte(seqTr.Output()), 0755))
t.Log("written trace file")
}()
Below diagrams visualize execution of TestEIP4844DataAvailability (action test)
Sequence diagram output example (incomplete screenshot, long scrolling page):
Timing diagram output example:
Tests
No tests, these are just nice-to-have debug tools.
Metadata
Fix #11098
This is sick