diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-03 13:10:18 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-03 13:10:18 +0200 |
| commit | 6907c5db1125cc385694f1c4283144f7d03b020e (patch) | |
| tree | 304347f8eac5adad6c1ad76ade503fe37113d774 /internal/flags | |
| parent | d80acf0c92ad4b436c23ac881ec24485297a80d8 (diff) | |
Add watch mode for dynamic flamegraph updates
Diffstat (limited to 'internal/flags')
| -rw-r--r-- | internal/flags/flags.go | 9 | ||||
| -rw-r--r-- | internal/flags/flags_test.go | 10 |
2 files changed, 16 insertions, 3 deletions
diff --git a/internal/flags/flags.go b/internal/flags/flags.go index bc1654b..b2d9dce 100644 --- a/internal/flags/flags.go +++ b/internal/flags/flags.go @@ -71,9 +71,10 @@ type Flags struct { TUIExportEnable bool // To convert ior data into native SVG format - IorDataFile string - CollapsedFields []string - CountField string + IorDataFile string + IorWatchInterval time.Duration + CollapsedFields []string + CountField string } func Get() Flags { @@ -130,6 +131,8 @@ func parse() error { flag.BoolVar(&singleton.TUIExportEnable, "tuiExport", true, "Enable writing TUI snapshot export files") flag.StringVar(&singleton.IorDataFile, "ior", "", "IOR data file to convert into native SVG flamegraph") + flag.DurationVar(&singleton.IorWatchInterval, "iorWatchInterval", 0, + "In -ior mode, poll input file for changes and regenerate outputs; also enables auto-reloading viewer") fields := flag.String("fields", "", fmt.Sprintf("Comma separated list of fields to collapse, valid are: %v", validCollapsedFields)) flag.StringVar(&singleton.CountField, "count", "count", diff --git a/internal/flags/flags_test.go b/internal/flags/flags_test.go index 11414d8..81d01ad 100644 --- a/internal/flags/flags_test.go +++ b/internal/flags/flags_test.go @@ -114,6 +114,16 @@ func TestParseFlamegraphJSONFlag(t *testing.T) { } } +func TestParseIorWatchIntervalFlag(t *testing.T) { + cfg, err := parseForTest(t, "-iorWatchInterval", "2s") + if err != nil { + t.Fatalf("parse returned error: %v", err) + } + if cfg.IorWatchInterval != 2*time.Second { + t.Fatalf("ior watch interval = %v, want %v", cfg.IorWatchInterval, 2*time.Second) + } +} + func TestParseDefaultCollapsedFieldsOrder(t *testing.T) { cfg, err := parseForTest(t) if err != nil { |
