diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-08 11:24:31 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-08 11:24:31 +0200 |
| commit | 9cbf9ec8e9eac92431b9a742c1b625888cb69dfa (patch) | |
| tree | 1bd9b8c24faecaf65a9563dd922afcfacddaa4ce /internal/eventloop_test.go | |
| parent | 742ef1480ee52558b77e1be1671e17065af36a1d (diff) | |
eventloop: remove gosched by snapshotting emitted fd state
Diffstat (limited to 'internal/eventloop_test.go')
| -rw-r--r-- | internal/eventloop_test.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/internal/eventloop_test.go b/internal/eventloop_test.go index 32dddd4..3a4ad38 100644 --- a/internal/eventloop_test.go +++ b/internal/eventloop_test.go @@ -203,6 +203,31 @@ func TestHandleFdExitCloseRangeClearsProcFdCacheRange(t *testing.T) { verifyProcFdCached(t, el, pid+1, 20) } +func TestFreezePairForEmissionCopiesFdFile(t *testing.T) { + el := mustNewEventLoop(t, eventLoopConfig{}) + fdFile := file.NewFd(9, "/tmp/x", syscall.O_RDONLY) + ep := event.NewPair(&types.NullEvent{}) + ep.File = fdFile + + el.freezePairForEmission(ep) + + emitted, ok := ep.File.(*file.FdFile) + if !ok { + t.Fatalf("expected emitted file to be *file.FdFile, got %T", ep.File) + } + if emitted == fdFile { + t.Fatalf("expected emitted fd file to be detached copy") + } + if emitted.Flags() != file.Flags(syscall.O_RDONLY) { + t.Fatalf("expected copied flags %v, got %v", syscall.O_RDONLY, emitted.Flags()) + } + + fdFile.SetFlags(syscall.O_WRONLY) + if emitted.Flags() != file.Flags(syscall.O_RDONLY) { + t.Fatalf("expected emitted copy flags unchanged after source mutation") + } +} + // Tests a simple enter/exit pair of tracepoints. func makeOpenEventTestData1(t *testing.T) (td testData) { enterEv, enterEvBytes := makeEnterOpenEvent(t, defaulTime, defaultPid, defaultTid) |
