diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-20 14:37:41 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-20 14:37:41 +0300 |
| commit | 96355c79a38032ab4bd880b3b3ff4192ae709795 (patch) | |
| tree | 7a395706e3db680f6e695c8602501741eed6ad45 /internal/generate/codegen_test.go | |
| parent | f063e626a28339735da583142e5af864a60c2111 (diff) | |
task 27: add KindSleep and requested sleep metric
Diffstat (limited to 'internal/generate/codegen_test.go')
| -rw-r--r-- | internal/generate/codegen_test.go | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/internal/generate/codegen_test.go b/internal/generate/codegen_test.go index 3ec8d72..bc4ec3a 100644 --- a/internal/generate/codegen_test.go +++ b/internal/generate/codegen_test.go @@ -310,6 +310,25 @@ func TestGeneratePselect6HandlerCapturesTimeoutPointer(t *testing.T) { requireContains(t, output, "ev->timeout_ns = ts.tv_sec * 1000000000LL + ts.tv_nsec;") } +func TestGenerateSleepHandlerCapturesRequestedTimespec(t *testing.T) { + output := generateFromPair(t, FormatNanosleep, FormatExitNanosleep) + + requireContains(t, output, "struct sleep_event *ev") + requireContains(t, output, "ev->event_type = ENTER_SLEEP_EVENT;") + requireContains(t, output, "ev->requested_ns = -1;") + requireContains(t, output, "if (ctx->args[0] != 0) {") + requireContains(t, output, "ev->requested_ns = ts.tv_sec * 1000000000LL + ts.tv_nsec;") +} + +func TestGenerateClockNanosleepHandlerCapturesRequestedTimespec(t *testing.T) { + output := generateFromPair(t, FormatClockNanosleep, FormatExitClockNanosleep) + + requireContains(t, output, "struct sleep_event *ev") + requireContains(t, output, "ev->event_type = ENTER_SLEEP_EVENT;") + requireContains(t, output, "if (ctx->args[2] != 0) {") + requireContains(t, output, "ev->requested_ns = ts.tv_sec * 1000000000LL + ts.tv_nsec;") +} + func TestGenerateNameToHandleAtHandler(t *testing.T) { output := generateFromPair(t, FormatNameToHandleAt, FormatExitNameToHandleAt) @@ -425,6 +444,7 @@ func TestGenerateAllEventTypes(t *testing.T) { {KindEpollCtl, "ENTER_EPOLL_CTL_EVENT", "EXIT_EPOLL_CTL_EVENT"}, {KindPoll, "ENTER_POLL_EVENT", "EXIT_POLL_EVENT"}, {KindMem, "ENTER_MEM_EVENT", "EXIT_MEM_EVENT"}, + {KindSleep, "ENTER_SLEEP_EVENT", "EXIT_SLEEP_EVENT"}, } for _, tt := range tests { @@ -459,6 +479,7 @@ func TestEventStructNames(t *testing.T) { {KindEpollCtl, "epoll_ctl_event"}, {KindPoll, "poll_event"}, {KindMem, "mem_event"}, + {KindSleep, "sleep_event"}, } for _, tt := range tests { @@ -477,7 +498,7 @@ func TestEnterReject(t *testing.T) { t.Error("KindNone should be enter-rejected") } - accepted := []TracepointKind{KindFd, KindOpen, KindPathname, KindName, KindFcntl, KindNull, KindDup3, KindOpenByHandleAt, KindSocket, KindSocketpair, KindAccept, KindPipe, KindEventfd, KindEpollCtl, KindPoll, KindMem} + accepted := []TracepointKind{KindFd, KindOpen, KindPathname, KindName, KindFcntl, KindNull, KindDup3, KindOpenByHandleAt, KindSocket, KindSocketpair, KindAccept, KindPipe, KindEventfd, KindEpollCtl, KindPoll, KindMem, KindSleep} for _, k := range accepted { if isEnterRejected(k) { t.Errorf("kind %d should NOT be enter-rejected", k) |
