summaryrefslogtreecommitdiff
path: root/internal/eventloop_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-02-22 18:16:59 +0200
committerPaul Buetow <paul@buetow.org>2026-02-22 18:16:59 +0200
commit40ce5bc1d9da31b49f42e488d2ab5633e7c6a3fb (patch)
tree33c6197180648d80f0e71b14803e102522059be5 /internal/eventloop_test.go
parent3ec3c117bb280a377fea1a3eef84a70e2a3d4150 (diff)
Implement sync_file_range coverage and document mage world bootstrap
Diffstat (limited to 'internal/eventloop_test.go')
-rw-r--r--internal/eventloop_test.go70
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)