diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-22 18:16:59 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-22 18:16:59 +0200 |
| commit | 40ce5bc1d9da31b49f42e488d2ab5633e7c6a3fb (patch) | |
| tree | 33c6197180648d80f0e71b14803e102522059be5 /internal/eventloop_test.go | |
| parent | 3ec3c117bb280a377fea1a3eef84a70e2a3d4150 (diff) | |
Implement sync_file_range coverage and document mage world bootstrap
Diffstat (limited to 'internal/eventloop_test.go')
| -rw-r--r-- | internal/eventloop_test.go | 70 |
1 files changed, 63 insertions, 7 deletions
diff --git a/internal/eventloop_test.go b/internal/eventloop_test.go index 60047fe..e6e3a4a 100644 --- a/internal/eventloop_test.go +++ b/internal/eventloop_test.go @@ -30,13 +30,14 @@ func TestEventloop(t *testing.T) { "OpenEventTest2": makeOpenEventTestData2(t), "OpenEventTest3": makeOpenEventTestData3(t), // FdEvent tests - "ReadEventTest": makeReadEventTestData(t), - "WriteEventTest": makeWriteEventTestData(t), - "CloseEventTest": makeCloseEventTestData(t), - "CloseRangeEventTest": makeCloseRangeEventTestData(t), - "CloseRangeFailureTest": makeCloseRangeFailureTestData(t), - "FsyncEventTest": makeFsyncEventTestData(t), - "FtruncateEventTest": makeFtruncateEventTestData(t), + "ReadEventTest": makeReadEventTestData(t), + "WriteEventTest": makeWriteEventTestData(t), + "CloseEventTest": makeCloseEventTestData(t), + "CloseRangeEventTest": makeCloseRangeEventTestData(t), + "CloseRangeFailureTest": makeCloseRangeFailureTestData(t), + "FsyncEventTest": makeFsyncEventTestData(t), + "SyncFileRangeEventTest": makeSyncFileRangeEventTestData(t), + "FtruncateEventTest": makeFtruncateEventTestData(t), // PathEvent tests "MkdirEventTest": makeMkdirEventTestData(t), "UnlinkEventTest": makeUnlinkEventTestData(t), @@ -587,6 +588,61 @@ func makeFsyncEventTestData(t *testing.T) (td testData) { return td } +func makeSyncFileRangeEventTestData(t *testing.T) (td testData) { + fd := int32(47) + filename := "sync_file_range_test.txt" + + openEnterEv, _ := makeEnterOpenEvent(t, defaulTime, defaultPid, defaultTid) + copy(openEnterEv.Filename[:], filename) + openEnterBytes, err := openEnterEv.Bytes() + if err != nil { + t.Fatal(err) + } + td.rawTracepoints = append(td.rawTracepoints, openEnterBytes) + + openExitEv, _ := makeExitOpenEvent(t, defaulTime+100, defaultPid, defaultTid) + openExitEv.Ret = int64(fd) + openExitBytes, err := openExitEv.Bytes() + if err != nil { + t.Fatal(err) + } + td.rawTracepoints = append(td.rawTracepoints, openExitBytes) + + enterEv, enterEvBytes := makeEnterFdEvent(t, defaulTime+200, defaultPid, defaultTid, fd, types.SYS_ENTER_SYNC_FILE_RANGE) + td.rawTracepoints = append(td.rawTracepoints, enterEvBytes) + + exitEv, exitEvBytes := makeExitRetEvent(t, defaulTime+300, defaultPid, defaultTid, types.SYS_EXIT_SYNC_FILE_RANGE, 0) + td.rawTracepoints = append(td.rawTracepoints, exitEvBytes) + + td.validates = append(td.validates, func(t *testing.T, el *eventLoop, ep *event.Pair) { + if !openEnterEv.Equals(ep.EnterEv) { + t.Errorf("Expected '%v' but got '%v'", openEnterEv, ep.EnterEv) + } + if !openExitEv.Equals(ep.ExitEv) { + t.Errorf("Expected '%v' but got '%v'", openExitEv, ep.ExitEv) + } + verifyFileDescriptor(t, el, fd, filename) + }) + + td.validates = append(td.validates, func(t *testing.T, el *eventLoop, ep *event.Pair) { + if !enterEv.Equals(ep.EnterEv) { + t.Errorf("Expected '%v' but got '%v'", enterEv, ep.EnterEv) + } + if !exitEv.Equals(ep.ExitEv) { + t.Errorf("Expected '%v' but got '%v'", exitEv, ep.ExitEv) + } + verifyFileDescriptor(t, el, fd, filename) + if ep.File == nil { + t.Fatalf("Expected file metadata for sync_file_range event") + } + if ep.File.Name() != filename { + t.Errorf("Expected sync_file_range file name '%s' but got '%s'", filename, ep.File.Name()) + } + }) + + return td +} + func makeFtruncateEventTestData(t *testing.T) (td testData) { fd := int32(46) enterEv, enterEvBytes := makeEnterFdEvent(t, defaulTime, defaultPid, defaultTid, fd, types.SYS_ENTER_FTRUNCATE) |
