diff options
Diffstat (limited to 'internal/probemanager/manager_test.go')
| -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{}) |
