optimism icon indicating copy to clipboard operation
optimism copied to clipboard

op-node: Events diagrams generation

Open protolambda opened this issue 1 year ago • 1 comments

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):

image

Timing diagram output example:

image

Tests

No tests, these are just nice-to-have debug tools.

Metadata

Fix #11098

protolambda avatar Jul 08 '24 20:07 protolambda

This is sick

tynes avatar Jul 09 '24 09:07 tynes