diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-21 08:16:08 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-21 08:16:08 +0300 |
| commit | be8735fe701f7398c19c17c394f4827614eab875 (patch) | |
| tree | aba59890563edb6e03f2eb82fee5d89b49fa2c81 /internal/probemanager | |
| parent | 3a5706f21d30258577a5934efb93c400dad723db (diff) | |
p7 add attach-time trace dimension gating
Diffstat (limited to 'internal/probemanager')
| -rw-r--r-- | internal/probemanager/manager_test.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/probemanager/manager_test.go b/internal/probemanager/manager_test.go index b75a579..ee436b9 100644 --- a/internal/probemanager/manager_test.go +++ b/internal/probemanager/manager_test.go @@ -2,6 +2,7 @@ package probemanager import ( "errors" + "ior/internal/tracepoints" "strings" "sync" "testing" @@ -127,6 +128,46 @@ func TestManagerAttachAllToggleAndCounts(t *testing.T) { } } +func TestManagerAttachAllWithDimensionSelectorAttachesOnlyEnabledSyscalls(t *testing.T) { + attacher := &fakeAttacher{ + programs: map[string]*fakeProgram{ + "handle_sys_enter_openat": {}, + "handle_sys_exit_openat": {}, + "handle_sys_enter_write": {}, + "handle_sys_exit_write": {}, + }, + errs: map[string]error{}, + } + mgr := NewManager(attacher) + selector, err := tracepoints.ParseSelectorWithDimensions("", "", tracepoints.DimensionSelectorConfig{ + TraceSyscalls: "openat", + }) + if err != nil { + t.Fatalf("build selector: %v", err) + } + + err = mgr.AttachAll(selector.ShouldAttach, []string{ + "sys_enter_openat", "sys_exit_openat", + "sys_enter_write", "sys_exit_write", + }, nil) + if err != nil { + t.Fatalf("AttachAll returned error: %v", err) + } + + if got := attacher.programs["handle_sys_enter_openat"].attachCalls(); got != 1 { + t.Fatalf("openat enter attach calls = %d, want 1", got) + } + if got := attacher.programs["handle_sys_exit_openat"].attachCalls(); got != 1 { + t.Fatalf("openat exit attach calls = %d, want 1", got) + } + if got := attacher.programs["handle_sys_enter_write"].attachCalls(); got != 0 { + t.Fatalf("write enter attach calls = %d, want 0", got) + } + if got := attacher.programs["handle_sys_exit_write"].attachCalls(); got != 0 { + t.Fatalf("write exit attach calls = %d, want 0", got) + } +} + func TestManagerAttachSerializesConcurrentCalls(t *testing.T) { enterBlocked := make(chan struct{}) releaseEnter := make(chan struct{}) |
