summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-02-25 21:49:18 +0200
committerPaul Buetow <paul@buetow.org>2026-02-25 21:49:18 +0200
commit82481653218903aa0aba51af98788afa2a3e30de (patch)
tree7d450f4b5bde7490507131eb1449c6577b038912
parentc35a54243b2333c4f873af4c23efc8dc9e15f043 (diff)
Test probe manager picks up newly added tracepoints
-rw-r--r--internal/probemanager/manager_test.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/internal/probemanager/manager_test.go b/internal/probemanager/manager_test.go
index 44dc259..f610ea3 100644
--- a/internal/probemanager/manager_test.go
+++ b/internal/probemanager/manager_test.go
@@ -151,3 +151,35 @@ func TestManagerAttachAllReturnsProgramError(t *testing.T) {
t.Fatalf("expected state to capture attach error, got %+v", states)
}
}
+
+func TestManagerAttachAllPicksUpNewTracepointsOnLaterCall(t *testing.T) {
+ attacher := &fakeAttacher{
+ programs: map[string]*fakeProgram{
+ "handle_sys_enter_read": {},
+ "handle_sys_exit_read": {},
+ "handle_sys_enter_write": {},
+ "handle_sys_exit_write": {},
+ },
+ errs: map[string]error{},
+ }
+ mgr := NewManager(attacher)
+
+ if err := mgr.AttachAll(nil, []string{"sys_enter_read", "sys_exit_read"}); err != nil {
+ t.Fatalf("AttachAll(read) returned error: %v", err)
+ }
+ states := mgr.States()
+ if len(states) != 1 || states[0].Syscall != "read" {
+ t.Fatalf("expected only read after first call, got %+v", states)
+ }
+
+ if err := mgr.AttachAll(nil, []string{"sys_enter_read", "sys_exit_read", "sys_enter_write", "sys_exit_write"}); err != nil {
+ t.Fatalf("AttachAll(read+write) returned error: %v", err)
+ }
+ states = mgr.States()
+ if len(states) != 2 {
+ t.Fatalf("expected new syscall to appear after second call, got %+v", states)
+ }
+ if states[0].Syscall != "read" || states[1].Syscall != "write" {
+ t.Fatalf("unexpected syscall ordering/content: %+v", states)
+ }
+}