summaryrefslogtreecommitdiff
path: root/internal/probemanager/manager_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-02-25 21:57:30 +0200
committerPaul Buetow <paul@buetow.org>2026-02-25 21:57:30 +0200
commit67e10f34c92e93343adbd690b3b21e455e863bd3 (patch)
tree5de8f76cea00ea7c70703cb215cb5eb12fd17fa3 /internal/probemanager/manager_test.go
parent92dbc37ed6d4b1758fae3fa7ae02dc58b8f81d4d (diff)
Fix probes bulk toggles and stabilize modal row rendering
Diffstat (limited to 'internal/probemanager/manager_test.go')
-rw-r--r--internal/probemanager/manager_test.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/internal/probemanager/manager_test.go b/internal/probemanager/manager_test.go
index f610ea3..1fcce6d 100644
--- a/internal/probemanager/manager_test.go
+++ b/internal/probemanager/manager_test.go
@@ -114,6 +114,37 @@ func TestManagerDetachDestroysLinks(t *testing.T) {
}
}
+func TestManagerDetachFailureKeepsActiveStateForUndetachedLink(t *testing.T) {
+ enter := &fakeLink{err: errors.New("destroy failed")}
+ exit := &fakeLink{}
+ attacher := &fakeAttacher{
+ programs: map[string]*fakeProgram{
+ "handle_sys_enter_close": {link: enter},
+ "handle_sys_exit_close": {link: exit},
+ },
+ errs: map[string]error{},
+ }
+ mgr := NewManager(attacher)
+ if err := mgr.AttachAll(nil, []string{"sys_enter_close", "sys_exit_close"}); err != nil {
+ t.Fatalf("AttachAll returned error: %v", err)
+ }
+
+ err := mgr.Detach("close")
+ if err == nil {
+ t.Fatalf("expected detach error")
+ }
+ states := mgr.States()
+ if len(states) != 1 {
+ t.Fatalf("expected one state, got %+v", states)
+ }
+ if !states[0].Active {
+ t.Fatalf("expected probe to remain active when one link failed to detach")
+ }
+ if states[0].Error == "" {
+ t.Fatalf("expected error to be recorded after detach failure")
+ }
+}
+
func TestManagerClosePreventsFurtherOperations(t *testing.T) {
attacher := &fakeAttacher{
programs: map[string]*fakeProgram{