From 8da473aed2c3e901615294df398b26db5aea6032 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 9 May 2026 10:53:18 +0300 Subject: add auto-reset timer for dashboard aggregates Live flamegraph trie and stats engine grow unboundedly during long traces. Add a periodic auto-reset (same effect as the 'r' key) so they stay bounded. - New CLI flag -resetTimer=30s (default 30s, 0 disables). - Hotkey I cycles the cadence: off -> 15s -> 30s -> 60s -> 5m -> off. Custom intervals (e.g. -resetTimer=47s) advance to the first preset greater than the current value, then wrap to off. - autoResetTickMsg carries a generation counter so changing the cadence drops in-flight ticks scheduled under the previous interval. - Dashboard chrome shows 'auto-reset: 30s' or 'auto-reset: off'. --- internal/flags/flags_test.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'internal/flags/flags_test.go') diff --git a/internal/flags/flags_test.go b/internal/flags/flags_test.go index f5274d8..77c167c 100644 --- a/internal/flags/flags_test.go +++ b/internal/flags/flags_test.go @@ -171,3 +171,43 @@ func TestParseInvalidTracepointRegexReturnsError(t *testing.T) { t.Fatalf("unexpected error: %v", err) } } + +func TestParseResetTimerDefault(t *testing.T) { + cfg, err := parseForTest(t) + if err != nil { + t.Fatalf("parse returned error: %v", err) + } + if cfg.ResetTimer != DefaultResetTimer { + t.Fatalf("default reset timer = %v, want %v", cfg.ResetTimer, DefaultResetTimer) + } +} + +func TestParseResetTimerOverride(t *testing.T) { + cfg, err := parseForTest(t, "-resetTimer", "45s") + if err != nil { + t.Fatalf("parse returned error: %v", err) + } + if cfg.ResetTimer != 45*time.Second { + t.Fatalf("reset timer = %v, want 45s", cfg.ResetTimer) + } +} + +func TestParseResetTimerZeroDisables(t *testing.T) { + cfg, err := parseForTest(t, "-resetTimer", "0") + if err != nil { + t.Fatalf("parse returned error: %v", err) + } + if cfg.ResetTimer != 0 { + t.Fatalf("reset timer = %v, want 0 (disabled)", cfg.ResetTimer) + } +} + +func TestParseResetTimerNegativeReturnsError(t *testing.T) { + _, err := parseForTest(t, "-resetTimer", "-5s") + if err == nil { + t.Fatalf("expected parse error for negative reset timer") + } + if !strings.Contains(err.Error(), "invalid resetTimer") { + t.Fatalf("unexpected error: %v", err) + } +} -- cgit v1.2.3