diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-06 16:53:34 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-06 16:53:34 +0200 |
| commit | ff85779d14a70825588a80cae33d234153196162 (patch) | |
| tree | 3f061af5dcaa4a4f219f899281abb189dcfe1e48 /internal | |
| parent | 3a2aa5f2a8b417b4aa4c9148b245d85fcc22a61c (diff) | |
refactor: rename flags.Flags to flags.Config (task 383)
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/bpfsetup.go | 4 | ||||
| -rw-r--r-- | internal/flags/flags.go | 30 | ||||
| -rw-r--r-- | internal/flags/flags_test.go | 2 | ||||
| -rw-r--r-- | internal/ior.go | 32 | ||||
| -rw-r--r-- | internal/ior_mode_test.go | 68 | ||||
| -rw-r--r-- | internal/tui/tui.go | 6 |
6 files changed, 71 insertions, 71 deletions
diff --git a/internal/bpfsetup.go b/internal/bpfsetup.go index 9791930..f8f2c60 100644 --- a/internal/bpfsetup.go +++ b/internal/bpfsetup.go @@ -9,7 +9,7 @@ import ( bpf "github.com/aquasecurity/libbpfgo" ) -func setBPFGlobals(cfg flags.Flags, bpfModule *bpf.Module) error { +func setBPFGlobals(cfg flags.Config, bpfModule *bpf.Module) error { // Ignore `ior` process itself from the filter. if err := bpfModule.InitGlobalVariable("IOR_PID_FILTER", uint32(os.Getpid())); err != nil { return fmt.Errorf("unable set IOR_PID_FILTER: %w", err) @@ -23,7 +23,7 @@ func setBPFGlobals(cfg flags.Flags, bpfModule *bpf.Module) error { return nil } -func resizeBPFMaps(cfg flags.Flags, bpfModule *bpf.Module) error { +func resizeBPFMaps(cfg flags.Config, bpfModule *bpf.Module) error { if err := resizeBPFMap(bpfModule, "event_map", uint32(cfg.EventMapSize)); err != nil { return fmt.Errorf("event_map: %w", err) } diff --git a/internal/flags/flags.go b/internal/flags/flags.go index 67842ab..f1285e8 100644 --- a/internal/flags/flags.go +++ b/internal/flags/flags.go @@ -15,7 +15,7 @@ import ( ) var ( - current atomic.Pointer[Flags] + current atomic.Pointer[Config] once sync.Once parseErr error ) @@ -25,7 +25,7 @@ func init() { current.Store(&defaults) } -type Flags struct { +type Config struct { PidFilter int TidFilter int EventMapSize int @@ -49,8 +49,8 @@ type Flags struct { } // NewFlags returns a configuration instance initialized with project defaults. -func NewFlags() Flags { - return Flags{ +func NewFlags() Config { + return Config{ PidFilter: -1, TidFilter: -1, EventMapSize: 4096 * 16, @@ -63,21 +63,21 @@ func NewFlags() Flags { } // GetPidFilter returns the active process filter. -func (f Flags) GetPidFilter() int { +func (f Config) GetPidFilter() int { return f.PidFilter } // GetTidFilter returns the active thread filter. -func (f Flags) GetTidFilter() int { +func (f Config) GetTidFilter() int { return f.TidFilter } // GetTUIExportEnable reports whether TUI CSV export is enabled. -func (f Flags) GetTUIExportEnable() bool { +func (f Config) GetTUIExportEnable() bool { return f.TUIExportEnable } -func (f Flags) clone() Flags { +func (f Config) clone() Config { out := f out.TracepointsToAttach = slices.Clone(f.TracepointsToAttach) out.TracepointsToExclude = slices.Clone(f.TracepointsToExclude) @@ -85,7 +85,7 @@ func (f Flags) clone() Flags { return out } -func Get() Flags { +func Get() Config { cfg := current.Load() if cfg == nil { return NewFlags() @@ -93,12 +93,12 @@ func Get() Flags { return cfg.clone() } -func setCurrent(cfg Flags) { +func setCurrent(cfg Config) { snapshot := cfg.clone() current.Store(&snapshot) } -func updateCurrent(update func(*Flags)) { +func updateCurrent(update func(*Config)) { for { old := current.Load() next := NewFlags() @@ -115,21 +115,21 @@ func updateCurrent(update func(*Flags)) { // SetPidFilter updates the active PID filter used for subsequent tracing runs. func SetPidFilter(pid int) { - updateCurrent(func(cfg *Flags) { + updateCurrent(func(cfg *Config) { cfg.PidFilter = pid }) } // SetTidFilter updates the active TID filter used for subsequent tracing runs. func SetTidFilter(tid int) { - updateCurrent(func(cfg *Flags) { + updateCurrent(func(cfg *Config) { cfg.TidFilter = tid }) } // SetTUIExportEnable toggles TUI snapshot export file writing. func SetTUIExportEnable(enabled bool) { - updateCurrent(func(cfg *Flags) { + updateCurrent(func(cfg *Config) { cfg.TUIExportEnable = enabled }) } @@ -221,7 +221,7 @@ func extractTracepointFlags(tracepoints string) (regexes []*regexp.Regexp, err e return regexes, nil } -func (flags Flags) ShouldIAttachTracepoint(tracepointName string) bool { +func (flags Config) ShouldIAttachTracepoint(tracepointName string) bool { for _, re := range flags.TracepointsToExclude { if re.MatchString(tracepointName) { return false diff --git a/internal/flags/flags_test.go b/internal/flags/flags_test.go index 08dd6a2..2469068 100644 --- a/internal/flags/flags_test.go +++ b/internal/flags/flags_test.go @@ -9,7 +9,7 @@ import ( "time" ) -func parseForTest(t *testing.T, args ...string) (Flags, error) { +func parseForTest(t *testing.T, args ...string) (Config, error) { t.Helper() oldCommandLine := flag.CommandLine diff --git a/internal/ior.go b/internal/ior.go index 5ebc360..7836ef2 100644 --- a/internal/ior.go +++ b/internal/ior.go @@ -64,7 +64,7 @@ func Run() error { return dispatchRun(flags.Get()) } -func dispatchRun(cfg flags.Flags) error { +func dispatchRun(cfg flags.Config) error { if err := validateRunConfig(cfg); err != nil { return err } @@ -80,7 +80,7 @@ func dispatchRun(cfg flags.Flags) error { return runTUIFn(cfg, tuiTraceStarterFromRunTrace(cfg, runTraceWithContextFn)) } -func validateRunConfig(cfg flags.Flags) error { +func validateRunConfig(cfg flags.Config) error { if cfg.TestFlames && cfg.PlainMode { return errors.New("--testflames cannot be combined with -plain") } @@ -93,7 +93,7 @@ func validateRunConfig(cfg flags.Flags) error { return nil } -func tuiTestFlamesStarter(cfg flags.Flags) tui.TraceStarter { +func tuiTestFlamesStarter(cfg flags.Config) tui.TraceStarter { return func(ctx context.Context) error { engine, streamBuf, liveTrie := buildTestFlamesRuntime(cfg) if bindings, ok := tui.RuntimeBindingsFromContext(ctx); ok { @@ -105,7 +105,7 @@ func tuiTestFlamesStarter(cfg flags.Flags) tui.TraceStarter { } } -func tuiTestLiveFlamesStarter(cfg flags.Flags) tui.TraceStarter { +func tuiTestLiveFlamesStarter(cfg flags.Config) tui.TraceStarter { return func(ctx context.Context) error { engine, streamBuf, liveTrie := buildTestLiveFlamesRuntime(ctx, cfg) if bindings, ok := tui.RuntimeBindingsFromContext(ctx); ok { @@ -117,7 +117,7 @@ func tuiTestLiveFlamesStarter(cfg flags.Flags) tui.TraceStarter { } } -func buildTestFlamesRuntime(cfg flags.Flags) (*statsengine.Engine, *eventstream.RingBuffer, *flamegraph.LiveTrie) { +func buildTestFlamesRuntime(cfg flags.Config) (*statsengine.Engine, *eventstream.RingBuffer, *flamegraph.LiveTrie) { engine := statsengine.NewEngine(64) streamBuf := eventstream.NewRingBuffer() liveTrie := flamegraph.NewLiveTrie(cfg.CollapsedFields, cfg.CountField) @@ -125,7 +125,7 @@ func buildTestFlamesRuntime(cfg flags.Flags) (*statsengine.Engine, *eventstream. return engine, streamBuf, liveTrie } -func buildTestLiveFlamesRuntime(ctx context.Context, cfg flags.Flags) (*statsengine.Engine, *eventstream.RingBuffer, *flamegraph.LiveTrie) { +func buildTestLiveFlamesRuntime(ctx context.Context, cfg flags.Config) (*statsengine.Engine, *eventstream.RingBuffer, *flamegraph.LiveTrie) { engine := statsengine.NewEngine(64) streamBuf := eventstream.NewRingBuffer() liveTrie := flamegraph.NewLiveTrie(cfg.CollapsedFields, cfg.CountField) @@ -160,13 +160,13 @@ func runSyntheticLiveFlames(ctx context.Context, liveTrie *flamegraph.LiveTrie, } } -func shouldRunTraceMode(cfg flags.Flags) bool { +func shouldRunTraceMode(cfg flags.Config) bool { return cfg.PlainMode } func tuiTraceStarterFromRunTrace( - baseCfg flags.Flags, - startTrace func(context.Context, flags.Flags, chan<- struct{}, func(*eventLoop)) error, + baseCfg flags.Config, + startTrace func(context.Context, flags.Config, chan<- struct{}, func(*eventLoop)) error, ) tui.TraceStarter { return func(ctx context.Context) error { bpf.SetLoggerCbs(bpf.Callbacks{ @@ -229,11 +229,11 @@ func tuiTraceStarterFromRunTrace( } } -func runTrace(cfg flags.Flags) error { +func runTrace(cfg flags.Config) error { return runTraceWithContext(context.Background(), cfg, nil, nil) } -func newEventLoopConfig(cfg flags.Flags) eventLoopConfig { +func newEventLoopConfig(cfg flags.Config) eventLoopConfig { fields := make([]string, len(cfg.CollapsedFields)) copy(fields, cfg.CollapsedFields) return eventLoopConfig{ @@ -263,7 +263,7 @@ func newLogger(verbose bool) func(...any) { return func(args ...any) { _, _ = fmt.Println(args...) } } -func setupBPFModule(parentCtx context.Context, cfg flags.Flags) (*bpf.Module, *probemanager.Manager, func(), error) { +func setupBPFModule(parentCtx context.Context, cfg flags.Config) (*bpf.Module, *probemanager.Manager, func(), error) { releaseBindings := func() {} bpfModule, err := bpf.NewModuleFromFile("ior.bpf.o") @@ -307,7 +307,7 @@ func setupEventChannel(bpfModule *bpf.Module) (chan []byte, error) { return ch, nil } -func setupTraceContext(parentCtx context.Context, cfg flags.Flags, logln func(...any)) (context.Context, context.CancelFunc, func()) { +func setupTraceContext(parentCtx context.Context, cfg flags.Config, logln func(...any)) (context.Context, context.CancelFunc, func()) { ctx := parentCtx cancel := func() {} if shouldAutoStopByDuration(cfg) { @@ -335,7 +335,7 @@ func setupTraceContext(parentCtx context.Context, cfg flags.Flags, logln func(.. return ctx, cancel, stopSignals } -func setupProfiling(ctx context.Context, cfg flags.Flags, started chan<- struct{}) (*profilingControl, error) { +func setupProfiling(ctx context.Context, cfg flags.Config, started chan<- struct{}) (*profilingControl, error) { control := &profilingControl{ done: make(chan struct{}), stopExecTrace: func() {}, @@ -443,7 +443,7 @@ func startTraceShutdownWatcher(ctx context.Context, verbose bool, el *eventLoop, }() } -func runTraceWithContext(parentCtx context.Context, cfg flags.Flags, started chan<- struct{}, configure func(*eventLoop)) error { +func runTraceWithContext(parentCtx context.Context, cfg flags.Config, started chan<- struct{}, configure func(*eventLoop)) error { if getEUID() != 0 { return errRootPrivilegesRequired } @@ -496,7 +496,7 @@ func signalTraceStarted(started chan<- struct{}) { close(started) } -func shouldAutoStopByDuration(cfg flags.Flags) bool { +func shouldAutoStopByDuration(cfg flags.Config) bool { return cfg.PlainMode } diff --git a/internal/ior_mode_test.go b/internal/ior_mode_test.go index 617e567..48b2c36 100644 --- a/internal/ior_mode_test.go +++ b/internal/ior_mode_test.go @@ -13,7 +13,7 @@ import ( ) func TestShouldRunTraceMode(t *testing.T) { - base := flags.Flags{} + base := flags.Config{} if shouldRunTraceMode(base) { t.Fatalf("expected default mode to use TUI") @@ -45,7 +45,7 @@ func TestShouldRunTraceMode(t *testing.T) { } func TestShouldAutoStopByDuration(t *testing.T) { - base := flags.Flags{} + base := flags.Config{} if shouldAutoStopByDuration(base) { t.Fatalf("expected default TUI mode not to auto-stop by duration") } @@ -78,24 +78,24 @@ func TestDispatchRunUsesTraceModeWhenRequested(t *testing.T) { traceCalled := false tuiCalled := false - runTraceFn = func(flags.Flags) error { + runTraceFn = func(flags.Config) error { traceCalled = true return nil } - runTUIFn = func(flags.Flags, tui.TraceStarter) error { + runTUIFn = func(flags.Config, tui.TraceStarter) error { tuiCalled = true return nil } - runTUITestFlamesFn = func(flags.Flags, tui.TraceStarter) error { + runTUITestFlamesFn = func(flags.Config, tui.TraceStarter) error { t.Fatalf("runTUITestFlamesFn should not be called in trace mode") return nil } - runTUITestLiveFlamesFn = func(flags.Flags, tui.TraceStarter) error { + runTUITestLiveFlamesFn = func(flags.Config, tui.TraceStarter) error { t.Fatalf("runTUITestLiveFlamesFn should not be called in trace mode") return nil } - cfg := flags.Flags{PlainMode: true} + cfg := flags.Config{PlainMode: true} if err := dispatchRun(cfg); err != nil { t.Fatalf("dispatchRun returned error: %v", err) } @@ -121,24 +121,24 @@ func TestDispatchRunUsesTUIWhenOnlyPprofEnabled(t *testing.T) { traceCalled := false tuiCalled := false - runTraceFn = func(flags.Flags) error { + runTraceFn = func(flags.Config) error { traceCalled = true return nil } - runTUIFn = func(flags.Flags, tui.TraceStarter) error { + runTUIFn = func(flags.Config, tui.TraceStarter) error { tuiCalled = true return nil } - runTUITestFlamesFn = func(flags.Flags, tui.TraceStarter) error { + runTUITestFlamesFn = func(flags.Config, tui.TraceStarter) error { t.Fatalf("runTUITestFlamesFn should not be called for regular TUI mode") return nil } - runTUITestLiveFlamesFn = func(flags.Flags, tui.TraceStarter) error { + runTUITestLiveFlamesFn = func(flags.Config, tui.TraceStarter) error { t.Fatalf("runTUITestLiveFlamesFn should not be called for regular TUI mode") return nil } - cfg := flags.Flags{PprofEnable: true} + cfg := flags.Config{PprofEnable: true} if err := dispatchRun(cfg); err != nil { t.Fatalf("dispatchRun returned error: %v", err) } @@ -163,7 +163,7 @@ func TestDispatchRunUsesTUIStarterWhenNotPlain(t *testing.T) { }() traceDone := make(chan struct{}, 1) - runTraceWithContextFn = func(_ context.Context, _ flags.Flags, started chan<- struct{}, configure func(*eventLoop)) error { + runTraceWithContextFn = func(_ context.Context, _ flags.Config, started chan<- struct{}, configure func(*eventLoop)) error { if configure != nil { configure(&eventLoop{}) } @@ -173,7 +173,7 @@ func TestDispatchRunUsesTUIStarterWhenNotPlain(t *testing.T) { } tuiCalled := false - runTUIFn = func(_ flags.Flags, starter tui.TraceStarter) error { + runTUIFn = func(_ flags.Config, starter tui.TraceStarter) error { tuiCalled = true if starter == nil { t.Fatalf("expected non-nil starter") @@ -183,16 +183,16 @@ func TestDispatchRunUsesTUIStarterWhenNotPlain(t *testing.T) { } return nil } - runTUITestFlamesFn = func(flags.Flags, tui.TraceStarter) error { + runTUITestFlamesFn = func(flags.Config, tui.TraceStarter) error { t.Fatalf("runTUITestFlamesFn should not be called for normal starter path") return nil } - runTUITestLiveFlamesFn = func(flags.Flags, tui.TraceStarter) error { + runTUITestLiveFlamesFn = func(flags.Config, tui.TraceStarter) error { t.Fatalf("runTUITestLiveFlamesFn should not be called for normal starter path") return nil } - cfg := flags.Flags{} + cfg := flags.Config{} if err := dispatchRun(cfg); err != nil { t.Fatalf("dispatchRun returned error: %v", err) } @@ -222,27 +222,27 @@ func TestDispatchRunUsesTestFlamesModeWhenRequested(t *testing.T) { traceCalled := false regularTUICalled := false testFlamesCalled := false - runTraceFn = func(flags.Flags) error { + runTraceFn = func(flags.Config) error { traceCalled = true return nil } - runTUIFn = func(flags.Flags, tui.TraceStarter) error { + runTUIFn = func(flags.Config, tui.TraceStarter) error { regularTUICalled = true return nil } - runTUITestFlamesFn = func(_ flags.Flags, starter tui.TraceStarter) error { + runTUITestFlamesFn = func(_ flags.Config, starter tui.TraceStarter) error { testFlamesCalled = true if starter == nil { t.Fatalf("expected non-nil starter for test flames mode") } return starter(context.Background()) } - runTUITestLiveFlamesFn = func(flags.Flags, tui.TraceStarter) error { + runTUITestLiveFlamesFn = func(flags.Config, tui.TraceStarter) error { t.Fatalf("runTUITestLiveFlamesFn should not be called for --testflames") return nil } - cfg := flags.Flags{TestFlames: true} + cfg := flags.Config{TestFlames: true} if err := dispatchRun(cfg); err != nil { t.Fatalf("dispatchRun returned error: %v", err) } @@ -272,19 +272,19 @@ func TestDispatchRunUsesTestLiveFlamesModeWhenRequested(t *testing.T) { traceCalled := false regularTUICalled := false testLiveFlamesCalled := false - runTraceFn = func(flags.Flags) error { + runTraceFn = func(flags.Config) error { traceCalled = true return nil } - runTUIFn = func(flags.Flags, tui.TraceStarter) error { + runTUIFn = func(flags.Config, tui.TraceStarter) error { regularTUICalled = true return nil } - runTUITestFlamesFn = func(flags.Flags, tui.TraceStarter) error { + runTUITestFlamesFn = func(flags.Config, tui.TraceStarter) error { t.Fatalf("runTUITestFlamesFn should not be called for --testliveflames") return nil } - runTUITestLiveFlamesFn = func(_ flags.Flags, starter tui.TraceStarter) error { + runTUITestLiveFlamesFn = func(_ flags.Config, starter tui.TraceStarter) error { testLiveFlamesCalled = true if starter == nil { t.Fatalf("expected non-nil starter for test live flames mode") @@ -292,7 +292,7 @@ func TestDispatchRunUsesTestLiveFlamesModeWhenRequested(t *testing.T) { return starter(context.Background()) } - cfg := flags.Flags{TestLiveFlames: true} + cfg := flags.Config{TestLiveFlames: true} if err := dispatchRun(cfg); err != nil { t.Fatalf("dispatchRun returned error: %v", err) } @@ -308,7 +308,7 @@ func TestDispatchRunUsesTestLiveFlamesModeWhenRequested(t *testing.T) { } func TestValidateRunConfigRejectsTestFlamesWithTraceFlags(t *testing.T) { - cfg := flags.Flags{TestFlames: true, PlainMode: true} + cfg := flags.Config{TestFlames: true, PlainMode: true} err := validateRunConfig(cfg) if err == nil { t.Fatalf("expected error for --testflames with trace-mode flags") @@ -319,7 +319,7 @@ func TestValidateRunConfigRejectsTestFlamesWithTraceFlags(t *testing.T) { } func TestValidateRunConfigRejectsTestLiveFlamesWithTraceFlags(t *testing.T) { - cfg := flags.Flags{TestLiveFlames: true, PlainMode: true} + cfg := flags.Config{TestLiveFlames: true, PlainMode: true} err := validateRunConfig(cfg) if err == nil { t.Fatalf("expected error for --testliveflames with trace-mode flags") @@ -330,7 +330,7 @@ func TestValidateRunConfigRejectsTestLiveFlamesWithTraceFlags(t *testing.T) { } func TestValidateRunConfigRejectsBothTestModes(t *testing.T) { - cfg := flags.Flags{TestFlames: true, TestLiveFlames: true} + cfg := flags.Config{TestFlames: true, TestLiveFlames: true} err := validateRunConfig(cfg) if err == nil { t.Fatalf("expected error when both test flame modes are enabled") @@ -418,7 +418,7 @@ func TestRunTraceWithContextRequiresRoot(t *testing.T) { func TestTuiTraceStarterFromRunTracePropagatesError(t *testing.T) { starter := tuiTraceStarterFromRunTrace( flags.NewFlags(), - func(context.Context, flags.Flags, chan<- struct{}, func(*eventLoop)) error { + func(context.Context, flags.Config, chan<- struct{}, func(*eventLoop)) error { return errors.New("startup failed") }, ) @@ -434,10 +434,10 @@ func TestTuiTraceStarterFromRunTraceUsesContextFilters(t *testing.T) { base.PidFilter = 11 base.TidFilter = 12 - var gotCfg flags.Flags + var gotCfg flags.Config starter := tuiTraceStarterFromRunTrace( base, - func(_ context.Context, cfg flags.Flags, started chan<- struct{}, _ func(*eventLoop)) error { + func(_ context.Context, cfg flags.Config, started chan<- struct{}, _ func(*eventLoop)) error { gotCfg = cfg close(started) return nil @@ -477,7 +477,7 @@ func TestProfilingFilesForMode(t *testing.T) { func TestTuiTraceStarterFromRunTraceRespectsCancel(t *testing.T) { starter := tuiTraceStarterFromRunTrace( flags.NewFlags(), - func(ctx context.Context, _ flags.Flags, _ chan<- struct{}, _ func(*eventLoop)) error { + func(ctx context.Context, _ flags.Config, _ chan<- struct{}, _ func(*eventLoop)) error { <-ctx.Done() return ctx.Err() }, diff --git a/internal/tui/tui.go b/internal/tui/tui.go index 774be12..d60ee4b 100644 --- a/internal/tui/tui.go +++ b/internal/tui/tui.go @@ -183,7 +183,7 @@ func RunWithTraceStarter(starter TraceStarter) error { } // RunWithTraceStarterConfig starts the TUI with explicit runtime flags. -func RunWithTraceStarterConfig(cfg flags.Flags, starter TraceStarter) error { +func RunWithTraceStarterConfig(cfg flags.Config, starter TraceStarter) error { model := newModelWithRuntimeConfig(cfg.PidFilter, cfg.PidFilter, cfg.TidFilter, cfg.TUIExportEnable, starter) program := tea.NewProgram(model) _, err := program.Run() @@ -197,7 +197,7 @@ func RunTestFlamesWithTraceStarter(starter TraceStarter) error { } // RunTestFlamesWithTraceStarterConfig starts test-flames mode with explicit runtime flags. -func RunTestFlamesWithTraceStarterConfig(cfg flags.Flags, starter TraceStarter) error { +func RunTestFlamesWithTraceStarterConfig(cfg flags.Config, starter TraceStarter) error { model := newModelWithRuntimeConfig(1, 1, -1, cfg.TUIExportEnable, starter) program := tea.NewProgram(model) _, err := program.Run() @@ -253,7 +253,7 @@ func NewModel(initialPID int, startTrace TraceStarter) Model { } // NewModelWithConfig creates the top-level TUI model with explicit runtime flags. -func NewModelWithConfig(cfg flags.Flags, initialPID int, startTrace TraceStarter) Model { +func NewModelWithConfig(cfg flags.Config, initialPID int, startTrace TraceStarter) Model { return newModelWithRuntimeConfig(initialPID, cfg.PidFilter, cfg.TidFilter, cfg.TUIExportEnable, startTrace) } |
